티스토리 뷰

반응형

- request, session, application 내장 객체에 속성을 바인딩한 다른 서블릿이나 JSP 전달할 있다.

- 표현 언어를 사용하면 자바 코드를 사용하지 않고 바인딩된 속성 이름으로 바로 값을 출력할 있다.

 

* forward1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("utf-8");	// request 내장 객체에 바인딩
	request.setAttribute("id","hong");
	request.setAttribute("pwd","1234");
	session.setAttribute("name","홍길동");	// session 내장 객체에 바인딩
	application.setAttribute("email","hong@test.com");	// application 내장 객체에 바인딩
%>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forward1</title>
</head>
<body>
	<jsp:forward page="member1.jsp" />	<!-- member1.jsp로 포워딩 -->
</body>
</html>

 

* member1.jsp

- 첫 번째 방법으로 getAttribute() 메서드에 속성 이름을 인자로 하여 값을 가져온다.

- 두 번째 방법으로 표현 언어에서 자바 코드를 사용하지 않고 바로 속성 이름으로 회원 정보를 가져와 출력한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<%
	request.setCharacterEncoding("utf-8");
	String id = (String)request.getAttribute("id");
	String pwd = (String) request.getAttribute("pwd");
	String name = (String) session.getAttribute("name");
	String email = (String) application.getAttribute("email");
%> 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 출력창</title>
</head>
<body>
	<table align="center" width="100%">
		<tr align="center" bgcolor="#99ccff">
			<td width="20%">아이디</td>
			<td width="20%">비밀번호</td>
			<td width="20%">이름</td>
			<td width="20%">이메일</td>
		</tr>
		<tr align="center">
			<td><%=id %></td>
			<td><%=pwd %></td>
			<td><%=name %></td>
			<td><%=email %></td>
		</tr>
		
		<!-- 표현 언어로 바인딩된 값 출력 -->
		<tr align="center">
			<td>${id }</td>
			<td>${pwd}</td>
			<td>${name}</td>
			<td>${email}</td>
		</tr>
	</table>
</body>
</html>

 

출력 결과

 

객체 바인딩

- 이번에는 MemberBean 객체를 생성하고 속성에 회원 정보를 설정한다. 그리고 request 내장 객체에 속성 이름을 member로, MemberBean 객체를 바인딩한 후 member2.jsp로 포워딩한다.

 

* MemberBean.java

package servlet;

public class MemberBean {
	String id;
	String pwd;
	String name;
	String email;
	
	public MemberBean() {}

	public MemberBean(String id, String pwd, String name, String email) {
		this.id = id;
		this.pwd = pwd;
		this.name = name;
		this.email = email;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

}

 

* forward2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="servlet.MemberBean"%>
<%
	request.setCharacterEncoding("utf-8");
	MemberBean member = new MemberBean("lee","1234","이순신","lee@test.com");
	request.setAttribute("member",member);
%>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forward2</title>
</head>
<body>
	<jsp:forward page="member2.jsp" />
</body>
</html>

 

* member2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<%
	request.setCharacterEncoding("utf-8");
	
%> 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 출력창</title>
</head>
<body>
	<table align="left" width="800">
		<tr align="center" bgcolor="#99ccff">
			<td width="20%">아이디</td>
			<td width="20%">비밀번호</td>
			<td width="20%">이름</td>
			<td width="20%">이메일</td>
		</tr>

		<tr align="center">
			<td>${member.id }</td>
			<td>${member.pwd}</td>
			<td>${member.name}</td>
			<td>${member.email}</td>
		</tr>
	</table>
</body>
</html>

 

- 속성 이름으로만 값 출력이 가능하다.

출력 결과

 

ArrayList 바인딩

* forward3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="servlet.MemberBean, java.util.*"%>
<%
	request.setCharacterEncoding("utf-8");
	List membersList = new ArrayList();
	MemberBean m1 = new MemberBean("lee","1234","이순신","lee@test.com");
	MemberBean m2 = new MemberBean("kim","1234","김유신","kim@test.com");
	membersList.add(m1);
	membersList.add(m2);
	request.setAttribute("membersList",membersList);
%>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forward3</title>
</head>
<body>
	<jsp:forward page="member3.jsp" />
</body>
</html>

 

* member3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<%
	request.setCharacterEncoding("utf-8");
	
%> 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 출력창</title>
</head>
<body>
	<table align="left" width="800">
		<tr align="center" bgcolor="#99ccff">
			<td width="20%">아이디</td>
			<td width="20%">비밀번호</td>
			<td width="20%">이름</td>
			<td width="20%">이메일</td>
		</tr>

		<tr align="center">
			<td>${membersList[0].id }</td>
			<td>${membersList[0].pwd }</td>
			<td>${membersList[0].name }</td>
			<td>${membersList[0].email }</td>
		</tr>
		
		<tr align="center">
			<td>${membersList[1].id }</td>
			<td>${membersList[1].pwd }</td>
			<td>${membersList[1].name }</td>
			<td>${membersList[1].email }</td>
</tr>
	</table>
</body>
</html>

 

- 설정한 속성 이름과 인덱스만으로 리스트 안의 값을 출력할 수 있다.

출력 결과

 

스코프 우선 순위

- request, session, application 내장 객체에서는데이터를 바인딩해서 다른 JSP 전달한다.

- 내장 객체에 바인딩하는 속성 이름이 같은 경우 JSP에서는 각 내장 객체에 지정된 출력 우선순위에 따라 순서대로

속성에 접근한다.

- 내장 객체에 같은 속성 이름으로 바인딩할 때의 출력 우선순위를 알아본다.

 

* forward4.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%
	request.setCharacterEncoding("utf-8");
	request.setAttribute("id","hong");
	request.setAttribute("pwd","1234");
	session.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>

 

* member4.jsp

- member4.jsp 에는 session.setAttribute("address", "수원시")와 같이 키를 address 로 속성을 바인딩한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<%
	request.setCharacterEncoding("utf-8");
	session.setAttribute("address", "수원시");
%> 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 출력창</title>
</head>
<body>
	<table align="left" width="800">
		<tr align="center" bgcolor="#99ccff">
			<td width="20%">아이디</td>
			<td width="20%">비밀번호</td>
			<td width="20%">이름</td>
			<td width="20%">이메일</td>
			<td width="20%">주소</td>
		</tr>

		<tr align="center">
			<td>${id}</td>
			<td>${pwd}</td>
			<td>${name}</td>
			<td>${email}</td>
			<td>${address}</td>
	</tr>
	</table>
</body>
</html>

 

 

출력 결과

- 이번에는 forward4.jsp의 request 객체에 바인딩한 키가 "address"인 부분을 주석 처리하고 다시 확인해 본다.

주석 처리

 

- forward4.jsp 페이지를 다시 확인해 보면 session 객체에 바인딩된 address의 값이 출력된 것을 확인할 수 있다.

session 객체에 바인딩된 주소 값

 

- 표현 언어에서 같은 속성에 대한 우선 순위는 다음과 같다.

page > request > session > application

 

반응형

'JSP' 카테고리의 다른 글

[JSP]JSP 표준 태그 라이브러리(JSTL)  (0) 2024.08.15
[JSP]커스텀 태그  (0) 2024.08.15
[JSP]표현 언어 내장 객체  (0) 2024.08.15
[JSP]표현 언어  (0) 2024.08.15
[JSP]액션태그  (0) 2024.08.14
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함