목록Spring/MVC 1 (56)
코드 그라데이션
스프링 MVC - 시작하기 스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작해서, 매우 유연하고 실용적이다. 과거에는 자바 언어에 애노테이션이 없기도 했고, 스프링도 처음부터 이런 유연한 컨트롤러를 제공한 것은 아니다. @RequestMapping 스프링은 애노테이션을 활용한 매우 유연하고, 실용적인 컨트롤러를 만들었는데 이것이 바로 @RequestMapping 애노테이션을 사용하는 컨트롤러이다. 다들 한번쯤 사용해보았을 것이다. 여담이지만 과거에는 스프링 프레임워크가 MVC 부분이 약해서 스프링을 사용하더라도 MVC 웹 기술은 스트럿츠 같은 다른 프레임워크를 사용했었다. 그런데 @RequestMapping 기반의 애노테이션 컨트롤러가 등장하면서, MVC 부분도 스프링의 완승으로 끝이 났다. @Req..
뷰 리졸버 OldController - 뷰 조회할 수 있도록 변경 @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"); } } 일단 이렇게만 하면 404 오류페이지 나옴. 현재 뷰를 찾지 못하기 때문에. application.pr..
1. 과거 - 지금은 전혀 사용하지 않지만, 스프링이 주로 사용했던 스프링이 제공하는 간단한 컨트롤러로 핸들러 매핑과 어댑터를 이해해보기 Controller 인터페이스 과거 버전 스프링 컨트롤러 스프링도 처음에는 이런 딱딱한 형식의 컨트롤러를 제공했음. OldController @Component("/springmvc/old-controller") public class OldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("OldControl..
직접 만든 MVC 프레임워크와 스프링 MVC를 비교해보자 직접 만든 MVC 프레임워크 구조 SpringMVC 구조 직접 만든 프레임워크 => 스프링 MVC 비교 DispatcherServlet 구조 살펴보기 DispacherServlet 서블릿 등록 그림 요청 흐름 DispacherServlet.doDispatch() protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedRequest = request; HandlerExecutionChain mappedHandler = null; ModelAndView mv = null; /..
FrontControllerServletV5 에 ControllerV4 추가 [전체 코드] @WebServlet(name = "frontControllerServletV5", urlPatterns = "/front-controller/v5/*") public class FrontControllerServletV5 extends HttpServlet { private final Map handlerMappingMap = new HashMap(); private final List handlerAdapters = new ArrayList(); public FrontControllerServletV5() { initHandlerMappingMap(); initHandlerAdapters(); } private..
상황 만약 어떤 개발자는 Controller3 방식으로 개발하고 싶고, 어떤 개발자는 Controller4 방식으로 개발하고 싶다면 어떻게 해야 할까? 어댑터 패턴 지금까지 우리가 개발한 프론트 컨트롤러는 한가지 방식의 컨트롤러 인터페이스만 사용할 수 있다. ControllerV3 , ControllerV4 는 완전히 다른 인터페이스이다. 따라서 호환이 불가능하다. 마치 v3는110v이고, v4는 220v 전기 콘센트 같은 것이다. 이럴 때 사용하는 것이 바로 어댑터이다. 어댑터 패턴을 사용해서 프론트 컨트롤러가 다양한 방식의 컨트롤러를 처리할 수 있도록 변경해보자. V5 구조 MyHandlerAdapder public interface MyHandlerAdapter { boolean supports(O..
단순하고 실용적인 컨트롤러 V4 구조 ControllerV4 - 인터페이 public interface ControllerV4 { /** 치고 엔터치면 이 주석 나온다. * @param paramMap * @param model * @return viewName */ String process(Map paramMap, Map model); } # Map model - model에 개발자가 값 집어넣으면 됨. - 이전에는 modelView를 생성해서 그 모델을 가져다 썼는데, 이제는 컨트롤러가 모델까지 생성해서 넘겨준다. ModelFormControllerV4 public class MemberFormControllerV4 implements ControllerV4 { @Override //ModelVie..