개요

JSP란 무엇인가
- HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다
- JSP가 실행되면 자바 서블릿으로 변환되며, 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다
- 이는 @Controller를 통한 JavaSpring 서버 자체적으로 클라이언트에게 동적,정적인 웹페이지(View 페이지)를 반환하는 경우 사용된다
- @RestController의 경우 단순하게 데이터만 응답하기위한 API용도로 사용되어 서블릿과정만 거치게된다
예시
- @Controller와, @RestController의 예시를 통해 살펴보자
@Controller
- 클라이언트의 GET /hello 요청
- 디스패처 서블릿 요청 수신
- 디스패처 서블릿이 올바른 컨트롤러를 찾은후, 매핑시킵니다
- 컨트롤러에서는 요청을 처리하고, JSP 파일 이름을 뷰 이름으로 반환합니다
- JSP파일을 뷰로 반환할시, JSP는 내부적으로 서블릿으로 변환되어 동작됩니다
5-1. Spring이 ViewResolver를 통해 JSP파일의 경로 확인 (/WEB-INF-views/hello.jsp)
5-2. JSP 파일은 최초 실행시, JSP엔진 (Jasper)에 의해 서블릿 (Java 클래스)로 변환됩니다
- Ex) hello.jsp -> org.apache.jsp.hello_jsp
- 서블릿의 service() 메서드가 호출되며 현재 들어온 요청이 doGet(),doPost() ... 등 어디인지 확인하고 보냅니다
- JSP 내부의 HTML, JSP 태그, EL(Expression Language) 등은 서블릿 코드로 변환되어 클라이언트에 HTML응답을 생성합니다
@RestController
- 클라이언트의 GET /hello 요청
- 디스패처 서블릿 요청 수신
- 디스패처 서블릿이 올바른 컨트롤러를 찾은후, 매핑시킵니다
- 컨트롤러에서는 이를 처리하고, 디스패처 서블릿으로 응답을 보냅니다
- 디스패처 서블릿에서 다시 클라이언트로 데이터를 응답합니다
오늘 나는 무엇을 알았는가?
- @Controller,@RestController든 일단 들어오는 동작은 전부 동일하다
- @Controller
- 응답값 반환시, JSP가 활용되며, 그 내부적으로는 서블릿으로 변환되어 동작된다
- @RestController
- 응답값 반환시, 바로 디스패처 서블릿으로 넘어가, 클라이언트에게 반환한다
참조 문헌
https://javacpro.tistory.com/43