비즈니스 로직과 디자인 요소를 분리한 Spring 웹 모듈
Model, View, Controller 로 분리한 디자인 패턴

Controller 에 해당 하는 자바 로직은 딱 3가지만 있음 p4
1. 사용자 입력 정보 추출
2. DB 연동 처리
3. 화면 내비게이션
❗ 해당 Controller 를 분리시키면 MVC 모델 뷰 아키텍처다 ❗

ModelViewDispatcherServlet) 비즈니스 로직을 구현하는 Controller
DispatcherServlet 이 *.do 요청을 받는다DispatcherServlet 을 front Controller 라고도 함DispatcherSrvelt 으로 관리Servlet 으로 만드나? *.do 를 사용하기 위해HandlerMapping 이 HasMap 을 검색하여,Controller 하나를 DispatcherServlet 에게 return이제 DispatcherServlet 은 정확한 Controller 를 실행한다.
a. 컨트롤러는 DAO 를 이용하여 해당 객체를 request 에 저장하여 받아온다
String 을 통해 받아온 DispatcherServlet 은 String 에 저장된 해당 JSP 를 찾는다.request 를 String 형식으로 찾아온다.View 형태는 JSP 로 출력된다/XXX.do 로 응답 한다protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 사용자 요청 path 정보를 추출한다.
String uri = request.getRequestURI();
String path = uri.substring(uri.lastIndexOf("/"));
System.out.println("요청 path : " + "/getBoardList.do");
// 2. HandlerMapping 을 통해 요청 path에 해당하는 Controller 객체를 검색한다.
HandlerMapping handlermapping = new HandlerMapping();
Controller ctrl = new GetBoardListController(); // path 는 /getBoardList.do
// 3. 검색된 Controller 객체를 실행한다.
String viewName = "getBoardList.jsp";
// 4. Controller 가 리턴한 화면으로 이동한다.(포워드 방식)
RequestDispatcher dispatcher = request.getRequestDispatcher("getBoardList.jsp"); // viewName 은 getBoardList.jsp
dispatcher.forward(request, response);
}
path 정보 추출XXX.dohandlermapping 을 생성 및 호출hashmap 객체를 생성하는데, key-vlaue 로 제네릭 적용DispatcherServlet 에서path 에 해당하는 Controller 하나를 검색해달라고 요청/getBoardList.do 가 getController 로 넘어감getController() 에서 key 값으로 get() 하여 데이터를 끄집어낸다/getBoardList.do 가 호출했던 DispatcherServlet 의 new GetBoardListController()로 리턴됨viewName 에 getBoardList.jsp 가 담기고 foward 방식으로 화면 이동
Servlet Container 는 DispatcherServlet 만 생성하고, 나머지는 생성하지 않음XXX.xml 에 등록된 '서블릿' '필터' '리스너' ⇒ 3가지만 생성하고 관리해줌Spring Container 는 Servlet Container 가 생성해주지 않는 것을 생성해줌HandlerMapping, Controller, ViewResolvernew XmlWebApplicationContext() 을 이용하여 Spring Container 를 생성한 후, 위 3가지 객체들을 <bean> 등록하여 연결해준다xml 파일로 서블릿 객체를 띄우고DispatcherServlet 으로 Spring Container 객체와 연결하여HandlerMapping, Controller, ViewResolver)을 메모리에 띄워준다👉 DispatcherServlet 은 창구 역할
👉 Spring Container 는 DispatcherServlet 이 생성
👉 개발자는 DispatcherServlet 을 web.xml 에 등록만 해주면 됨

MVC Framework)에서는 String 으로 디스패처서블릿에 반환했지만Spring MVC Framwork 에서는 ModelAndView 로 디스패처서블릿에 반환한다ModelAndView 를 적용하는 코드ModelAndView mav = new ModelAndView();
mav.addObject("boardList", boardList); // Model 정보
mav.setViewName("/WEB-INF/board/getBoardList.jsp"); // View 정보
return mav;
<!-- ViewResolver 등록 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/board/"/>
<property name="suffix" value=".jsp"/>
</bean>
.do 로 끝날 때 → forward:, redirect: 를 붙인다@Annotation 설정@Controller@Controller 클래스{}@RequestMapping@RequestMapping(value="/XXX.do") 메서드{}@RequestParam메서드(@RequestParam(value="") String yeppi) {}
@Controller 클래스Service Interface, ServiceImpl, DAO, VO)가 배치되고 운용되는 레이어@Service 인터페이스@Repository DAO Interface, DAO Impl 클래스