프로그래밍 언어/자바 웹

스코프 우선순위

· 코딩마이데이

request, session, application 내장 객체에서는 데이터를 바인딩해서 다른 JSP로 전달합니다. 그런데 각 내장 객체에 바인딩하는 속성 이름이 같은 경우 JSP에서는 각 내장 객체에 지정된 출력 우선순위에 따라 순서대로 속성에 접근합니다. 이번에는 각 내장 객체에 같은 속성 이름으로 바인딩할 떄의 출력 우선순위를 알아보겠습니다.

1. forward4.jsp를 다음과 같이 작성합니다. request에 address를 바인딩한 후 다시 member4.jsp로 포워딩합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<%
	request.setCharacterEncoding("utf-8");
	request.setAttribute("id", "hong");
	request.setAttribute("pwd", "1234");
	request.setAttribute("name", "홍길동");
	application.setAttribute("email", "hong@test.com");
	request.setAttribute("address", "서울시 강남구");
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>forward4</title>
</head>
<body>
	<jsp:forward page="member4.jsp"/>
</body>
</html>

 

2. member4.jsp를 다음과 같이 작성합니다. session에 다시 동일한 속성 이름 address를 바인딩합니다. 만약 표현 언어로 address 값을 출력하면 session보다 request가 우선선위가 높으므로 request의 address 값이 출력됩니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<%
	session.setAttribute("address", "수원시 팔달구");
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 정보 출력창</title>
</head>
<body>
	<table border="1" align="center"   >
	   <tr align="center"  bgcolor="#99ccff">
	      <td width="7%"><b>아이디</b></td>
	      <td width="7%"><b>비밀번호</b></td>
	      <td width="5%" ><b>이름</b></td>
	      <td width="5%"><b>이메일</b></td>
	      <td width="5%" ><b>주소</b></td>
	   <tr>
	   <tr align="center">
	       <td>${id } </td>
	       <td>${pwd } </td>
	       <td>${name } </td>
	       <td>${email }</td>
	       <td>${address }</td>
	    </tr>
	</table>
</body>
</html>

 

3. http://localhost:8090/pro14/test02/forward4.jsp로 요청합니다. 주소를 보낸 request에 바인딩된 값이 출력된 것을 알 수 있습니다.

실행 결과

 

4. 이번에는 forward4.jsp와 request에 바인딩하는 부분을 주석 처리합니다.

request에 바인딩 부분 주석 처리

 

5. 다시 회원 가입 창에서 가입하기를 클릭하면 다음과 같이 session에서 바인딩한 주소가 출력된다는 것을 확인할 수 있습니다,

session의 바인딩 값 출력

 

6. 표현 언어에서 동일한 속성 이름에 접근할 경우 page 객체의 속성이 우선순위가 가장 높습니다. 표현 언어에서 같은 속성에 대한 우선순위는 다음과 같습니다.

page > request > session > application