목록Spring/MVC (10)
Hyunebee
요청 매핑 @RestController vs @Controller @Controller는 반환 값이 String이면 View로 인식된다. 그래서 View를 찾고 View를 렌더링 해준다. @RestController는 반환 값으로 뷰를 찾는 것이 아니라, HTTP 메시지 바디에 바로 넣어준다. 이렇게 메소드를 지정하지 않으면 get,post,delete,put,patch 모두 사용가능하다. @RequestMapping("/hello-basic") public String helloBasic() { logger.info("hello"); return "ok"; } 이렇게 method를 제한해줄 수 있다. or @RequestMapping > @GetMapping or @PostMapping등으로 변경 가능..
로깅 라이브러리 SLF4J - http://www.slf4j.org Logback - http://logback.qos.ch Logback Home Logback Project Logback is intended as a successor to the popular log4j project, picking up where log4j 1.x leaves off. Logback's architecture is quite generic so as to apply under different circumstances. At present time, logback is divided into three mod logback.qos.ch 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사..
옛날 방식의 MVC 구현(1) @Component("/springmvc/old-controller") public class OldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("OldController.handleRequest"); return new ModelAndView("new-form"); } } Controller를 구현해준다. 이때 Controller(interface)는 @Controller와는 다른것 이다. 이 컨트롤러가 호출..
frontController -> SpringMVC 1.FrontController -> Dispatcher Servlet 2.handlerMappingMap -> handlerMapping 3.ModelView -> ModelandView 4.MyHandlerAdapter -> HandlerAdapter 5.MyvView -> View Spring MVC도 FrontController패턴으로 구성되었다. Spring에서 FrontController를 담다아는게 Dispatcher Servlet이다. Dispatcher Servlet은 HttpServlet를 상속받고 있고 Servlet으로 동작한다. DispatcherServlet > FrameworkServlet > HttpServletBean >Ht..
ControllerV4(Interface) : String반환 더이상 ModelView를 반환하지 않아도 괜찮다. MemberFormControllerV4(implements) : ControllerV4의 구현체 이제는 ModelView를 반환하지 않고 String으로 논리 이름만 반환해준다. return "new-form" MemberSaveControllerV4(implements) : ControllerV4의 구현체 더이상 ModelView를 만들어 모델을 가져와서 넣어줄 필요가 없다. MemberListControllerV4(implements) : ControllerV4의 구현체 더이상 ModelView를 만들어 모델을 가져와서 넣어줄 필요가 없다. FrontControllerServletV3 ..
Servlet 종속성 제거 이제는 요청 파라미터 정보는 자바의 Map을 사용해서 넘긴다. 이전에는 setAttribute를 모델처럼 사용했다 별도의 Model객체를 만들어서 사용한다. 뷰이름도 중복을 제거한다. /WEB-INF/views/new-form.jsp -> new-form 이렇게 사용할 것이다. ModelView 지금까지 컨트롤러에서 서블릿에 종속적인 HttpServletRequest를 사용했다. 그리고 Model도 request.setAttribute() 를 통해 데이터를 저장하고 뷰에 전달했다. 서블릿의 종속성을 제거하기 위해 Model을 직접 만들고, 추가로 View 이름까지 전달하는 객체를 만들어보자 ModelView는 viewName을 flied로 가지고있고 HashMap을 통해 mod..
View 분리 모든 컨트롤러는 뷰로 이동하는 부분을 가지고 있다 이것을 분리하기 위해 View를 별도로 처리해보자 MyView viewPath를 인자로 받는다. 받은 viewPath로 RequestDispatcher후 forwording 해준다. ControllerV2(interface) : MyView 이제는 View가 생겼음으로 MyView형식을 반환해준다. MemberFormControllerV2(implements) : ControllerV2의 구현체 이제는 MyView가 화면으로 forward해주기 때문에 MyView객체만 반환하면 된다. MemberViewControllerV2(implements) : ControllerV2의 구현체 기능은 이전과 같다. 이제는 MyView가 화면으로 forw..
프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 프론트 컨트롤러 V1 ControllerV1(Interface) : void반환 MemberFormControllerV1(implements) : ControllerV1의 구현체 viewPath와 RequestDispatcher를 통해 해당url로 foward 해준다. MemberSaveControllerV1(implements) : ControllerV1의 구현체 Singleton으로 만든 memberRepository를 얻어와 Member객체에로 삽입 여기서 모델은 setAttribute를 사용한다. 마찬가지로 viewPath와 RequestDispatcher를 통해 해당url로 foward 해준다. MemberListContro..