데브코스 W6D2

코끼릭·2022년 4월 19일
0

TIL

목록 보기
21/36

DispatcherServlet

HTTP 프로토콜로 들어오는 모든 요청을 톰캣과 같은 서블릿 컨테이너가 받게 되면 그 안에서 각 요청을 적절한 컨트롤러에 전달하는 역할을 하는 Front Controller로 web.xml에서 정의한 모든 URL 요청 처리를 모두 담당하고 있어 번거로움을 해결해준다. 대신 모든 요청을 처리하니 정적 파일에 대한 요청까지 가로채기 때문에 /apps의 URI로 접근하면 DispatcherServlet이 담당을 하고 /resource의 URI로 접근하는 경우 담당하지 않게 하는 방식이나 요청을 처리할 컨트롤러를 찾을 수 없는 경우에만 Resource 경로를 탐색해서 자원을 탐색하는 방식으로 문제를 개선했다.

Spring MVC의 동작방식


1. DispatchServlet으로 request가 들어온다.
2. 들어온 요청을 담당하는controller를 handler Mapping을 통해 찾은 다음 handler Adapter를 이용해 호출한다.
3. controller는 service 로직을 실행시켜 나온 결과를 model로 저장하고 응답할 포맷인 view를 지정해서 DispatcherServlet에게 알려준다.
4. viewResolver를 통해 응답할 view를 찾은 뒤 DispatcherServlet에게 전달받은 model을 이용해 랜더링한다.
5. DispatcherServlet는 렌더링된 view를 결과로 response한다.

Thymleaf

컨트롤러가 전달하는 모델을 이용해서 동적으로 화면을 구성하는 뷰 템플릿으로 기존에 사용되는 JSP와 다르게 가독성이 좋고 진입장벽이 낮은 장점을 가지고 있다.

controller class

@RequestMapping("/test")
public String test(Model model) {
    model.addAttribute("test"," hello world");
	return "view";
}

view.html

<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<p th:text="${test}"></p>

DispatchServlet
Spring MVC
Thymleaf

profile
ㅇㅅㅇ

0개의 댓글