Jsp中使用JavaBean
本文介紹如何在Jsp中使用JavaBean。
@author:ZJ 07-2-21
1.JavaBean元件標準
①實現java.io.Serializable介面
②提供無引數的構造方法
③提供getter()和setter()方法訪問它的屬性
2.在JSP中使用JavaBean
JSP規範中定義了<jsp:useBean>、<jsp:setProperty>、<jsp:useProperty>來建立對JavaBean的引用並讀取/設定JavaBean的屬性值。
2.1 <jsp:useBean>
<jsp:useBean id=”name” class=”classname”
scope={“page equestsessionapplication”}/> |
執行過程:
①在指定的scope中查詢名為name的JavaBean例項。
②若找到,則建立一個名為name、型別為classname的區域性變數,其引用指向該JavaBean;若未找到,則在該scope中建立一個名為name、型別為classname的JavaBean,並建立相應的區域性變數指向它。
2.2<jsp:setProperty>
<jsp:setProperty name=”beanName”
propertyDetails/> |
其中:
①name=”beanName”是必選屬性。其值為Bean的名稱,在這之前用jsp:useBean引入的id。
例:
<jsp:useBean id=”usersession” scope=”session”
class=”com.user.UserSession”> <jsp:setProperty name=”usersession”
property=”name” value=”Tom”/> </jsp:useBean>
|
②propertyDetails可以通過四種不同的方法來指定屬性的資訊。
[1]property=”*”
這是一種設定Bean屬性的快捷方式,在Bean中,屬性的名稱、型別必須和request物件中的引數名稱相匹配。如果request物件的屬性值中有空值,那麼對應的Bean屬性將不會設定任何值。同樣,如果Bean中有一個屬性沒有與之對應的request引數值,那麼這個屬性同樣不會設定。使用property=”*”,Bean的屬性不用按HTML表單中的順序排序。
[2]property=”propertyName”
使用request中的一個引數值來指定Bean中的一個屬性值。這裡,property指定Bean的屬性名,而且Bean屬性和request引數的名稱應相同。如果request物件的引數值中有空值,那麼對應的Bean屬性將不會被設定任何值。
[3]property=”propertyName” param=”parameterName”
在Bean屬性的名稱和request中引數的名稱不同時可以使用這個方法。Param指定request中的引數名。如果request物件的引數值中有空值,那麼對應的Bean屬性將不會被設定任何值
[4]property=”propertyName” value=”propertyValue”
value是一個可選屬性,它使用指定的值來設定Bean的屬性。如果引數值為空,那麼對應的屬性值也不會被設定。不能在一個<jsp:setProperty>中同時使用param和value。
2.3 <jsp:getProperty>
<jsp:getProperty>操作是對<jsp:setProperty>操作的補充,它用來訪問一個Bean屬性。
<jsp:getProperty name=”beanName”
propertry=”propertyName”/> |
①name=”beanName”是必選屬性。其值為Bean的名稱,在這之前用jsp:useBean引入的id。
例:
<jsp:useBean id=”usersession” scope=”session”
class=”com.user.UserSession”> <jsp:getProperty name=”usersession”
property=”name” /> </jsp:useBean>
|
②property=”propertyName”是一個必選屬性。其值為所指定的Bean的屬性名。
3.註冊例項1,使用property=”*”
UserBean.java
package com.zj.sample;
import java.io.Serializable;
/**
* Create a JavaBean
*/
public class UserBean implements Serializable {
private static final long serialVersionUID =
public String userName;
public String password;
public int age;
public UserBean() {}
public void setUserName(String name) {
this.userName = name;
}
public void setPassword(String password)
{ this.password = password;
}
public void setAge(int age) {
this.age = age;
}
public String getUserName() {
return this.userName;
}
public String getPassword() {
return this.password;
}
public int getAge() {
return this.age;
}
}
|
reg.html
<html>
<head>
<meta http-equiv=“Content-Type”
content=“text/html; charset=GB18030”> <title>Reg</title>
</head>
<body>
User Info:<br><hr>
<form method=“get”
action=“reg.jsp”> <table>
// name=”userName”對應UserBean屬性
<tr><td>Name:<input name=“userName”
type=“text”></td></tr> //name=”password”對應UserBean屬性
<tr><td>Password:<input name=“password” type=“password”></td></tr>
//name=”age”對應UserBean屬性
<tr><td>Age:<input name=“age”
type=“text”></td></tr> <tr><td><input type=“submit” value=“submit”></td></tr>
</table>
</form>
</body>
</html>
|
reg.jsp
<%@
page language=“java” contentType=“text/html; charset=GB18030” pageEncoding=“GB18030”%>
<!DOCTYPE HTML PUBLIC “-//W
<jsp:useBean id=“user” scope=“page” class=“com.zj.sample.UserBean” />
<jsp:setProperty name=“user”
property=“*” />//使用property=”*”
<html>
<head>
<meta http-equiv=“Content-Type”
content=“text/html; charset=GB18030”> <title>Show Info</title>
</head>
<body>
Reg successful!
// property=”userName”對應UserBean屬性
<br><jsp:getProperty name=“user”
property=“userName” /> // property=”password”對應UserBean屬性
<br><jsp:getProperty name=“user”
property=“password” /> // property=”age”對應UserBean屬性
<br><jsp:getProperty name=“user”
property=“age” /> <br>
</body>
</html>
|
4.註冊例項2,使用param=”parameterName”
UserBean.java與上例相同
reg2.html
<html>
<head>
<meta http-equiv=“Content-Type”
content=“text/html; charset=GB18030”> <title>Reg</title>
</head>
<body>
User Info:<br><hr>
<form method=“get”
action=“reg2.jsp”> <table>
<tr><td>Name:<input name=“USERNAME”
type=“text”></td></tr> <tr><td>Password:<input name=“PASSWORD”
type=“password”></td></tr> <tr><td>Age:<input name=“AGE”
type=“text”></td></tr> <tr><td><input type=“submit” value=“submit”></td></tr>
</table>
</form>
</body>
</html>
|
reg2.jsp
<%@
page language=“java” contentType=“text/html; charset=GB18030” pageEncoding=“GB18030”%>
<!DOCTYPE HTML PUBLIC “-//W
<jsp:useBean id=“user” scope=“page” class=“com.zj.sample.UserBean”/>
//
property=”userName”對應UserBean屬性,param=”USERNAME”對應表單屬性 <jsp:setProperty name=“user”
property=“userName” param=“USERNAME”/> //
property=”password”對應UserBean屬性,param=”PASSWORD”對應表單屬性 <jsp:setProperty name=“user”
property=“password” param=“PASSWORD”/> //
property=”age”對應UserBean屬性,param=”AGE”對應表單屬性 <jsp:setProperty name=“user”
property=“age” param=“AGE”/> <html>
<head>
<meta http-equiv=“Content-Type”
content=“text/html; charset=GB18030”> <title>Show Info</title>
</head>
<body>
Reg successful!<br>
//
property=”userName”對應UserBean屬性 Name:<jsp:getProperty name=“user”
property=“userName”/><br> // property=”password”對應UserBean屬性
Password:<jsp:getProperty name=“user”
property=“password”/><br> //
property=”age”對應UserBean屬性 Age:<jsp:getProperty name=“user”
property=“age”/><br> </body>
</html>
|