Servlet/JSP, 변수 Scope 종류
글. 수알치 오상문
- application scope
- session scope
- request scope
- page scope
application > session scope > request > page
<---------------------- application (서버 운영 중 유지) ----------------------------->
<------ session (웹 브라우저,이용자, 장바구니 등) ------->
<--- request ---> <--- request --->
<- page ->
<------ session (웹 브라우저, 이용자, 장바구니 등) ------->
<---- request ------------> <--- request --->
<- page -> <- page ->
(1) Application 영역 변수/객체
웹 어플리케이션이 시작되고 종료될 때까지 유지되는 전역변수/객체이다. 모든 클라이언트가 공통으로 사용할 값에 사용한다.
- JSP는 application 내장 객체를 이용한다.
- 서블릿은 getServletContext() 메소드로 application 객체를 이용한다.
ServletContext application = getServletContext();
application.setAttribute("userid", userid);
application.setAttribute("level", level);
try {
userid = (String)application.getAttribute("userid");
level = (int)application.getAttribute("level");
} catch(NullPointerException ex) {
out.println("에러: 존재하지 않는 값입니다.");
}
(2) Session 영역 변수/객체
웹 브라우저 세션 별로 관리하거나 상태를 유지한 전역변수/객체이다. 웹 브라우저별로 관리할 변수에 사용하므로, 브라우저 탭이 바뀌어도 정보가 공유된다(이용자 정보나 장바구니 같은 것). 그러나 어떤(크롬) 브라우저를 이용 중에 다른(익스플로러) 브라우저를 실행한다면 세션 영역 정보는 넘어가지 않는다.
- JSP는 session 내장 변수를 사용한다.
- 서블릿은 HttpServletRequest의 getSession() 메소드로 session 객체를 얻는다.
session.setAttribute("cart", request.getParameter("cart"));
session.getAttribute("cart")
(3) Request 영역 변수/객체
HTTP 요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지만 유지되는 전역변수/객체이다.
- JSP에서는 request 내장 변수를 사용한다.
- 서블릿에서는 HttpServletRequest 객체를 사용한다.
Forward가 이루어져도 값이 유지된다.
예: 요청 후 응답 시까지 유지해야 하는 정보/객체
email = request.getParameter("email")
session.setAttribute("email", email);
(4) Page 영역 변수/객체
특정 페이지에서 사용하는 지역변수/객체이며 JSP 페이지에서 pageContext 내장 객체로 사용 가능하다. 단순히 페이지에서 변수를 만들어 사용하는 것과 비슷하지만, JSP에서 pageScope에 값 저장 후 해당 값을 EL 표기법 등에 사용 가능하다는 장점이 있다. 해당 JSP/서블릿이 실행되는 동안에만 정보를 유지하므로 Forward가 이루어지면 접근할 수 없다.
예: 페이지 내부에서 필요한 변수/객체
pageConext.setAttribute("score", score);
pageConext.getAttribute("score");
[참고] http://www.javajee.com/application-request-session-and-page-scopes-in-servlets-and-jsps
'JAVA Servlet,JSP' 카테고리의 다른 글
JSP, EL(Expression Language) 연산자 (0) | 2022.06.04 |
---|---|
JSP, EL(Expression Language) 표기 (0) | 2022.06.04 |
Redirect와 Forward 차이 (0) | 2022.06.03 |
JSP 내장 객체 (JSP Implicit Objects) (0) | 2022.06.03 |
JSP에서 사용할 수 있는 설명문 표기 종류 (0) | 2022.06.03 |