반응형

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

 

Application, Request, Session and Page Scopes in Servlets and JSPs

Similar to scope and lifetime of variables in Java as you have seen in blocks-and-methods-in-java, parameters and attributes in a Java EE web application also have scope and lifetime in the context of the web application. The scope of a parameter/attribute

www.javajee.com

 

반응형

+ Recent posts