주난v 개발 성장기

속성과 리스너 (Head First Servlet & JSP) 본문

개발 성장기/Servlet

속성과 리스너 (Head First Servlet & JSP)

주난v 2019. 11. 16. 19:46

Servlet Config

컨테이너가 서블릿을 초기화 할 때, 서블릿마다 하나씩 ServletConfig 생성
컨테이너는 web.xml에서 서블릿 초기화 파라미터를 읽어서, ServletConfig로 넘겨준다.

  • 컨테이너가 서블릿을 초기화 할 때, 한번만 초기화 파라미터를 읽는다.

컨텍스트 초기화 파라미터

컨텍스트 초기화 파라미터의 동작 방식은 서블릿 초기화 파라미터와 같다.
그러나, 컨텍스트 초기화 파라미터는 한 서블릿만 사용하는게 아니라 공용이다.

컨텍스트 초기화 파라미터 vs 서블릿 초기화 파라미터

  • ServletConfig는 서블릿당 한개, ServletContext는 웹 애플리케이션에 한개

ServletContextListener

ServletContext의 이벤트(생성, 소멸) 감지

동기화

  • 컨텍스트에 가장 먼저 접근한 객체가 컨텍스트에 락을 건다.
    • 오직 하나의 스레드만이 컨텍스트 속성을 설정하거나 값을 읽는 것을 보장한다.
  • session은 서로 다른 브라우저에서 접근 가능
    • synchronized를 이용하여 HttpSession 동기화

synchronized

  • 동시성을 보장하지 못한다.
  • 2개의 스레드가 동시에 실행할 수 없다.

지역변수와 Request 속성만이 안전하다.

서블릿에 요청을 보내는 클라이언트가 동시에 접근이 가능하니, 인스턴스 변수는 스레드에 안전하지 않다.