강민승·2023년 9월 7일
0

spring

목록 보기
10/17
post-thumbnail

Spring MVC 흐름

spring MVC의 주요 구성 요소

Dispatcher Servlet

Dispatcher Servlet이 거의 관제탑?이라고 생각하면 된다.

Servlet class이며, 모든 client의 요청을 처리한다.
Controller(Action)에게 client의 요청을 전달, Controller가 리턴한
결과값을 View에 전달하여 알맞은 응답을 생성하도록 한다.

Servlet Class

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        response.getWriter().write("Hello, World!");
    }
}

HandlerMapping

Client의 요청 URL(또는 URI)을 어떤 Controller(Action)가 처리할지는 결정한다.
(요청 URL과 Controller 클래스의 mapping을 관리한다. (이전 Dynamic Web Project 실습에서 config.properties 파일을 통해 command = 처리(.do = Action(클래스) or .do = action(메소드))가 define된대로 client 요청과 처리 action이 연결되었던것과 같음)

클래스들을, 또는 클래스내의 메소드들을 mapping할 수 있다.

Controller(Action)

클라이언트의 실질적인 요청을 처리한다. Model(DAO, DTO, etc) 처리 결과를 Model결과에 담아서 DispatcherServlet에 반환 (Model 또는 ModelandView에 처리한 결과를 저장한다.)

jpa를 사용할 때 controller 계층이라고 보면 된다.

Model(AndView)

Controller(Action)가 모델의 처리한 결과 정보를 view에 담는다

ViewResolver

ViewResolver는 Spring이 제공해준다. ViewResolver는 view를 찾는 객체이다.
여러 view를 선택 할 수 있도록해준다. (e.g., template이 있다면, template을 사용)
view 종류별로 ViewResolver가 필요하다. 각 ViewResolver가 각 view를 처리한다.

Controller(Action)의 처리 결과를 생성할 뷰를 결정한다.
Controller가 리턴한 View이름으로 실행될 JSP경로 완성

ex)

@Controller
`
`
`
`
return "index";

라고하면 index.html 을 찾아서 뷰를 결정한다.

View

Controller(Action)의 처리 결과 화면을 생성, 출력데이터를 설정

profile
Step by Step goes a long way. 꾸준하게 성장하는 개발자 강민승입니다.

0개의 댓글