티스토리 뷰
- 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의 값이 출력된 것을 확인할 수 있다.
- 표현 언어에서 같은 속성에 대한 우선 순위는 다음과 같다.
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
- Spring
- 제이쿼리
- CSS 속성
- Network
- Java Server Page
- Redux
- HTML
- 미들웨어
- Servlet
- 서브넷팅
- CSS
- JSP
- react
- javaserverpage
- 서블릿
- FMT
- Binding
- script element
- 리액트
- html css
- Cookie
- 네트워크
- a 태그
- httpServletRequest
- 스프링
- el
- Session
- nodejs
- 세션
- 내장객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |