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!"); } }
Client의 요청 URL(또는 URI)을 어떤 Controller(Action)가 처리할지는 결정한다.
(요청 URL과 Controller 클래스의 mapping을 관리한다. (이전 Dynamic Web Project 실습에서 config.properties 파일을 통해 command = 처리(.do = Action(클래스) or .do = action(메소드))가 define된대로 client 요청과 처리 action이 연결되었던것과 같음)
클래스들을, 또는 클래스내의 메소드들을 mapping할 수 있다.
클라이언트의 실질적인 요청을 처리한다. Model(DAO, DTO, etc) 처리 결과를 Model결과에 담아서 DispatcherServlet에 반환 (Model 또는 ModelandView에 처리한 결과를 저장한다.)
jpa를 사용할 때 controller 계층이라고 보면 된다.
Controller(Action)가 모델의 처리한 결과 정보
를 view에 담는다
ViewResolver는 Spring이 제공해준다. ViewResolver는 view를 찾는 객체이다.
여러 view를 선택 할 수 있도록해준다. (e.g., template이 있다면, template을 사용)
view 종류별로 ViewResolver가 필요하다. 각 ViewResolver가 각 view를 처리한다.
Controller(Action)의 처리 결과를 생성할 뷰를 결정한다.
Controller가 리턴한 View이름으로 실행될 JSP경로 완성
ex)
@Controller
`
`
`
`
return "index";
라고하면 index.html 을 찾아서 뷰를 결정한다.
Controller(Action)의 처리 결과 화면을 생성, 출력데이터를 설정