서블릿

정민교·2022년 12월 7일
0

springmvc1

목록 보기
1/5

📒스프링 부트 환경에서 서블릿 등록

(서블릿은 스프링과 관련이 없음?)
스프링 부트가 톰캣 서버를 내장하고 있음
톰캣 서버 설치 없이 서블릿 코드 작성 가능

  • @ServletComponentScan
    스프링 부트가 서브릿을 자동 등록

  • @WebServlet

    • attribute
      • name: 서블릿 이름
      • urlPatterns: 요청 url과 매핑될 url 주소

    HTTP 요청 url과 urlPatterns가 맞은 서블릿을 찾아서
    protected void service(HttpServletRequest request, HttpServletResponse response)
    매핑된 서블릿의 해당 메서드를 실행

HttpServletRequest, HttpServletresponse는 interface다.

WAS도 여러 가지(Tomcat, Jetty 등)가 있는데 이러한 vendor(?)들이 Servlet의 표준 spec을 구현한다.
얘는 Tomcat이 구현한 HttpServletRequest다.

📒서블릿 컨테이너 동작 방식

https://www.programcreek.com/2013/04/what-is-servlet-container/

✔️WAS

WAS는 Web Server + WebC Container(Servlet Container)로 되어있다.

Web Server를 통해 정적 리소스를 제공하고 동적 데이터가 필요하면 경우 Web Container로 요청을 보내 해당 요청을 처리(비지니스 로직 실행)하고 동적으로 데이터를 생성해서 응답으로 보낸다.

자바는 웹 구현 기술로 Servlet을 사용하고 Servlet을 관리하고 jsp 파일을 실행하게 해주는 것이 Servlet Container다.

✔️동작 방식

Servlet Container가 Servlet 객체를 생성

클라이언트로부터 http 요청이 오면 Serlvet Container가 http 요청 메시지 작업을 파싱하고 HttpServletRequest, Response 객체를 생성한다.
(HTTP 스펙에 맞춰서 요청, 응답을 다 만드려면 너무 힘들다. Servlet 기술은 HTTP 요청, 응답을 알아서 파싱해서 우리가 쓰기 좋게 만들어준다)

생성한 HttpServletRequest, Response 객체를 요청과 매핑된 Servlet 객체의 service 메소드를 호출하면서 파라미터로 넘겨준다.

로직 실행 후 Response 객체에 응답 결과를 담고 Servlet Container에 전달

Servlet Container가 응답 메세지 생성 후 클라이언트에게 전달

profile
백엔드 개발자

0개의 댓글