럿고의 개발 노트
[WEB] 스코프(Scope)에 대해서 본문
● 요청 스코프(Request Scope)
- 서버는 클라이언트의 HTTP(Hyper Text Transmission Protocol) 요청이 있을때 마다 javax.servlet.http.HttpServletRequest 인터페이스를 구현한 객체 생성
- 특히 이 객체는 요청 스코프(Request Scope)의 생명주기 동안 객체를 저장할 수 있는 Key/Value 속성 쌍들의 컬렉션을 담고 있음
- 각 쌍의 키는 문자열이며, 값은 어떠한 형태의 객체든 상관 없음.
▶ 객체를 저장하거나 가지고 올 수 있는 메소드
- public void serAttribute(String name, Object obj);
- ppublic Object getAttribute(String name);
- 요청 스코프 속성은 removeAttribute() 메소드를 통해 삭제 가능
- 그러나 유효 범위는 요청 존속 기간 동안이므로 요청 스코프에서는 이러한 제거 방법이 중요하지 않음
- 서버는 요청을 처리하면 클라이언트에 응답을 돌려보내고 클라이언트는 자신에 되돌아온 요청과 해당 요청의 속성을 더는 이용할 수 없고 JVM의 Garbage Collection 대상이 됨.
● 세션 스코프(Session Scope)
- 가시성의 다음 단계.
- 웹 컨테이너는 다중 페이지 요청 시 사용자를 식별하기 위하여 javax.servlet.http.HttpSession 인터페이스를 구현한 객체 생성
- 애플리케이션과 컨테이너에서 세션 생성을 처리하며 얼마나 자주 요청을 하는가를 기준으로 사용자의 세션을 일정 시간 동안 유지
- 세션 객체는 일정 시간이 지나면 소멸
- 세션 객체의 소멸 시간은 애플리케이션 배치 디스크립터(Deployment Descriptor)을 통해 설정
- 세션 객체에 invalidate() 메소드를 호출함으로써 소멸 가능
- Key/Value 쌍으로 저장하는 것을 허용
- Session Scope와 Request Scope의 차이점은 지속성
- Session Scope는 다수의 요청에 걸쳐 존재하기 때문에 Session Scope에 저장된 객체는 Request Scope에 저장된 객체보다 생명주기가 길다.
++가시성(visibility) : 프로그램에 존재하는 한 명령어 관점에서 자신이 사용할수 있는 변수 들의 가시 범위를 의미
++ 애플리케이션 배치 디스크립터(Deployment Descriptor) : WEB-INF 아래에 존재하는 web.xml 파일로, 배포 서술자라고 부르는데 JSP, Servlet를 위한 설정파일이라고 보면 됨.
● 애플리케이션 스코프(Application Scope)
- 가시성과 생존주기는 객체에 저장
- 모든 클라이언트와 발생되는 웹 어플리케이션에서 볼 수 있음
- 객체가 제거 되거나 애플리케이션이 종료될 때까지 살아 남는다.
- 서블릿 컨테이너는 javax.servlet.ServletContext 인터페이스를 구현한 객체를 생성하고 모든 웹 어플리케이션은 해당 컨테이너 안에 설치
- 이 객체는 컨테이너가 처음 시동될 때 실행
- Request Scope와 Session Scope의 상위 Scope는 ServletContext.
- ServletContext는 모든 애플리케이션에서 애플리케이션 객체를 조회하고 저장 할 수 있도록 함.
- 또한 애플리케이션 객체의 수명은 서버가 살아있는 동안임.
● 페이지 스코프(Page Scope)
- JSP(Java Server Page) 페이지에서 전반적으로 사용
- Scope에 있는 객체는 각 페이지의 javax.servlet.jsp.PageContext에 저장되고 객체를 생성한 JSP(Java Server Page)를 통해서만 접근 가능
- 응답을 클라이언트에 보내거나 페이지를 다른 자원에 포워드(forword)하면 해당 객체는 더는 사용할 수 없음.
- 모든 JSP(Java Server Page)는 PageContext라는 객체 참조값을 포함
- 이 참조 값은 JSP(Java Server Page)가 생성될 때 자동으로 생성
- PageContext를 통해 페이지 레벨(Page-Level) 객체를 저장하고 조회 가능
- getAttribute(), setAttribute 메소드를 포함 하고 있으며, 다른 Scope들과 비슷한 역할을 함.
++ PageContext : JSP(Java Server Page)의 Context를 나타내며, 주로 다른 내장 객체를 구하거나 페이지의 흐름제어, 에러 데이터를 얻어낼 때 사용
++ Page-Level : 페이지 단위?
출처
'Java Note' 카테고리의 다른 글
Tomcat 다운 및 설치 하기 (0) | 2019.11.27 |
---|---|
이클립스(Eclipse) 인코딩 설정하기 (0) | 2019.11.27 |
이클립스(Eclipse) for Enterprise Java Developers 다운로드 및 설치 (0) | 2019.11.27 |
Open JDK(Java SE Development Kit) 다운 및 설치 (0) | 2019.11.27 |
[Spring] Spring 웹 요청 흐름(DispatcherServlet) (0) | 2019.11.11 |