본문 바로가기

Spring

JSP

tomcat-embed-jasper 의존성에 역할은 다음과 같다.

  • 스프링 부트 앱에는 톰캣 서버가 내장되어 있다.
  • 톰캣 서버는 servlet container 이다.
  • 톰캣 서버는 servlet을 실행하는 서버이다.
  • 톰캣에서 JSP 파일은, 먼저 servlet이로 변환(컴파일)된 후 실행된다.
  • tomcat-embed-jasper는 JSP 파일을 servlet으로 변환하는 컴파일러이다.
  • 이 것을 프로젝트에 추가하지 않고 실행하면, JSP 파일이 실행되지 않고, 웹브라우저에서 다운로드 될 것이다.
  • 톰캣은 servlet만 실행할뿐, 다른 파일들은 웹브라우저로 그대로 전송하기 때문이다

 

실행과정

(1) 웹브라우저 -> 서버

HttpRequest (URL, request parameter)

서버 == servlet container

서버가 요청을 받아서, 요청된 URL에 해당하는 servlet을 찾아서 실행한다.

(즉 servlet에게 요청을 넘긴다)

 

(2) 일단 요청을 SpringDispatcherServlet 객체가 받음

이 요청을 컨트롤러의 액션 메소드에게 dispatch 해야 함.

SpringDispatcherServlet은 스프링 컨테이너의 입구에 해당하는 객체

 

(3) SpringDispatcherServlet 객체가 action method를 선택할 때

요청된 URL과 action method의 @RequestMapping(URL과 기타 등등) 비교.

못찾으면 404 not found 에러를 웹브라우저에 전송(Http response)하고 종료.

 

(4) SpringDispatcherServlet -> action method 호출

이때 스프링은 Model 객체를 액션 메소드 파라미터로 전달함.

 

(5) 액션 메소드는 Model 객체에 데이터를 채움.

뷰 이름을 return 함.

 

(6) 리턴된 뷰 이름을, Spring 엔진이 받음.

데이터가 채워진 Model 객체도.

 

(7) Spring 엔진은 뷰 이름으로 뷰 파일을 찾는다. (이 부분은 URL과 무관함)

view prefix + 뷰 이름 + view suffix = 경로명

이 경로명의 뷰 파일을 찾는다.

 

(8) 뷰 파일을 실행함. 이때 Model 객체를 뷰에 전달함

뷰의 실행 결과 출력은 html 태그들.

 

(9) 뷰가 출력한 html 태그들이 웹브라우저에 전송된다 (html response)


부록

어떤 resource를 식별하고 싶고 Not found시, 404에러 응답 원한다면 Path Variable

정렬이나 필터링을 하고 Not found시, 특정한 값 응답 원한다면 Query Parameter

'Spring' 카테고리의 다른 글

ORM  (0) 2020.01.14
JDBC  (0) 2020.01.14
Spring Web MVC  (0) 2020.01.14
Test  (0) 2020.01.14
부록  (0) 2020.01.14