[JSP 3-2] 객체의 사용범위(Scope)

임승현·2022년 12월 9일
0

JSP

목록 보기
8/20

🐧객체의 사용범위(Scope)

JSP 문서에서 생성된 객체를 내장객체의 속성값으로 저장하여 다른 JSP 문서에서 속성값을 반환받아 사용할 수 있는 범위
→ 내장객체에 따라 저장된 속성값의 사용범위가 다르게 설정

📌 page Scope : pageContext 내장객체를 이용하여 객체를 속성값으로 저장
→ 객체를 속성값으로 저장한 JSP 문서에서만 속성값을 객체로 반환받아 사용 가능
🌟 request Scope : request 내장객체를 이용하여 객체를 속성값으로 저장
→ 객체를 속성값으로 저장한 JSP 문서와 스레드가 이동된 JSP 문서에서 속성값을 객체로 반환받아 사용 가능
📌 session Scope : session 내장객체를 이용하여 객체를 속성값으로 저장
→ 같은 세션이 바인딩된 모든 JSP 문서에서 속성값을 객체로 반환받아 사용 가능
📌 application Scope : application Scope 내장객체를 이용하여 객체를 속성값으로 저장
→ 모든 JSP 문서에서 속성값을 객체로 반환받아 사용 가능

📌 내장객체를 이용하여 객체를 속성값으로 저장하는 메소드
→ implicitObject.setAttribute(String attributeName, Object attributeValue)
📌 내장객체에 저장된 속성값을 객체로 반환하는 메소드
→ implicitObject.getAttribute(String attributeName)
📌 내장객체에 저장된 속성값을 삭제하는 메소드
→ implicitObject.removeAttribute(String attributeName)

📃scope.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>객체의 사용범위(Scope)</h1>
	<hr>
	<p>JSP 문서에서 생성된 객체를 내장객체의 속성값으로 저장하여 다른 JSP 문서에서 속성값을 반환받아 사용할 수 있는 범위</p>
	<p>→ 내장객체에 따라 저장된 속성값의 사용범위가 다르게 설정</p>
	<hr>
	<p>page Scope : pageContext 내장객체를 이용하여 객체를 속성값으로 저장</p>
	<p>→ 객체를 속성값으로 저장한 JSP 문서에서만 속성값을 객체로 반환받아 사용 가능</p>
	<p>★request Scope : request 내장객체를 이용하여 객체를 속성값으로 저장</p>
	<p>→ 객체를 속성값으로 저장한 JSP 문서와 스레드가 이동된 JSP 문서에서 속성값을 객체로 반환받아 사용 가능</p>
	<p>session Scope : session 내장객체를 이용하여 객체를 속성값으로 저장</p>
	<p>→ 같은 세션이 바인딩된 모든 JSP 문서에서 속성값을 객체로 반환받아 사용 가능</p>
	<p>application Scope : application Scope 내장객체를 이용하여 객체를 속성값으로 저장</p>
	<p>→ 모든 JSP 문서에서 속성값을 객체로 반환받아 사용 가능</p>
	<hr>
	<p>내장객체를 이용하여 객체를 속성값으로 저장하는 메소드</p>
	<p>→ implicitObject.setAttribute(String attributeName, Object attributeValue)</p>
	<p>내장객체에 저장된 속성값을 객체로 반환하는 메소드</p>
	<p>→ implicitObject.getAttribute(String attributeName)</p>
	<p>내장객체에 저장된 속성값을 삭제하는 메소드</p>
	<p>→ implicitObject.removeAttribute(String attributeName)</p>
	<p></p>
</body>
</html>

🐧Scope 관련 예제

📢 내장객체를 이용하여 객체를 속성값으로 저장
→ 속성명을 이용하여 속성값을 구분 - 내장객체가 다른 경우 같은 이름의 속성명 사용 가능
→ 내장객체에 동일한 속성명이 있는 경우 기존 속성값 대신 새로운 속성값으로 변경

pageContext.setAttribute("pageName", "홍길동");//page Scope
request.setAttribute("requestName", "임꺽정");//request Scope
session.setAttribute("sessionName","전우치");//session Scope
application.setAttribute("applicationName", "일지매");//application Scope

📢 내장객체에 저장된 속성값을 반환받아 저장
→ Object 타입의 객체로 반환하므로 반드시 명시적 객체 형변환 후 사용
→ 매개변수로 전달된 속성명의 속성값이 없는 경우 null 반환

String pageName=(String)pageContext.getAttribute("pageName");
String requestName=(String)request.getAttribute("requestName");
String sessionName=(String)session.getAttribute("sessionName");
String applicationName=(String)application.getAttribute("applicationName");

📃scope_set.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//내장객체를 이용하여 객체를 속성값으로 저장
	//→ 속성명을 이용하여 속성값을 구분 - 내장객체가 다른 경우 같은 이름의 속성명 사용 가능
	//→ 내장객체에 동일한 속성명이 있는 경우 기존 속성값 대신 새로운 속성값으로 변경
	pageContext.setAttribute("pageName", "홍길동");//page Scope
	request.setAttribute("requestName", "임꺽정");//request Scope
	session.setAttribute("sessionName","전우치");//session Scope
	application.setAttribute("applicationName", "일지매");//application Scope
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>객체의 사용범위(Scope)</h1>
	<hr>
	<%
		//내장객체에 저장된 속성값을 반환받아 저장
		//→ Object 타입의 객체로 반환하므로 반드시 명시적 객체 형변환 후 사용
		//→ 매개변수로 전달된 속성명의 속성값이 없는 경우 null 반환
		String pageName=(String)pageContext.getAttribute("pageName");
		String requestName=(String)request.getAttribute("requestName");
		String sessionName=(String)session.getAttribute("sessionName");
		String applicationName=(String)application.getAttribute("applicationName");
	%>
	<p>pagName = <%=pageName %></p>
	<p>requestName = <%=requestName %></p>
	<p>sessionName = <%=sessionName %></p>
	<p>applicationName = <%=applicationName %></p>
</body>
</html>

📃scope_get.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String pageName=(String)pageContext.getAttribute("pageName");
	String requestName=(String)request.getAttribute("requestName");
	String sessionName=(String)session.getAttribute("sessionName");
	String applicationName=(String)application.getAttribute("applicationName");
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>객체의 사용범위(Scope)</h1>
	<hr>
	<p>pagName = <%=pageName %></p>
	<p>requestName = <%=requestName %></p>
	<p>sessionName = <%=sessionName %></p>
	<p>applicationName = <%=applicationName %></p>
</body>
</html>

0개의 댓글