1. ServletConfig & ServletContext
글로벌한 값의 출처는 화면 또는 DD(Deployment Descriptor 즉, WEB-INF)이다.
- ServletContext: Global한 initialization 수행, WAS 단위의 initialization
- ServletConfig: A Servlet단위의 initialization 수행
2. Page 이동 방법 --> servlet에서는 객체 생성이 WAS로 이뤄지는 반면, 글로벌한 저장소인 ServletContext를 활용한다.
1) 정보를 ServletContext에 바인딩한다 :: Writing (Setter로 구현)
setAttribute("name", object):: Map방식사용. name이라는 이름으로 object 객체 저장
2) 정보를 가져온다 :: Reading (Getter로 구현)
(object)getAttribute("name") :: object casting 필수
3. Listener(감시자) & Event(발생 사건)
DD에서 값을 받아 ServletContext에 전달 후 여기서 path file을 검토한다.
내부에서 벌어지는 사건을 ServletContextEvent라 하고 이를 감시하는 감시자를 ServletContextListener(Interface)라 한다. 이들은 Servlet 차원이 아닌 init 전에 수행되는 단계.
ServletContextListener의 메소드: ContextInitialized, ContextDestroyed 두 가지 존재
4. Attribute : Container차원에서 데이터를 저장하는 장소
Attribute는 ServletRequest, HttpSession, ServletContext 총 세 군데에 존재
이처럼 서로 다른 객체에 동일한 메소드가 있다면 하는 기능 또한 동일하다.
차이점은 Scope에 있다. Scope는 쉽게 말해 데이터 적용 범위 및 유지기한.
Attribute의 경우 ServletRequest<HttpSession<ServletContext 순으로 데이터 유지 기한이 길다.
ServletContext는 서버에서 unbound될 때까지 계속 보관하는 것이고 HttpSession은 로그인 하는 동안 보관하게 된다.
(보통 HttpSession을 많이 사용하지만, 사실 로그인되어있는 내내 필요가 없는 데이터일 경우 오히려 저장 공간의 낭비와 비효율을 불러올 수 있다.)
'Web' 카테고리의 다른 글
Web Application(4/6) (0) | 2021.04.06 |
---|---|
Page 연결 (4/2) (0) | 2021.04.02 |
Servlet Life Cycle (3/31) (0) | 2021.04.01 |
WAS (3/30) (0) | 2021.04.01 |
Web Programming (3/29) (0) | 2021.04.01 |