패스트캠퍼스 데브캠프 : 남궁성의 백엔드 개발 3기
Spring MVC | 서블릿과 JSP (1)
Tech_JINI
2025. 2. 25. 17:23
서블릿과 JSP는 거의 같다.
Spring은 JSP를 발전시킨 것이다.
서블릿과 컨트롤러의 비교
@WebServlet은 @Controller + @RequestMapping 과 유사한 역할을 합니다
서블릿
- @WebServlet("맵핑할 URL 주소") 를 사용하여 URL을 맵핑합니다.
- URL 맵핑이 클래스 단위로 이루어지므로, 새로운 요청을 처리하려면 클래스를 추가해야 하는 단점이 있습니다.
- HttpServlet 클래스를 상속받아야 합니다.
- service(HttpServletRequest request, HttpServletResponse response) 메서드를 항상 사용해야 하며, 요청과 응답 객체를 매개변수로 받습니다.
- throws IOException을 사용하는 이유는 PrintWriter를 활용하여 응답을 작성하기 때문입니다.
컨트롤러
- @Controller와 @RequestMapping 애너테이션을 사용합니다.
- 특정 클래스를 상속받을 필요가 없습니다.
- 필요한 매개변수만 선택적으로 사용할 수 있습니다.
- 메서드 단위로 URL을 맵핑할 수 있어 하나의 클래스에서 여러 개의 요청을 처리할 수 있습니다.
서블릿의 생명주기
서블릿은 기본적으로 다음 3가지 메서드를 통해 동작합니다.
- init(): 서블릿이 처음 생성될 때 한 번 실행되며, 초기화 작업을 담당합니다.
- service(): 클라이언트의 요청을 받아 실제 로직을 처리하는 핵심 메서드입니다.
- destroy(): 서블릿이 메모리에서 제거될 때 실행되며, 리소스를 정리하는 역할을 합니다.
요청 처리 흐름
클라이언트 요청 -> Servlet Context에서 서블릿 인스턴스 존재확인 -> 존재 있음 -> service() 응답
클라이언트 요청 -> Servlet Context에서 서블릿 인스턴스 존재확인 -> 존재 없음 -> 서블릿 클래스 로딩&인스턴스 생성 -> init() -> service() 응답
JSP(Java Server Pages)란
JSP는 HTML 코드 안에 Java 코드를 삽입하여 동적인 웹 페이지를 생성할 수 있는 기술입니다.
내부적으로는 서블릿으로 변환되어 실행됩니다.
JSP 호출과정
JSP와 서블릿으로 변환된 JSP의 비교
JSP의 기본 객체
JSP에서는 자주 사용되는 객체를 생성 없이 바로 활용할 수 있습니다.
- request: 클라이언트의 요청 정보를 담고 있는 객체
- response: 서버에서 클라이언트로 응답을 보낼 때 사용하는 객체
- session: HTTP session을 구현한 객체. 세션 정보 저장에 사용
- application: 애플리케이션 전역에서 공유되는 정보를 저장하는 객체
- config: 서블릿의 환경 설정 정보를 담고 있는 객체
- page: 현재 JSP 페이지를 나타내는 객체
- pageContext: JSP 페이지의 컨텍스트 정보를 담고 있는 객체
- out: 응답에 포함될 내용을 출력할 때 사용
- exception: 예외 처리를 위한 객체 (에러 페이지에서 사용)