백엔드 웹 개발 노트5.4 - 스프링MVC 기초
스프링MVC 스타트 스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작한다. 매우 유연하고 실용적임. 옛날에는 스프링 프레임워크가 MVC부분이 약해서 스프링을 사용하더라도 MVC 웹 기술은 스트럿츠 같은 다른 프레임워크를 사용했다고 한다. 하지만, @RequestMapping 기반의 애노테이션 컨트롤러가 등장하면서 MVC도 스프링의 완승으로 끝...
스프링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...
1. 프론트 컨트롤러 도입 - v1 먼저 구조를 바꿔볼 것이다. 각자의 역할을 하는 컨트롤러의 인터페이스 만들어보자. 1.2 프로젝트 구조 1.3 ControllerV1 Interface package hello.servlet.web.frontcontroller.v1; import javax.servlet.ServletException;...
1. MVC 패턴 개요 서블릿과 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되는 것은 너무 많은 역할을 맡기고, 유지보수도 어려워진다. 버튼 하나 옮기는 작업에 Java코드가 섞인 JSP파일을 본다면 머리가 어질어질할 것이다. 마찬가지로 비즈니스 로직을 바꾸려고 Java코드를 건드려야 하는데 HTML 코드가 수백줄...