WEB/JSP

[JSP] ch03-06. Scope

밍글링글링 2017. 11. 14.
728x90

3-6. Scope

scopeMain.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<a href="scopeProc.jsp?way=redirect">redirect</a>
<a href="scopeProc.jsp?way=forward">forward</a>
 

 

scopeProc.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.URLEncoder"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%
    pageContext.setAttribute("scope", "페이지"); //redirect: 페이지 넘어가면 값이 사라짐, forward: 페이지 넘어가면 값이 사라짐 
    request.setAttribute("scope", "리퀘스트"); //redirect: 페이지 넘어가면 값이 사라짐., forward: 값이 살아있음
    session.setAttribute("scope", "세션"); //둘다 살아있음
    application.setAttribute("scope", "애플리케이션"); //둘다 살아있음
    
    String way = request.getParameter("way");
    
    switch(way){
    case "redirect": //처리를 한번만 할때
        String userName = URLEncoder.encode("최한석","utf-8");
        response.sendRedirect("scopeOut.jsp?userName="+userName); break;
    case "forward" : //처러를 여러번해도 상관없을 때
%>
        <jsp:forward page="scopeOut.jsp"/>
<%
    }
%>
<%--
pageContext.setAttribute("scope", "페이지");
request.setAttribute("scope", "리퀘스트");
session.setAttribute("scope", "세션");
application.setAttribute("scope", "애플리케이션");

Redirect(세션, 애플리케이션)
Forward(리퀘스트, 세션, 애플리케이션)

scope(스코프): 접근범위
: page - 하나의 페이지에서만 적용 (디폴트) (현재페이지가 실행되는동안)
: request - 두개의 페이지에서 적용 (response가 클라이언트까지 갈때까지)
: session - 세션이 유지되는 동안 적용 (논리적인 연결이 유지되는 동안)
                     / 로그인 동안 ex) 쇼핑몰 장바구니
                     / 세션타임 동안 (기본 30분) ex) 은행 자동 로그아웃
                     / 하나의 브라우저에서 : 브라우저가 다를 경우는 새로운 세션
: application - 서버가 유지되는 동안 적용 (현 애플리케이션이 실행되는 동안)

여러페이지에서 꺼내 써야할 때 request. session
페이지 이동 순서를 예측할 수 있다. request.
페이지 이동 순서를 예측할 수 없다. session.
--%>

 

scopeOut.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
    String pageScope = (String)pageContext.getAttribute("scope");
    String requestScope = (String)request.getAttribute("scope");
    String sessionScope = (String)session.getAttribute("scope");
    String applicationScope = (String)application.getAttribute("scope");
    
    String way = request.getParameter("way");
    String userName = request.getParameter("userName");
%>
<ul>    
    <li><b>page:</b>                <%= pageScope%></li>
    <li><b>request:</b>             <%= requestScope%></li>
    <li><b>session:</b>             <%= sessionScope%></li>
    <li><b>application:</b>         <%= applicationScope%>
    <li><b>parameter(way):</b>      <%= way%></li>
    <li><b>parameter(userName):</b> <%= userName%></li>
</ul>
 

728x90

'WEB > JSP' 카테고리의 다른 글

[JSP] ch04-01. Cookie  (0) 2017.11.15
[JSP] ch03-07. Include3  (0) 2017.11.14
[JSP] ch03-05. Forward Login  (0) 2017.11.13
[JSP] ch03-04. Redirect Login  (0) 2017.11.13
[JSP] ch03-02. Request  (0) 2017.11.13

댓글