개요
JSP의 변수/객체는 네가지 영역으로 나누어 해당 변수가 존재하는 범위를 지정하는 범위까지 가지고 있는 경우,
동일한 브라우저로 서버와 연결되어 있는 경우까지 유지되는 경우, 서버가 다시 시작되기까지 유지되는 범위로 처리할 수 있다.
서버의 자원(메모리, cpu 등)을 효율적으로 필요에 의해서 사용하기 위해서 session scope를 사용한다.
네가지 영역
1) page 영역 : 하나의 jsp 페이지를 처리할 때 사용되는 영역
2) request 영역 : 하나의 http 요청을 처리할 때 사용되는 영역
특정 페이지에서 request, response를 탑재시켜 forward
계속 전달하면서 가지고 있는 정보
3) session 영역** : 하나의 웹 브라우저와 관련된 영역
- 가장 많이 쓰이고 활용도가 높다.
- 특정 메모리에 session 정보를 저장시켜서 계속 갖다씀
- 하나의 브라우저(client) 서버와 연결관계에 있는 범위에서 설정값이 유지된다.(브라우저를 다 닫거나, 다른 브라우저에서는 유지 불가) 같은 브라우저에서 요청값을 forward하지 않아도 있는 데이터 범위
4) application 영역 : 하나의 웹 어플리케이션 관련된 영역
클라이언트 상관없이 서버에서 보관하는 정보, 서버가 없어지거나 재기동할 때 사라진다
cf) DB영역 : 브라우저가 끊기고 서버가 닫혀도 계속 사용할 수 있음(웹 서버랑 상관없는 영역)
기능메서드
1) XXX.setAttribute("저장키", "저장값/객체") : 키로 저장
2) XXX.getAttribute("저장키") : 키로 호출
<%
// 1. page 범위 설정
pageContext.setAttribute("page01", "page범위 데이터(page scope)");
// 2. request 범위 설정
request.setAttribute("request02", "request범위 데이터(request scope)");
// 3. session 범위 설정
session.setAttribute("session03", "session범위 데이터(session scope)");
// 4. application 범위 설정
application.setAttribute("application04", "application범위 데이터(application scope)");
//request 테스트를 위한 처리
// reuqest의 forward는 현재 설정을 처리하는 request, response를 가지고 해당 페이지로 이동하는 것이다.
// 그래서 page 범위에 있는 데이터를 사라지지만 request 범위 이상의 데이터를 가지고 있다
request.getRequestDispatcher("a10_showScopePage.jsp").forward(request, response);
%>