#자바 빈(JavaBeans), <jsp:useBean> 액션 태그 사용법
#자바 빈(JavaBeans)
-속성(데이터), 변경 이벤트, 객체 직렬화를 위한 표준입니다.
-Java 언어의 데이터(속성)와 기능(메서드)으로 이루어진 클래스이다.
-반복적인 작업을 효율적으로 하기 위해 빈을 사용한다.
-디자인 부분과 비즈니스 로직 부분을 분리하고, 복잡한 JSP코드들을 줄이고,
프로그램의 재사용성을 증가시키기 위해서 사용한다.
-사용법
1. 멤버 변수는 private + getter/setter로 작성해야 한다.
2. 기본 생성자가 필요하다
3. Serializable는 객체 직렬화할 때 필요하다.
#<jsp:useBean> 액션 태그
-데이터를 업데이트(수정)하고, 읽어오는 역할을 한다.
<jsp:useBean id="id" class="classPath.Bean" scope="session" />
id : 자바빈즈를 식별하기 위한 이름이다.
class : 패키지 이름을 포함한 자바빈즈 이름이다. (인수 없는 기본 생성자가 필요하며 추상 클래스는 사용할 수없다.
scope : 자바빈즈가 저장되는 영역이다.
Scope
-page : 생성된 페이지 내에서만 사용 가능하다. (기본값), 페이지가 바뀌면 빈 객체가 공유 유지가 되지 않는다.
-request : request요청을 받고 처리를 완료할 때까지 생존되는 scope이다.
-session : 클라이언트당 하나씩 할당되는 영역이다. 클라이언트가 브라우저를 종료하기 전까지 유지된다.
-application : 사이트 전체의 범위를 가지며, 서버가 종료되기 전까지 계속 유지된다.
예제1)
-결과 화면
1.MemberInfo.java
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 MemberInfo() {
}
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;
}
}
2.makeObject.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<jsp:useBean id="member" scope="request" class="kr.ac.green.MemberInfo" />
<%
member.setId("hero");
member.setName("Jeff");
%>
<jsp:forward page="/useObject.jsp" />
3.useObject.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<jsp:useBean id="member" scope="request" class="kr.ac.green.MemberInfo" />
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%=member.getName() %>(<%=member.getId() %>) 회원님 안녕하세요.
</body>
</html>
#<jsp:setProperty> 액션 태그와 <jsp:getProperty> 액션 태그
#<jsp:setProperty>
-업데이트(수정)
-데이터 값을 설정할 때 사용한다.
-속성
<jsp:setProperty name="member" property="id" value="hong" />
name : 자바빈즈 식별자이다.
property : 자바빈즈 프로퍼티 이름이다. (객체의 멤버변수)
property *표시 : 멤버변수와 이름이 같은 파라미터가 있으면 전부 매치를 시켜준다
value : 변경할 자바빈즈의 프로퍼티 값이다.
param : 자바빈즈의 프로퍼티 값을 전달하는 요청 파라미터의 이름이다. (value와 동시에 사용이 불가능하다.)
#<jsp:getProperty>
-읽기
-데이터 값을 가져올 때 사용한다.
-속성
<jsp:getProperty name="member" property="name />
name : 자바빈즈 식별자이다.
property : 자바빈즈 프로퍼티 이름이다.
예제2)
-시작 화면
-결과 화면
1.membershipForm.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="processJoining.jsp" method="post">
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td>아이디</td>
<td colspan="3"><input type="text" name="id" size="10"></td>
</tr>
<tr>
<td>이름</td>
<td><input type="text" name="name" size="10"></td>
<td>이메일</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>
2.processJoining.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
request.setCharacterEncoding("euc_kr");
%>
<jsp:useBean id="memberInfo" class="kr.ac.green.MemberInfo" />
<jsp:setProperty name="memberInfo" property="*" />
<jsp:setProperty name="memberInfo" property="password" value="<%= memberInfo.getId() %>" />
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<table width="400" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>아이디</td>
<td><jsp:getProperty property="id" name="memberInfo"/></td>
<td>암호</td>
<td><jsp:getProperty property="password" name="memberInfo"/></td>
</tr>
<tr>
<td>이름</td>
<td><jsp:getProperty property="name" name="memberInfo"/></td>
<td>이메일</td>
<td><jsp:getProperty property="email" name="memberInfo"/></td>
</tr>
</table>
</body>
</html>
'IT > JSP' 카테고리의 다른 글
[JSP] - 28. Session(세션) 사용 방법(쿠키vs세션 차이점) (0) | 2020.07.28 |
---|---|
[JSP] - 27. Cookie(쿠키) [생성, 추가, 삭제] 하는 방법 (0) | 2020.07.27 |
[JSP] - 25. <jsp:forward> 액션 태그 사용법 (0) | 2020.07.25 |
[JSP] - 24. include 디렉티브 사용법 (0) | 2020.07.25 |
[JSP] - 23. <jsp:param> 액션 태그 사용법 (0) | 2020.07.25 |
댓글