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가지 메서드를 통해 동작합니다.

  1. init(): 서블릿이 처음 생성될 때 한 번 실행되며, 초기화 작업을 담당합니다.
  2. service(): 클라이언트의 요청을 받아 실제 로직을 처리하는 핵심 메서드입니다.
  3. 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: 예외 처리를 위한 객체 (에러 페이지에서 사용)