-
JavaBean <jsp:useBean>,<jspgetProperty>프로그램/JSP 2007. 11. 19. 19:11
JavaBean은 데이터를 표현하는 것을 목적으로 하는 자바클레스이다.
-------------------------------------------------------------
public class BeanClassName implements java.io.Serializable{
/* 값을 저장하는 필드*/
private String value;/* BeanClassName의 기본 생성자 */
BeanClassName(){
}/*필드의 값을 읽어 오는 값*/
public String getValue(){
return value;
}/*필드의 값을 변경하는 값*/
public void setValue(String value){
this.value = value;
}
}
---------------------------------------------------------------
자바빈 규약에 따르는 클레스를 자바빈이라고 부르며,
JSP 프로그래밍에서 사용되는 자바 빈 클레스는 위 예시 코드와 같이
①데이터를 저장하는 필드 , ② 데이터를 읽어 올 때 사용되는 메소드,
③값을 저장할때 사용되는 메소드로 구성된다.
예제 ]
property value type Read/Write
id String 읽기/쓰기
password String 읽기/쓰기
name tring 읽기/쓰기
address String 읽기/쓰기
registerDate String 읽기/쓰기
email String 읽기/쓰기MemberInfo .java
-----------------------------------------------------------------
package madvirus.member;import java.sql.Timestamp;
public class MemberInfo {
private String id;
private String password;
private String name;
private String address;
private Timestamp registerDate;
private String email;
public String getId() {
return id;
}
public void setId(String val) {
this.id = val;
}
public String getPassword() {
return password;
}
public void setPassword(String val) {
this.password = val;
}
public String getName() {
return name;
}
public void setName(String val) {
this.name = val;
}
public String getAddress() {
return address;
}
public void setAddress(String val) {
this.address = val;
}
public Timestamp getRegisterDate() {
return registerDate;
}
public void setRegisterDate(Timestamp val) {
this.registerDate = val;
}
public String getEmail() {
return email;
}
public void setEmail(String val) {
this.email = val;
}
}
-------------------------------------------------------------------
<jsp:useBean> 액션 태그를 사용하여 자바빈 생성하기.
<jsp:useBean> 액션태그는 JSP 페이지에서 사용할 자바빈 객체를 지정해 주는 기능을 한다.
<jsp:useBean id="[빈 이름]" class="[자바빈 클레스 이름]" scope="[범위]" />액션 태그의 각각의 속성은 다음과 같다.
id - JSP 페이지에서 자바빈 객체에 접근할 때 사용할 이름이다.
class - 패키지 이름을 포함한 자바빈 클레스의 완전한 이름이다.
scope - 자바빈 객체가 저장될 영역을 지정한다. page,request,session,application 중
하나를 값으로 갖는다. 기본 값은 page 이다.예를 들어 설명하면
<jsp:useBean id="info" class="madviruse.member.MemberInfo" scope="request" />이것은 MemberInfo 클레스의 객체를 생성해서 이름이 id인 변수에 할당을 한다.
그리고 request기본 객체의 info 속성의 값으로 생성된 객체를 저장한다.MemberInfo info = (MemberInfo)request.getAttribute("info");
if( info == null){
info = new MenberInfo();
request.setAttribute("info", info);
}이것은 <jsp:useBean> 액션 태그에서 중요한 점은 객체를 생성할 뿐만 아니라
지정한 영역에 저장을 한다는 점이다. 그리고 이미 영역에 객체가 존재하고 있는 경우
그 객체를 그대로 사용한다는 것도 중요한 점이다.다음은 <jsp:useBean>을 사용하여 MemberInfo객체를 생성한 후
<isp:forword>를 사용하여 다른 페이지로 흐름을 이동시킨 예이다.
--------------------------------------------------------
<%@ page contentType = "text/html; charset=euc-kr" %>//이름이 member인 MemberInfo 클레스의 객체를 생성해서 request 기본 객체에 저장한다.
<jsp:useBean id="member" scope="request" class="madvirus.member.MemberInfo" />//<jsp:useBean>액션 태그의 id속성에서 지정한 이름은 변수명으로 사용되기 때문에
//스크립트코드에서 이 이름을 사용하여 생성한 객체에 접근할 수 있다.
<%
member.setId("madvirus");
member.setName("빈님");
%>
<jsp:forward page="/useObject.jsp" />
----------------------------------------------------------------------------------------------------------------
<%@ page contentType = "text/html; charset=euc-kr" %>
<jsp:useBean id="member" scope="request"
class="madvirus.member.MemberInfo" />
<html>
<head><title>인사말</title></head>
<body><%= member.getName() %> (<%= member.getId() %>) 회원님
안녕하세요.<jsp:setProperty name="member" property="빈님" value="바뀜"/>
<%= member.getName() %> (<%= member.getId() %>) 회원님 바뀌었습니다.
</body>
</html>
---------------------------------------------------------<jsp:useBean> 액션 태그의 class 속성 대신에 type 속성을 사용할 수도 있다.
---------------------------------------------------------
<jsp:useBean id="member" type="madvirus.member.MemberInfo" scope="request" />
---------------------------------------------------------
만약 type 속성을 사용하면 지정한 영역에 이미 객체가 존재한다고 가정한다.
예를 들어, 위 코드에서는 request 기본 객체의 "member" 속성에
이미 MemberInfo 객체가 존재한다고 가정하고 있으며,
존재하지 않을 경우 새로 MemberInfo 객체를 생성하는 대신 에러를 발생한다.MemberInfo member = (MemberInfo)request.getAttribute("member");
if( member == null){
//에러를 발생시킨다.
}
<jsp:useBean> 액션 태그를 사용해서 객체를 생성하면,
<jsp:setProperty> 액션 태그와 <jsp:getProperty> 액션태그를 사용하여
자바빈 객체의 프로퍼티를 변경하거나 읽어 올 수 있다.
[문법]
<jsp:serProperty name="[자바빈]" property="이름" value="[값]" /><jsp:setProperty> 액션 태그의 각 속성은 다음과 같은 값을 갖는다.
- name : 프로퍼티의 값을 지정할 자바빈 객체의 이름.
<jsp:useBean> 액션태그의 id속성에서 지정한 값을 사용한다.
- property : 값을 지정할 프로퍼티의 이름
- value : 프로퍼티의 값. 표현식을 사용할 수 있다.예를 들어,
자바 빈 객체의 name 프로퍼티의 값을 "최범균"으로 지정하고 싶다면 다음과 같이 지정한다.<jsp:useBean id="member" class="madvirus.member.MemberInfo" />
<jsp:setProperty name="member" property="name" value="최범균" />
value 속성 대신에 param 속성을 사용 할 수도 있다.
param 속성은 파라미터의 값을 프로퍼티의 값으로 지정할때 사용된다.
memberId 파라미터의 값을 자바빈 객체의 id 프로퍼티의 값으로 지정하고 싶다면
다음과 같이 param 속성을 사용하면 된다.
<jsp:setProperty name="member" property="id" param="memberId" />
※ param 과 value 속성은 함께 사용할 수 없다.property 속성의 값을 "*"로 지정하면 각각의 프로퍼티의 값을
같은 이름을 갖는 파라피터의 값으로 설정한다.
<jsp:useBean id="member" class="madvirus.member.MemberInfo" />
<jsp:setProperty name="member" property="*" />
위 코드의 경우 name 파라미터의 값을 name 프로퍼티의 값으로 ,
address 파라미터의 값을 address 프로퍼티 값으로 지정하게 될 것이다.
<jsp:getProperty> 액션 태그는 자바빈 객체의 프로퍼티 값을 출력할 때 사용된다.
[문법]
<jsp:getProperty name="자바빈 이름" property="프로퍼티 이름" />
<jsp:getProperty> 액션 태그의 각 속성은 다음과 같다.
- name : <jsp:useBean> 의 id 속성에서 지정한 자바빈 객체의 이름
- property : 출력할 프로퍼티의 이름
예를 들어, 자바빈 객체의 name 프로퍼티의 값을 출력하려면
<jsp:getProperty name="member" property="name" />
과 같이 쓰면 된다.
예제소스
-------------------------------------------------------------------
<%@ page contentType = "text/html; charset=euc-kr" %>
<html>
<head><title>회원가입 입력 폼</title></head>
<body><form action="<%= request.getContextPath() %>/chap10/register.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>주소</td>
<td colspan="3"><input type="text" name="address" size="30"></td>
</tr>
<tr>
<td colspan="4" align="center">
<input type="submit" value="회원가입">
</td>
</tr>
</table></form>
</body>
</html>
---------------------------------------------------
---------------------------------------------------
<%@ page contentType = "text/html; charset=euc-kr" %>
<%
//읽어올 파라미터의 케릭터 인코딩을 EUC-KR로 지정(한글 처리)
request.setCharacterEncoding("euc-kr");
%>
<!--MemberInfo 자바빈 클레스의 객체를 생성해서 memberInfo 이름으로 지정-->
<jsp:useBean id="memberInfo" class="madvirus.member.MemberInfo" />
<!-- 파라미터의 값을 memberInfo자바빈 객체의 프로퍼티 값으로 저장-->
<jsp:setProperty name="memberInfo" property="*" />
<!-- memberInfo 자바빈 객체의 password 프로퍼티의 값을 memberInfo.getId()와 동일하게 지정.
memberInfo 변수를 사용하여 id프로퍼티에 접근하고 있다 -->
<jsp:setProperty name="memberInfo" property="password"
value="<%= memberInfo.getId() %>" />
<html>
<head><title>가입</title></head>
<body><table width="400" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>아이디</td>
<td><jsp:getProperty name="memberInfo" property="id" /></td>
<td>암호</td>
<td><jsp:getProperty name="memberInfo" property="password" /></td>
</tr>
<tr>
<td>이름</td>
<td><jsp:getProperty name="memberInfo" property="name" /></td>
<td>이메일</td>
<td><jsp:getProperty name="memberInfo" property="email" /></td>
</tr>
<tr>
<td>주소</td>
<td colspan="3">
<jsp:getProperty name="memberInfo" property="address" />
</td>
</tr>
</table></body>
</html>
-------------------------------------------------------'프로그램 > JSP' 카테고리의 다른 글
TOMCAT 참조하는 jar 파일에 대해서... (0) 2007.11.22 package 선언시 javac -d xx yy 컴파일과 useBean에 대해서... (0) 2007.11.20 request.getContextPath() 와 request.getRequestURLI() 의 차이 (0) 2007.11.20 Cookie 처리를 위한 Util Class (0) 2007.11.16 Cookie 객체 (0) 2007.11.16 Tomcat ContextRoot (0) 2007.11.16 jspf란 (1) 2007.11.15