서블릿 초기화 접근은 서블릿config 객체 필요했듯이
우리가 공유가능한 모든 초기화파라미터를 접근하려면 서블릿context객체가 필요하다
context param 은 공유되는 영역이 web application 전역에 대해 공유됨.
서블릿 내에서는 init param.
ServletContext객체 == 웹 어플리케이션
서블릿 컨텍스트 객체의 생명주기 = 웹 어플리케이션 생명주기와 같다. (정확히 같은건 아니지만 거의 같음) (WAS가 올라갈때 생성돼서 내려갈때 죽음)
contextParam이 공유데이터로서 우리가 만든 웹어플리케이션에 들어있는 모든 서블릿에 공유되는 데이터이듯이
우리가 웹 개발하다보면 모든 서블릿, jsp에서 공유할 데이터를 보관하는 장소 역시 Servlet context객체이다.
로그인할때 아이디, 암호 넣고 로그인 성공했다고 했을때
로그인을 정상적으로 했다는 정보를 어딘가 메모리에 저장해놔야 하는데,(로그아웃 전까지)
이 메모리 영역이 바로 이 servlet context가 제공하는 메모리영역이다.
즉, 이 안에 저장소가 있다는 뜻이고, 이 저장소를 application scope(=was와 생명주기가 동일한 servlet context객체의 저장공간)라고 한다.
Servlet Context는 웹 어플리케이션(context)마다 하나씩 생성되는 객체로, 다수의 jsp, 서블릿에서 공유해서 사용할 수 있다.
Servlet Container는 공유데이터를 저장할 공유영역(Shared Scope) 4가지를 제공.
속성 바인딩, 언바인딩?
Application Scope
: 웹 어플리케이션의 lifecycle과 동일한 socpe. was가 존재하는 동안 모든 서블릿 jsp가 접근 가능.
ServletContext객체가 관리한다고 표현.
WAS와 생명주기가 같다. (가장 긴 수명을 가짐)
Session Scope
: 웹 개발시 가장 많이 사용하는 공유영역.
HttpSession 객체가 관리한다고 표현.
웹 브라우저와 생명주기가 같다.
대부분의 웹 서비스는, 로그인 정보 / 장바구니 정보 등을 여기에 저장해서 공유
Request Scope
: 웹 개발시 가장 많이 사용하는 또 하나의 공유영역.
HttpServletRequest 객체가 관리한다고 표현.
하나의 Request에 대해서, Response 문서가 웹 브라우저로 전송되면, 바로 사라지는 영역
Page Scope
: JSP에서만 제공되는 공유영역.
XXX.jsp 파일이 처음부터 끝까지 수행되고 나면 파괴되는 공유영역으로, 가장 짧은 생명을 가짐. (거의 사용하지 않음)
위의 각 공유영역에 속성을 넣고, 빼고, 삭제하는 메소드는 아래와 같다.