[WEB] Servlet, 서블렛이란?

Cherry·2022년 3월 18일
0
post-thumbnail

서블릿이란?

: 쉽게 말해서 서버에서 처리해야하는 업무를 대신 처리해주는 것이다. 즉 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해주는 기술이다.

@WebServlet(name="helloServlet", urlspatterns = "/hello")
public class HelloServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response){
	   //애플리케이션 로직
	}
}
  • urlPatterns(/hello)의 URL이 호출되면 서블릿 코드가 실행
  • HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest
    • http프로토콜의 request정보를 서블릿에게 전달하기 위한 목적으로 사용
    • 헤더 정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메서드와 Body의 Stream을 읽어 들이는 메서드
  • HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse
    • 클라이언트의 요청에 의한 응답을 보내기 위한 HttpServleResponse 객체를 생성하여 서블릿에게 전달
    • 객체를 활용하여 content type, 응답 코드, 응답 메시지 등을 전송

HTTP 요청, 응답 흐름

  1. WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출
  2. 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용
  3. 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력
  4. WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성

서블릿 컨테이너

  • 서블릿을 지원하는 WAS를 서블릿 컨테이너라 한다.
    • ex) 톰캣
  • 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리해준다
  • 서블릿 객체는 싱글톤으로 관리한다.
    • 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용한다
    • 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근한다
    • 서블릿 컨테이너 종료시 함께 종료한다
  • 동시 요청을 위한 멀티스레드 처리를 지원한다
    • 서블릿 컨테이너는 해당 서블릿의 요청이 들어오면 스레드를 생성해서 작업을 수행한다
  • 통신을 지원한다
    • 클라이언트의 Request를 받아주고 Response를 보낼 수 있게 웹 서버와 소켓을 만들어서 통신한다
  • 보안 관련된 기능을 지원한다
    • 서블릿 또는 자바 클래스 안에 보안 관련된 메서드를 구현하지 않아도 된다

0개의 댓글