ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP - 기본객체 중 4개의 Scope 영역과 포워딩(forwarding), 리다이렉트(redirect)
    카테고리 없음 2020. 6. 23. 21:43

    4개의 저장영역

     

    1. pageContext

     

    2. request

     

    3. session

     

    4. application

     

    4개의 저장 영역에서 포워딩(fowarding), 리다이렉트(redirect) 처리를 했을 때 비교


    1. 포워딩(forwarding)

     

    [forwardRequest.jsp]

    <%@page import="kr.or.ddit.vo.MemberVO"%>
    <%@page import="kr.or.ddit.member.service.MemberServiceImpl"%>
    <%@page import="kr.or.ddit.member.service.IMemberService"%>
    <%@page import="java.util.HashMap"%>
    <%@page import="java.util.Map"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%
    	Map<String, String> params = new HashMap<String, String>();
    	params.put("mem_id", "c001");
    	
    	IMemberService service = MemberServiceImpl.getInstance();
    	
    	MemberVO memberInfo = service.memberInfo(params);
    	
    	// 기본객체(9개) 중 저장영역(Scope)을 포함하는 기본객체(4개)
    	// pageContext, request, session, application
    	// 저장영역 대상 데이터 저장, 수정, 삭제, 취득시 공통 메서드
    	
    	//  저장 - 기본객체명.setAttribute(키, 값) : 해당 값은 Object 타입으로 업캐스팅 처리.
    	//  취득 - 기본객체명.getAttribute(키) : 취득한 값은 해당 타입으로 다운 캐스팅
    	//  수정 - 기본객체명.setAttribute(기존 동일 키 ,상이 값) : 해당 값은 Object 타입으로 업캐스팅 처리.
    	//  삭제 - 기본객체명.removeAttribute(키)
    	
    	//pageContext는 기본객체이기 때문에 따로 선언을 안해줘도 사용가능
    	
    	pageContext.setAttribute("pageMemberInfo", memberInfo);
    	
    	request.setAttribute("reqMemberInfo", memberInfo);
    	
    	session.setAttribute("sesMemberInfo", memberInfo);
    	
    	application.setAttribute("appMemberInfo", memberInfo);
    	 
    	RequestDispatcher dispatcher = request.getRequestDispatcher("/04/forwardRequest2.jsp");
    	
    	dispatcher.forward(request, response);
    			
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    </body>
    </html>

     

    [forwardingRequest2.jsp]

    <%@page import="kr.or.ddit.vo.MemberVO"%>
    <%@ 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">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    	<h3>pageContext 영역 값 획득</h3>
    	    <%
        	MemberVO pageScopeData = (MemberVO)pageContext.getAttribute("pageMemberInfo");
        	if(pageScopeData != null){
        %>
        
    	아이디 : <%=pageScopeData.getMem_id()%>
    	패스워드 : <%=pageScopeData.getMem_pass()%>
    	이름 : <%=pageScopeData.getMem_name()%>
    	<%
    		}
        %>
        <%
    		MemberVO requestScopeData = (MemberVO)request.getAttribute("reqMemberInfo");
    
        	if(((MemberVO)request.getAttribute("reqMemberInfo")) != null){
        %>
    	<h3>request 영역 값 획득</h3>
    	아이디 : <%=requestScopeData.getMem_id()%>
    	성명 : <%=requestScopeData.getMem_name()%>
    	이름 : <%=requestScopeData.getMem_name()%>
    	<%
        	}
    	%>
    	<h3>session 영역 값 획득</h3>
    	아이디 : <%=((MemberVO)session.getAttribute("sesMemberInfo")).getMem_id()%>
    	성명 : <%=((MemberVO)session.getAttribute("sesMemberInfo")).getMem_pass() %>
    	이름 : <%=((MemberVO)session.getAttribute("sesMemberInfo")).getMem_name() %>
    	
    	<h3>application 영역 값 획득</h3>
    	아이디 : <%=((MemberVO)application.getAttribute("appMemberInfo")).getMem_id()%>
    	성명 : <%=((MemberVO)application.getAttribute("appMemberInfo")).getMem_pass() %>
    	이름 : <%=((MemberVO)application.getAttribute("appMemberInfo")).getMem_name() %>
    </body>
    </html>


    2. 리다이렉트(redirect)

     

    [redirectRequest.jsp]

    <%@page import="kr.or.ddit.vo.MemberVO"%>
    <%@page import="kr.or.ddit.member.service.IMemberService"%>
    <%@page import="kr.or.ddit.member.service.MemberServiceImpl"%>
    <%@page import="java.util.HashMap"%>
    <%@page import="java.util.Map"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!-- _jspService(reqeust, response){  // redirect 요청을하면서 servlet으로 바뀜-->
    <%
    	Map<String, String> params = new HashMap<String, String>();
    	params.put("mem_id", "c001");
    	
    	IMemberService service = MemberServiceImpl.getInstance();
    	
    	MemberVO memberInfo = service.memberInfo(params);
    	
    	// 기본객체(9개) 중 저장영역(Scope)을 포함하는 기본객체(4개)
    	// pageContext, request, session, application
    	// session(sessionScope), application(ApplicationScope)
    	
    	// 저장영역 대상 데이터 저장, 수정, 삭제, 취득시 공통 메서드
    	//  저장 - 기본객체명.setAttribute(키, 값) : 해당 값은 Object 타입으로 업캐스팅 처리.
    	//  취득 - 기본객체명.getAttribute(키) : 취득한 값은 해당 타입으로 다운 캐스팅
    	//  수정 - 기본객체명.setAttribute(기존 동일 키 ,상이 값) : 해당 값은 Object 타입으로 업캐스팅 처리.
    	//  삭제 - 기본객체명.removeAttribute(키)
    	
    	//pageContext는 기본객체이기 때문에 따로 선언을 안해줘도 사용가능
    	pageContext.setAttribute("pageMemberInfo", memberInfo);
    	request.setAttribute("reqMemberInfo", memberInfo);
    	session.setAttribute("sesMemberInfo", memberInfo);
    	application.setAttribute("appMemberInfo", memberInfo);
    	 
    	response.sendRedirect(request.getContextPath()+ "/04/redirectRequest2.jsp");
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h3>pageContext 영역 값 획득</h3>
    	아이디 : <%=((MemberVO)pageContext.getAttribute("pageMemberInfo")).getMem_id()%>
    	성명 : <%=((MemberVO)pageContext.getAttribute("pageMemberInfo")).getMem_pass() %>
    	이름 : <%=((MemberVO)pageContext.getAttribute("pageMemberInfo")).getMem_name() %>
    	
    	<h3>request 영역 값 획득</h3>
    	아이디 : <%=((MemberVO)request.getAttribute("reqMemberInfo")).getMem_id()%>
    	성명 : <%=((MemberVO)request.getAttribute("reqMemberInfo")).getMem_pass() %>
    	이름 : <%=((MemberVO)request.getAttribute("reqMemberInfo")).getMem_name() %>
    	
    	<h3>session 영역 값 획득</h3>
    	아이디 : <%=((MemberVO)session.getAttribute("sesMemberInfo")).getMem_id()%>
    	성명 : <%=((MemberVO)session.getAttribute("sesMemberInfo")).getMem_pass() %>
    	이름 : <%=((MemberVO)session.getAttribute("sesMemberInfo")).getMem_name() %>
    	
    	<h3>application 영역 값 획득</h3>
    	아이디 : <%=((MemberVO)application.getAttribute("appMemberInfo")).getMem_id()%>
    	성명 : <%=((MemberVO)application.getAttribute("appMemberInfo")).getMem_pass() %>
    	이름 : <%=((MemberVO)application.getAttribute("appMemberInfo")).getMem_name() %>
    	
    </body>
    </html>

    [redirectRequest2.jsp]

    <%@page import="kr.or.ddit.vo.MemberVO"%>
    <%@ 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">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h3>pageContext 영역 값 획득</h3>
    	    <%
        	MemberVO pageScopeData = (MemberVO)pageContext.getAttribute("pageMemberInfo");
        	if(pageScopeData != null){
        %>
        
    	아이디 : <%=pageScopeData.getMem_id()%>
    	패스워드 : <%=pageScopeData.getMem_pass()%>
    	이름 : <%=pageScopeData.getMem_name()%>
    	<%
    		}
        %>
        <h3>request 영역 값 획득</h3>
        <%
    		MemberVO requestScopeData = (MemberVO)pageContext.getAttribute("reqMemberInfo");
    
        	if(((MemberVO)request.getAttribute("reqMemberInfo")) != null){
        %>
    	
    	아이디 : <%=requestScopeData.getMem_id()%>
    	성명 : <%=requestScopeData.getMem_name()%>
    	이름 : <%=requestScopeData.getMem_name()%>
    	<%
        	}
    	%>
    	<h3>session 영역 값 획득</h3>
    	아이디 : <%=((MemberVO)session.getAttribute("sesMemberInfo")).getMem_id()%>
    	성명 : <%=((MemberVO)session.getAttribute("sesMemberInfo")).getMem_pass() %>
    	이름 : <%=((MemberVO)session.getAttribute("sesMemberInfo")).getMem_name() %>
    	
    	<h3>application 영역 값 획득</h3>
    	아이디 : <%=((MemberVO)application.getAttribute("appMemberInfo")).getMem_id()%>
    	성명 : <%=((MemberVO)application.getAttribute("appMemberInfo")).getMem_pass() %>
    	이름 : <%=((MemberVO)application.getAttribute("appMemberInfo")).getMem_name() %>
    	
    </body>
    </html>

     

    댓글

Designed by Tistory.