1. 객체 범위 종류
웹 애플리케이션에는 4개의 객체 범위가 존재합니다.
- page 영역
- request 영역
- session 영역
- application 영역
이로 미루어 보아 scope 범위는 page < request < session < application 순이라는 것을 알 수 있습니다.
2. 테스트
4개의 scope 개념에 대해 알았으니, 이제 어떻게 활용하는지 알아보도록 하겠습니다.
ScopeServlet.java
각 영역에 객체를 할당하는 방법은 위와 같습니다.
page 영역은 JSP 내에서만 존재하므로 Servlet에서 만들 수 없습니다.
이제 JSP 파일을 만들어서 각 영역의 값을 확인해보겠습니다.
/WEB-INF/index.jsp
Scope를 출력하는 방법은 위와 같습니다.
- 지금까지 java 코드 값을 출력하는 방식으로 <%= %>을 사용했었는데, 지금은 ${ }을 사용했습니다.
- ${ }은 표현식으로서, 다음 글에서 자세히 다룹니다. 지금은 각 Scope의 값을 출력하는 방법에 주목해주세요.
첫 번째 방법은 Scope 영역을 명시하고 출력하고자 하는 애트리뷰트 명을 작성했고,
두 번째 방법은 바로 애트리뷰트 명을 작성했습니다.
결과를 보면 다음과 같습니다.
두 방법 모두 같은 결과를 얻습니다.
즉, 애트리뷰트 명을 잘 작성했다면 두 번째 방법으로 사용하는 것이 간단하므로 좋을 것입니다.
그런데 서로 다른 영역에 같은 이름을 갖는 애트리뷰트가 있다면 어떤 영역의 애트리뷰트가 선택될까요?
스코프 범위에 따라, 애트리뷰트 명은 좁은 범위의 영역부터 큰 범위의 영역으로 탐색을 합니다.
즉, page -> request -> session -> application 순으로 탐색을 하며, 탐색이 된다면 더 이상 큰 범위로 탐색을 진행하지 않습니다.