soowanlog

Servlet 본문

백엔드/Java

Servlet

개발자솬
백엔드/Java

Servlet

개발자솬 2024. 4. 1. 22:01
728x90
반응형
  • Servlet이란?

Java를 사용하여 웹을 만들기 위해 필요한 기술로 Client의 요처에 대한 결과를 다시 전송해주는 프로그램입니다.

 

Servlet은 Java 코드 내부에 HTML 코드가 있기 때문에 코드를 읽고 쓰기가 불편합니다.

  • Servlet의 동작방식

먼저 Client가 URI를 통해 요청을 보내면 Servlet Container로 전송합니다.

 

요청을 전송받은 Servlet Container는 요청을 분석하여 해당 요청을 처리할 Servlet을 결정합니다.

이 Servlet들은 javax.servlet.http.HttpServlet을 상속받고 있습니다.

 

Servlet Container는 요청을 처리할 Servlet이 메모리에 로드되어 있는지 확인하고 메모리에 로드되어 있지 않다면 init()메서드를 호출하여 인스턴스를 생성합니다.

 

Servlet Container는 받은 요청을 HttpServletRequest 객체로 캡슐화하여 service()메서드에 전달하고, Servlet은 HttpServletResponse 객체에 필요한 작업을 수행하여 응답합니다.

HttpServlet 클래스에 구현되어 있는 service()메서드는 내부에서 Client의 요청에 따라 doGet(), doPost(), doPut() 등의 메서드를 호출합니다.

만약 doGet()메서드만 구현한 상태에서 Client가 POST요청을 보낸다면 405(Method Not Allowed)코드를 반환합니다.

 

응답이 완료되면 Servlet Container는 destroy()메서드를 호출하여 Servlet을 소멸시킵니다.

※ Servlet Container


Servlet의 생명주기를 관리하고, Servlet을 실행하는 환경을 제공하는 SW.
즉, Servlet 객체를 만드는 것만으로는 Servlet 스스로 작동하게 할 수 없고 Tomcat등의 WAS에 내장되어 있는 Servlet Container를 통해 작동함.
  • Servlet의 생명주기

- init() :

Servlet이 메모리에 로드될 때 한번만 호출되는 메서드입니다.

만약 Servlet 클래스의 코드가 변경될 경우 기존 Servlet을 소멸시키고 다시 init()메서드를 통해 메모리에 로드합니다.

또한 Servlet의 스레드에서 공통적으로 사용할 것이 있다면 HttpServlet의 init()메서드를 오버라이드하여 구현하면 됩니다.

 

- service() :

모든 요청은 service()메서드에 전달되어 doXXX()메서드로 이동합니다.

HttpServlet의 service()메서드는 요청을 doXXX()메서드로 이동시키는 로직만 담고있기 때문에 각 요청에 따른 응답 처리는 직접 Servlet 클래스 내에 구현해야 합니다.

특정 요청을 지원하지 않고 싶다면 service()메서드를 오버라이드하여 구현하면 됩니다.

 

- destory() :

Servlet을 메모리에서 소멸시킬 때 한번만 호출되는 메서드입니다.

만약 요청이 종료된 후 처리해야 하는 작업은 HttpServlet의 destroy()메서드를 오버라이드하여 구현하면 됩니다.

참    고    자    료

- Servlet (서블릿)이해하기 + 실습예제 | 댕꼬

 

- 서블리(Servlet)이란? | 망나니개발자

728x90
반응형

'백엔드 > Java' 카테고리의 다른 글

JSP  (0) 2024.04.02
JVM  (0) 2024.03.08
Garbage Collector  (0) 2024.03.07
Java 버전 별 특징  (2) 2024.03.07
Java  (0) 2024.03.07