✔️ 속성(데이터), 변경 이벤트, 객체 직렬화를 위한 표준
public class BeanClassName implements Serializable {
// 값을 저장하는 필드
private String value;
// BeanClassName의 기본 생성자
public BeanClassName() {}
// 필드의 값을 읽어오는 값
public String getValue() {
return value;
}
// 필드의 값을 변경하는 값
public void setValue(String value) {
this.value = value;
}
}
✔️ 자바빈에 저장되는 값
✏️ 읽기 전용 프로퍼티
: get
또는 is
메서드만 존재하는 프로퍼티
✏️ 읽기 / 쓰기 프로퍼티
: get/set
또는 is/set
메서드가 존재하는 프로퍼티
회원 정보를 저장할 때 사용할 자바빈 클래스를 만들어보자.
package kr.ac.green;
import java.util.Date;
public class MemberInfo {
private String id;
private String password;
private String name;
private Date registerDate;
private String email;
public String getId() {
return id;
}
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 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;
}
}
MemberInfo.java 소스 코드를 작성했다면, 명령 프롬프트를 열고 MemberInfo.java 클래스를 컴파일한다.
이때, javac 옵션을 사용하게 된다.
-encoding
: 소스 코드의 인코딩 지정 (UTF-8)
-d
: 컴파일 결과로 생성될 클래스 파일의 위치 지정
: 패키지가 있다면 클래스 파일은 패키지에 맞는 폴더를 생성
-source
: 소스 코드의 자바 버전을 지정
-target
: 클래스 파일이 호환될 자바 버전 지정
-cp
: 컴파일할 때 사용할 클래스패스 지정
✔️ JSP 페이지에서 사용할 자바빈 객체를 지정할 때 사용
✔️ <jsp:useBean id="빈 이름" class="자바빈 클래스 이름" scope="범위" />
id
: JSP 페이지에서 자바빈 객체에 접근할 때 사용할 이름을 지정
: class의 변수
class
: 패키지 이름을 포함한 자바빈 클래스의 완전한 이름을 입력
: 어떤 빈 객체를 쓰는지 알려줘야 되는 것 (형변환)
scope
: 자바빈 객체를 저장할 영역을 지정
: page, request,session, application 중 하나의 값으로 갖음 (기본값: page)
MemberInfo
의 변수 이름 ➡️ member
member
라는 변수를 꺼내는데 그 객체가 MemberInfo
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
// 이름이 member인 객체를 생성해서 request 기본 객체에 저장한다.
<jsp:useBean id="member" scope="request" class="kr.ac.green.MemberInfo" />
<%
// member를 사용하여 객체 접근
member.setId("jipark09");
member.setName("JTI");
%>
<jsp:forward page="useObject.jsp"/>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="member" scope="request" class="kr.ac.green.MemberInfo"/>
<html>
<head>
<title>인사말</title>
<body>
<%= member.getName() %>(<%=member.getId() %>) 회원님<br>
안녕하세요!!
</body>
</head>
</html>
✔️ <jsp:useBean id="빈 이름" type="자바빈 클래스 이름" scope="범위" />
class
속성 대신 type
속성을 사용할 수 있다.MemberInfo member = (MemberInfo)request.getAttribute("member");
if(member == null) {
// 에러 발생
}
✔️ <jsp:setProperty name="자바빈" property="이름" value="값" />
name
: 프로퍼티의 값을 변경할 자바빈 객체의 이름 지정
: <jsp:useBean>의 id 속성에서 지정한 값 사용
property
: 값을 지정할 프로퍼티의 이름 지정
: 해당 클래스의 바꿀 멤버변수
value
: 프로퍼트의 값 지정
: 표현식(<%=..%>)이나 EL(${값}) 사용 가능
: value 속성대신 param 속성 사용 가능
➡️ <jsp:setProperty name="member" property="id" param="memberId"/>
➡️ memberId
의 값을 id
프로퍼티에 저장
<%@page import="kr.ac.green.MemberInfo"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="member" scope="request" class="kr.ac.green.MemberInfo" />
// <jsp:setProperty>를 이용하여 id와 name 값 변경 => setter
<jsp:setProperty name="member" property="id" value="jipark09"/>
<jsp:setProperty name="member" property="name" value="JTI"/>
<jsp:forward page="/useObject.jsp"/>
✔️ 각 프로퍼티의 값을 같은 이름을 갖는 파라미터의 값으로 설정
<jsp:setProperty name="member" property="*" />
✔️ <jsp:getProperty name="자바빈" property="이름" />
name
: <jsp:Bean> 의 id 속성에서 지정한 자바빈 객체의 이름 지정
property
: 출력할 프로퍼티의 이름 지정
💡 회원가입 양식에 값을 입력한 후 [회원가입] 버튼을 누르면 입력한 값을 출력해주는 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="processJoining.jsp" method="post">
<table border="1">
<tr>
<td>ID</td>
<td colspan="3"><input type="text" name="id" size="10"></td>
</tr>
<tr>
<td>Name</td>
<td><input type="text" name="name" size="10"></td>
<td>Email</td>
<td><input type="text" name="email" size="10"></td>
</tr>
<tr>
<td colspan="4" align="center">
<input type="submit" value="회원가입">
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
// MemberInfo 자바빈 클래스의 객체를 생성해서 memberInfo 이름으로 저장
<jsp:useBean id="memberInfo" class="kr.ac.green.MemberInfo"/>
// 파라미터 값을 MemberInfo 자바빈 객체의 프로퍼티 값으로 저장
<jsp:setProperty name="memberInfo" property="*"/>
// memberInfo 자바빈 객체의 password 프로퍼티 값을 memberInfo.getId()와 동일하게 지정한다.
<jsp:setProperty name="memberInfo" property= "password" value="<%= memberInfo.getId() %>"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>가입</title>
</head>
<body>
<table border="1">
<tr>
<td>ID</td>
<td><jsp:getProperty name="memberInfo" property="id"/></td>
<td>password</td>
<td><jsp:getProperty name="memberInfo" property="password"/></td>
</tr>
<tr>
<td>Name</td>
<td><jsp:getProperty name="memberInfo" property="name"/></td>
<td>Email</td>
<td><jsp:getProperty name="memberInfo" property="email"/></td>
</tr>
</table>
</body>
</html>