Servlet

박용민·2024년 1월 17일
0

Servlet

서블릿(Servlet)은 Java 언어를 기반으로 웹 어플리케이션 동적인 처리를 담담하는 자바 클래스이다.
HTTP 요청을 받아들이고 비즈니스 로직을 수행하고 동적으로 HTML 페이지를 생성합니다.

Servlet을 사용하기 전에는 정적 페이지(웹 서버에 미리 저장되고 저장된 데이터가 변경되지 않고 고정된 페이지)로 동적 페이지(클라이언트의 요청 및 여러 상황에 따라 데이터가 달라지는 페이지)를 제공하기 어려웠습니다. 이후 Servlet을 사용하여 동적 콘텐츠를 쉽게 생성하여 클라이언트에게 제공합니다.

HTTP 프로로콜 동작하며 클라이언트, 서버 간의 상호작용이 쉽게 가능해졌고 컨테이너 기능을 제공하여(Apache Tomcat)에서 동작하고 세션 관리, 보안 기능, 스레드 관리등을 활용할 수 있습니다.

Servlet 동작 방식

  1. Servlet Container를 초기화한다. (Apache Tomcat)이 구동되면서 서블릿 컨테이너가 초기화된다.
  2. HttpServletReqeust 및 HttpServletResponse를 생성한다.
  3. 서블릿 로딩을 로딩하는대 이때 'web.xml' 또는 어노테이션 기반의 설정 서블릿 클래스들을 로딩한다.
<!-- ex) 서블릿 선언 -> 서블릿 클래스와 URL 패턴을 설정한다.-->
<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/myservlet</url-pattern>
</servlet-mapping>
  1. 이후 init() 메서드가 호출되어 초기화 작업을 수행한다.
  2. 해당 서블릿에서 service()를 호출한후 HTTP 메소드에 따라 doGet(), doPost()를 호출한다.
    1) HttpServlet 클래스에서 제공되는 메서드 중 일부로, 서블릿이 클라이언트로부터의 HTTP 요청을 처리하는데 사용한다.
    2) 메서드를 통해 클라이언트의 요청을 처리하고 응답을 생성한다.
protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    // Get 요청 처리 로직
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    // POST 요청 처리 로직
}
  1. 동적 페이지 생성한 후 HttpServletResponse객체에 응답을 보낸다.
  2. 응답이 끝나면 두 객체를 소멸시킨다.

[참고자료]
https://mangkyu.tistory.com/14
https://medium.com/javarevisited/servlet-things-every-java-developer-must-know-servlet-container-filter-and-listener-374a460169bd

0개의 댓글