본문 바로가기

서블릿은 무엇인가?

by ehaakdl 2022. 7. 12.

[ 정의]

  • 요청-응답 프로그래밍 모델을 통해 액세스되는 응용 프로그램을 호스팅하는 서버의 기능을 확장하는 데 사용되는 Java 프로그래밍 언어 클래스입니다.(Servlet 으로 개발할때는 HttpServlet 상속받아 요청을 맵핑 시켰다. 요청과 응답을 담당하는 클래스가 servlet이라고 보면된다. 스프링에서 Controller는 Servlet 이 아니다. FrontController 패턴으로 DispatcherServlet 하나만 서블릿으로 요청을 다 받기 떄문이다.)

[ 특징 ]

  • 싱글톤 으로 초기에 생성 됨
  • 서블릿 컨테이너가 서블릿 객체 생성해주고 초기화, 호출, 종료 생명주기를 다룬다.
  • JSP 도 서블릿으로 변환된다.

 

[ 주의 점 ]

  • 싱글톤으로 관리되서 멤버 변수에 값을 넣으면 안된다 말그대로 공유되는 거기 떄문이다.!

 

 

 

 

[ 예제 코드 ]

@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
    private String message;

    public void init() {
        message = "Hello World!";
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");

        // Hello
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>" + message + "</h1>");
        out.println("</body></html>");
    }

    public void destroy() {
        System.out.println("destroy");
    }
}

 

HttpServlet Class

doGet 호출 스택

1. 미리 구현 된 service 메소드가 Http 요청을 받는다.

2. service 메소드가 요청을 분석하여 HTTP Method 에 해당하는 override 된 함수를 찾아서 호출해준다.

 

 

 

'' 카테고리의 다른 글

WAS 스레드 방식 비교  (0) 2022.08.27
Http, 정적 웹 서버, 동적 웹 서버 정리  (0) 2022.08.27
Rest Api 설계  (0) 2022.07.06
csrf 방어  (0) 2022.06.18
쿠키, 헤더  (0) 2021.12.29