본문 바로가기

개발중/Spring

[ 스프링 ] Java EE Servlet ?

728x90
반응형

자바 EE 서블릿


자바 EE 서블릿 ( JAVA EE SERVLET ) 또는 짧게 서블릿은

일반적으로 톰캣과 같은 애플리케이션 서버인 서블릿 컨테이너 내에서 동작한다.

 

HTTP 요청이 서버에 도착하면 일반적으로 인증, 로깅, 감사와 같은 필터링 작업을 수행하는 필터 리스트를 통과한다.

 

요청이 모든 필터를 통과하면

애플리케이션 서버는 특정 패턴과 일치하는 URL 을 포함하는 요청을 처리할 수 있게

등록된 서블릿으로 요청을 넘겨준다.

 

서블릿이 요청에 대한 처리를 마치면

HTTP 응답은 해당 HTTP 요청을 처리한 같은 필터 세트를 통과한 후 클라이언트로 다시 전송된다.

 

이러한 필터에서 특정 HTTP 헤더를 응답에 추가하는 등의 추가 필터링 작업을 수행할 수 있다.


자바 EE 에서 모든 HTTP 요청에 대해 HttpServletRequest 인스턴스가 생성된다.

 

그리고 모든 HTTP 응답에 대해 HttpServletResponse 인스턴스가 생성된다.

 

여러 요청에서 사용자를 식별하기 위해

애플리케이션 서버는 첫 번째 요청을 받으면 HttpSession 인스턴스를 생성한다.

 

각 HttpSession 인스턴스는 세션 ID 라고 부르는 ID 를 가진다.

 

그리고 세션 id 는 HTTP 응답 헤더의 클라이언트에 쿠키로 전송된다.

 

클라이언트는 그 쿠키를 저장하고 다음 요청 시 다시 서버로 보낸다.

 

이렇게 해서 서버는 쿠키에서 찾은 세션 ID 로 HttpSession 인스턴스를 조회해 사용자를 인식 할 수 있다.


자바 EE 에서 HttpSessionListner 인터페이스를 구현해 HttpSession 의 라이프 사이클 이벤트를 수신하거나

SeveletRequestLisrener 인터페이스를 구현해 요청에 대한 라이프 사이클 이벤트를 수신하는 리스너를 만들 수 있다.

 

서블릿을 생성하기 위해 javax.servlet.http.HttpServlet 을 확장하고

@WebServlet 어노테이션을 적용하거나 전통 방식으로

자바 EE 웹 어플리케이션의 설정 파일인 web.xml 파일에 등록할 수 있다.

 

어느 방법이던 서버가 일치하는 URL 요청을 라우트 할 수 있게

이 서블릿을 하나 이상의 URL 패턴에 매핑하여야 한다.

 

또한 서블릿에서 다음 메소드를 정의 할 수 있다.

 

  • doGet
    • HTTP GET 요청을 처리
  • doPost
    • HTTP POST 요청을 처리
  • doPut
    • HTTP PUT 요청을 처리
  • doDelete
    • HTTP DELETE 요청을 처리

 

이러한 메소드의 내부는 애플리케이션 로직이 시작되는 위치가 된다.

 

또한 서블릿을 사용할 때 in-memory 데이터 또는 I / O 수행과 같은 공유 리소스에 접근해야 한다면

서블릿이 항상 동시 요청을 다루고,

하나의 요청에 의한 변경 사항이 다른 요청에 영향을 줄 수 있다는 사실을 기억해야 한다.


 

 

728x90
반응형