-
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>