Attribute와 SCOPE에 대해 먼저 배우고 가자
우리는 앞서 내장객체 여러개를 봐왔다.
그 중 pageContext, request, session, application은 내장 객체 영역이 있다.
대충 눈치 챌 수 있듯이
내장 객체는
내장 객체가 저장되는 메모리의 유효기간 및 참조 범위
Scope는
APPLICATION > SESSION > REQUEST > PAGE
이와 같다.
각 영역 마다 아래와 같은 유지시간이 있다.
- Page : 동일한 페이지에서만 공유되고 페이지를 벗어나면 소멸
- Request : 하나의 요청의 처리를 위해 호출된 페이지와 포워드(요청 전달) 된 페이지까지 공유
- Session : 클라이언트가 처음 접속한 후 웹 브라우저를 닫을 때까지 공유
- Application : 한 번 저장되면 웹 애플리케이션이 종료될 때까지 유지
유의 할점은 Page Scope와 내장 객체 pageContext만 서로 이름 다르다는것을 유의하면 된다.
범위는 이와 같고, 더 넓은 영역은 작은 영역을 둘 이상 포함 가능하다.
- 영역(Scope) : 공유를 위한 객체의 유효 범위
- 애트리뷰트(Attribute) : 영역 내에 공유되는 데이터
- 영역의 범위에 따라 애트리뷰트의 데이터 사용가능
- 애트리뷰트는 객체에 저장
- 다양한 데이터 입력 가능(String, int, …)
- 애트리뷰트의 형식 : <key, value>
즉, get,set,remove가 있고 List로 구하는 Names가 있다고 보면된다.
- 하나의 JSP 페이지 내에서 공유될 데이터 저장
- 하나의 JSP 페이지 내에서만 객체를 공유하는 영역
- 주로 커스텀 태그에서 새로운 변수를 추가할 때 사용
- 한 번의 클라이언트 요청이 오면, 하나의 JSP 페이지가 응답
- JSP 파일에는 pageContext 객체 내장
- JSP 파일의 <% %> 안에 변수 사용 시 PAGE 영역에 정의된 객체이기 때문에 해당 JSP 파일 내에서만 유효하다.
- 요청을 받아서 응답하기까지 객체가 유효
- 한번의 요청을 처리하는데 사용되는 모든 JSP페이지에서 공유(전달)될 데이터 저장
- Servlet에서 forward 또는 include 사용 시
- request객체가 공유되어서 request영역을 통해 공유
- 한 사용자와 관련된 정보를 JSP들이 공유하기 위해서 사용
- 사용자의 로그인 정보와 같은 것들을 저장
- 같은 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유
- 세션이 종료되면 객체는 반환
- 하나의 브라우저 당 1개의 session객체가 생성
같은 애플리케이션 내에서 요청되는 모든 페이지들은 같은 객체를 공유
- 모든 사용자와 관련해서 공유할 정보 저장
- 임시 디렉터리 경로와 같은 웹 어플리케이션의 설정 정보를 주로 저장
- 하나의 애플리케이션 당 1개의 application객체가 생성
- 애플리케이션이 종료되면 객체는 반환
//Application 객체
ServletContext appication = request.getServletContext();
application.setAttribute("value1", value);
//Session 객체
HttpSession session = request.getSession();
session.setAttribute("value2", value+1);
//request 객체
request.setAttribute("value3", value+2);
<%= application.getAttibute("value1") %> <br>
<%= session.getAttibute("value2") %> <br>
<%= request.getAttibute("value3") %> <br>
<%= pageContext.getAttibute("value4") %> <br>
pageContext를 불러와야함을 유의하자!~