1) class 속성
package chap08.member;
import java.util.Date;
public class MemberInfo {
//1) 데이터를 저장하는 필드
private String id;
private String password;
private String name;
private String address;
private Date registerDate;
private String email;
//2) 데이터를 읽어올 때 사용되는 getter 메서드
public String getId() {
return id;
}
//3) 값을 저장할 때 사용되는 setter 메서드
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getRegisterDate() {
return registerDate;
}
public void setRegisterDate(Date registerDate) {
this.registerDate = registerDate;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!--
jsp:useBean 액션 태그는 JSP 페이지에서 사용할 자바빈 객체를 지정할 때 사용함
1) id : 빈 (bean)이름. JSP 페이지에서 자바빈 객체에 접근할 때 사용할 이름
2) scope : 자바빈 객체를 저장할 영역. page(default), request, session, application
3) class : 자바빈 클래스의 완전한 이름 입력(패키지 이름 포함)
-->
<jsp:useBean id="member" scope="request" class="chap08.member.MemberInfo" />
<%
//jsp:useBean 액션 태그의 id 속성에 지정한 이름을 변수명으로 사용함
member.setId("ddit");
member.setName("개똥이");
%>
<!-- useObject.jsp 페이지로 요청 흐름을 이동시킴 -->
<jsp:forward page="/chapter08/useObject.jsp"/>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="member" scope="request" class="chap08.member.MemberInfo"/>
<!DOCTYPE html>
<html>
<head>
<title>인사말</title>
</head>
<body>
<%=member.getName()%> (<%=member.getId() %>) 회원님 <br>
안녕하세요!
</body>
</html>
- useObject.jsp 의 jsp:useBean을 type으로 했을경우
1) makeObject.jsp의 포워딩을 통해 useObject.jsp로 들어간경우
2) 경로에 검색하여 useobject.jsp로 바로 들어간 경우
- useObject.jsp 의 jsp:useBean을 class로 했을경우
1) makeObject.jsp의 포워딩을 통해 useObject.jsp로 들어간경우
2) 경로에 검색하여 useobject.jsp로 바로 들어간 경우
결과
- class일 경우, useObject.jsp를 경로에 쳐서 바로 들어가면 새로운 useBean이 생성되고, 아직 set해주기 전이므로 null이 됨
- type일 경우, useObject.jsp를 경로에 쳐서 바로 들어가도 객체를 생성시키지 않으므로 에러를 발생시킴
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 입력폼</title>
</head>
<body>
<form action="/chapter08/processJoining.jsp" method="post">
<table border="1" style="width: 50%;">
<tr>
<th>아이디</th>
<td colspan="3">
<input type="text" name="id" size="10" placeholder="아이디를 입력해주세요">
</td>
</tr>
<tr>
<th>이름</th>
<td>
<input type="text" name="name" size="10" placeholder="이름을 입력해주세요">
</td>
<th>이메일</th>
<td>
<input type="text" name="email" size="10" placeholder="이메일을 입력해주세요">
</td>
</tr>
<tr>
<td colspan="4" style="text-align: center;">
<input type="submit" value="회원가입">
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
//읽어올 파라미터의 캐릭터 인코딩을 UTF-8로지정함
request.setCharacterEncoding("UTF-8");
%>
<!-- MemberInfo 자바빈 클래스의 객체를 생성. memberInfo 이름으로 저장 -->
<jsp:useBean id="memberInfo" class="chap08.member.MemberInfo" />
<!-- 파라미터 값을 memberInfo 자바빈 객체의 프로퍼티 값으로 저장 -->
<jsp:setProperty name="memberInfo" property="*" />
<%
// memberInfo.setId(request.getParameter("id"));
// memberInfo.setName(request.getParameter("name"));
// memberInfo.setEmail(request.getParameter("email"));
%>
<!DOCTYPE html>
<html>
<head>
<title>회원 가입</title>
</head>
<body>
<table border="1" style="width: 50%;">
<tr>
<th>아이디</th>
<td colspan="3">
<!-- setProperty한 값 가져올 수 있음 -->
<%
out.print(memberInfo.getId()); //jsp액션태그와 동일한 의미
%>
<jsp:getProperty name="memberInfo" property="id" />
</td>
</tr>
<tr>
<th>이름</th>
<td>
<%
out.print(memberInfo.getName()); //jsp액션태그와 동일한 의미
%>
<jsp:getProperty name="memberInfo" property="name" />
</td>
<th>이메일</th>
<td>
<%
out.print(memberInfo.getEmail()); //jsp액션태그와 동일한 의미
%>
<jsp:getProperty name="memberInfo" property="email" />
</td>
</tr>
</table>
</body>
</html>
- membershipForm.jsp에서 아이디, 이름, 이메일 입력 후 회원가입 버튼 클릭
- jsp:useBean을 통해 생성한 객체를 jsp:setProperty를 통해 전송된 파라미터 값을 자바빈 객체의 property 값으로 지정 => jsp:getProperty를 통해 저장한 값 가져옴