백엔드 웹 개발 노트6.2 - 매핑
1. 요청 매핑 1.1 기본 매핑 기본적인 형태의 매핑 방식이다. 저번에 작성한 양식이랑 같다. package hello.springmvc.basic.reqeustmapping; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind...
1. 요청 매핑 1.1 기본 매핑 기본적인 형태의 매핑 방식이다. 저번에 작성한 양식이랑 같다. package hello.springmvc.basic.reqeustmapping; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind...
로깅 로그를 왜 사용할까? 보통 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 정보를 출력하지 않고 로깅 라이브러리를 사용해서 로그를 출력한다. 스프링 부트 로깅 라이브러리는 기본으로 SLF4J, Logback이라는 로깅 라이브러리를 사용한다. 로그 라이브러리는 Logback, Log4J, Log4J2 등 ...
스프링MVC 스타트 스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작한다. 매우 유연하고 실용적임. 옛날에는 스프링 프레임워크가 MVC부분이 약해서 스프링을 사용하더라도 MVC 웹 기술은 스트럿츠 같은 다른 프레임워크를 사용했다고 한다. 하지만, @RequestMapping 기반의 애노테이션 컨트롤러가 등장하면서 MVC도 스프링의 완승으로 끝...
뷰 리졸버 전에 작성한 OldController를 View를 조회할 수 있게 수정할 것이다. System.out.println("OldController.handlerRequest"); return new ModelAndView("new-form"); 리턴값만 수정해주었다. 다시 실행해보면 ‘Whitelabel Error Page’가 뜨면서 콘...
핸들러 매핑과 핸들러 어댑터 과거에 주로 사용했던 스프링이 제공하는 간단한 컨트롤러로 핸들러 매핑과 어댑터를 이해해보도록 하겠다. 과거 버전 스프링 컨트롤러 코드를 하나 작성하자. package hello.servlet.web.Controller; import org.springframework.stereotype.Component; impo...
스프링 MVC 구조 보면은 여태까지 작성한 구조와 비슷하다. 다음과 같이 매칭된다. FrontController -> DispatcherServlet handlerMappingMap -> HandlerMapping MyHandlerAdapter -> HandlerAdapter Modelview -> Mod...
Adapter 패턴 구현 v3 Controller를 다형성을 이용해서 다양한 Controller를 호출할 수 있게 하자. 출처 김영한 선생님 강의 핸들러 어댑터 : 중간에 어댑터 역할을 하는 어댑터이다. 다양한 종류의 컨트롤러를 호출할 수 있게 한다. 핸들러 : 컨트롤러의 이름을 더 넓은 범위인 핸들러로 변경. 먼저 어댑터...
프론트 컨트롤러 업그레이드 단순한 아이디어를 적용할 것이다. Controller인터페이스의 process함수의 리턴값을 String으로 바꾸어 ViewName을 리턴하고, 파라미터로 Map<String,Object> model을 넘길 것이다. 1. Controller Interface //기존 코드 ModelView processs...
Model 추가 v3 2가지를 바꿀 것이다. 컨트롤러 입장에서는 HttpServletRequest, HttpServletResponse가 필요 없을 수 있다. 그렇기에 Model이라는 객체를 만들어서 반환할 것이다. 뷰 이름 중복을 제거할 것이다. 앞에서 언급했던 ‘WEB-INF/views’라는 접두사와 ‘.jsp’...
1. View 분리 - v2 기존 코드를 보면 뷰를 이렇게 출력해줬다. String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request,response...