스프링 MVC 구성 요소

구성 요소 설 명
DispatcherServlet 모든 요청을 가장 먼저 받는 프론트 컨트롤러 / yongController의 대체품
HandlerMapping 요청 URL에 맞는 Controller와 메서드를 찾아준다.
컨트롤러(Controller) 요청 처리 로직 수행, ModelAndView 반환 / Action의 대체품
ModelAndView 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다.
ViewResolver 컨트롤러의 처리 결과를 생성할 뷰를 결정한다.
뷰 (View) 최종 화면 출력 담당한다.

스프링 MVC 흐름도

**[클라이언트 요청]**
        ↓
 DispatcherServlet
        ↓
  HandlerMapping
        ↓
    Controller
        ↓
   ModelAndView
        ↓
   ViewResolver
        ↓
     View(JSP)
        ↓
      **[응답]**

image.png

Spring MVC는 DispatcherServlet을 중심으로 요청을 Controller에 위임하고, ViewResolver를 통해 WEB-INF 안의 JSP를 렌더링한다.


스프링 MVC 환경 세팅

주의 사항 : sts3 → 자바 버전 11

  1. 서블릿 등록 및 매핑 (암기) → web.xml
  <servlet>
  	<servlet-name>dispatcher</servlet-name>
  	<servlet-class>
  		org.springframework.web.servlet.DispatcherServlet
  	</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>dispatcher</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
  1. 스프링 설정 파일 생성 → dispatcher-servlet.xml
  2. JSP
  3. 명령어에 해당하는 Controller 클래스 생성 → interface 만들지 않아도 됨
    1. POJO 방식을 지원해주기 때문에 어노테이션을 이용하여 Controller 클래스로 지정해줘야 함.
    2. 진입 메서드 생성
      1. 반환타입 → ModelAndView
      2. 이 메서드가 진입 메서드인 것을 설정하기 위해 어노테이션을 이용하여 RequestMapping(”절대경로/(명령어)”)
      3. String result = “Spring MVC Framework Result”;
      4. ModelAndView 객체 생성 → ModelAndView mav = new ModelAndView();
      5. mav.addObject(”result”, result); → setAttribute와 동일함.
      6. mav.setViewName(”hello.jsp”);
      7. return mav
  4. View 에게 전달
    1. 전달하기 위해 dispatcher-servlet 파일에 등록 해줘야 함. (<bean> 태그 이용)
      1. Controller 클래스 등록
      2. ViewResolver 등록
    2. hello.jsp 생성
      1. EL 언어 이용해서 값을 가져와야 하는데 value 스택 최상위로 올라가기 때문에 키 값만 써주면 value값을 취득할 수 있음

사용자의 직접적인 접근을 막기 위해 WEB-INF 폴더에 View 생성