656
技術社區[雲棲]
JavaBean的應用
|
舉例: 首先聲明JavaBen的對象,並使用無參數構造方法進行實例化。 UserBean user=new UserBean(); 接著調用setUsername和setUserpass方法對兩個屬性 賦值: user. setUsername(username); user. setUserpass(userpass); |
1.<jsp:JavaBean>標簽
<jsp;javaBean>標簽的作用就是聲明一個對象,如果這個對象已經存在,就查找到這個對象;如果這個對象不存在,那麼則創建一個對象。它與 UserBean user=new UserBean();的作用相似。
語法格式:
<jsp:javaBean scope="作用範圍" />
id屬性是指出定義的對象的名字,這個名字應該符合java的變量命名規範。class屬性指出這個變量的類型,應該是類的完整的類型,包含類的包信息。scope屬性指出這個變量的作用範圍,有四種:page、request、session、appliction。通常我們定義的變量僅僅在本次的請求中使用,所以通常使用request。如果僅僅在當前頁麵中使用,可以使用page、如果要共享,可以使用session和application,session是對瀏覽器起作用,application是對整個web起作用。
這個標簽會使用class指定的類創建一個對象,對象的名字就是屬性id,對象的作用範圍是scope屬性指定的作用範圍。
(理解這句話很重要,以前沒有注意到,也就沒搞明白。現在恍然了,原來是這樣的。)
|
要想創建一個UserBean的對象,需要知道完整的額類名、對象的名字和對象的作用範圍。這裏的類名是bean.UserBean,對象的名字是user,作用範圍是本次請求,所以使用<jsp;useBean>改寫後的代碼如下:
<jsp:javaBean scope="request" /> |
2.<jsp:setProperty>標簽
<jsp:setProperty>標簽用於對JavaBean的屬性賦值,可以對某個JavaBean的某個屬性賦值,也可以對JavaBean的所有屬性賦值。它與直接調用setUsername
和setUserpass的作用是相同的。
<jsp:setProperty>標簽的基本格式如下:
<jsp:setProperty name = "JavaBean的名字" property = "屬性的名字"
[value = "值" [param="表單元素的名字"]/]>
要為某個JavaBean的某個屬性賦值,需要知道為哪個JavaBean的哪個屬性賦值,以及賦什麼值。name屬性指出要對哪個JavaBean賦值,該JavaBean應該是已經存在的JavaBean。property屬性指出要為JavaBean的哪個屬性賦值,應該是JavaBean的某個屬性名字。value或者param指出要賦什麼樣的值。value直接指出值,param指出使用用戶的表單請求數據中表單元素的名字。
|
要為前麵聲明的JavaBean對象user的username屬性賦值lixucheng,可以使用下麵的代碼: <jsp:setProperty name="user" property="username" value="lixucheng"/> |
value的值可以使用表達式語言EL(詳細參看EL教程),這樣就可以使用前麵定義好的信息。假設在request中已經存在保存用戶名的username變量,可以寫成這樣:
<jsp:setProperty name="user" property="username" value="${username}"/>
如果這個值是來自表單請求信息中的表單元素username,則可以寫成下麵在這樣:
<jsp:setProperty name="user" property="username" value="${param.username}"/>
如果要賦的值來源與請求表單元素,還可以寫成這樣:
<jsp:setProperty name="user" property="username" param="username"/>
如果表單元素的名字和要賦值的屬性的名字相同,則可以省略param屬性(效果是相同的):
<jsp:setProperty name="user" property="username" />
也就是說,如果沒有給定值,係統會查看請求表單元素,看有沒有與當前要賦值的屬性名字相同的,如果有,則獲取這個表單元素的值,然後給JavaBean的屬性賦值。
想要為JavaBean的userpass屬性賦值,可以使用下麵的代碼:
<jsp:setProperty name="user" property="username" />
這時分別從表單獲取用戶名和口令,然後分別對java的屬性 username和 userpass進行賦值。在這樣的情況下,兩個賦值語句可以寫在一起;
<jsp:setProperty name="user" property="*" >
該語句表示為user的所有屬性賦值。
綜上所述,<jsp:setProperty>標簽存在以下4種形式:
- <jsp:setProperty name="JavaBean 的名字" property="屬性的名字" value="值"/>
- <jsp:setProperty name="JavaBean 的名字" property="屬性的名字" param="表單元素的名字"/>
- <jsp:setProperty name="JavaBean 的名字" property="屬性的名字" />
- <jsp:setProperty name="JavaBean 的名字" property="*"/>
3.使用<jsp:getProperty>標簽
<jsp:getProperty>表簽用於獲取JavaBean的屬性的值,並顯示在相應的位置上,其作用與調用getUsername 和 getUserpass 的作用是相同的。
<jsp:getProperty>標簽的基本格式如下:
<jsp:getProperty name="JavaBean的名字" property="屬性的名字" />
name屬性指定要獲取哪個JavaBean的屬性,這個JavaBean硬挨是一個已經存在的JavaBean。property屬性指定獲取JavaBean的哪個屬性,是JavaBean的屬性的名字。要想獲取username的值,可以使用下麵的代碼:
<jsp:getProperty name="user" property="username" />
${user.username}
下麵給一個實例【JSP+JavaBean】:
一個注冊表單的信息,注冊成功後顯示在另個表單中。中間通過JavaBean實現。
//inde.jsp
<%@ page language="java" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"/>
<title>應用EL表達式訪問JavaBean的屬性</title>
<link rel="stylesheet" type="text/css" href="CSS/style.css">
</head>
<body><form name="form1" method="post" action="deal.jsp">
<table width="403" height="230" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#666666">
<tr>
<td height="30" colspan="2" bgcolor="#EFEFEF">用戶注冊</td>
</tr>
<tr>
<td width="88" align="center" bgcolor="#FFFFFF">用 戶 名:</td>
<td width="359" bgcolor="#FFFFFF"><input name="username" type="text" ></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">密 碼:</td>
<td bgcolor="#FFFFFF"><input name="pwd" type="password" ></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">確認密碼:</td>
<td bgcolor="#FFFFFF"><input name="repwd" type="password" ></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">性 別:</td>
<td bgcolor="#FFFFFF"><input name="sex" type="radio" value="男">
男
<input name="sex" type="radio" value="女">
女</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">愛 好:</td>
<td bgcolor="#FFFFFF"><input name="affect" type="checkbox" value="體育">體育
<input name="affect" type="checkbox" value="美術">美術
<input name="affect" type="checkbox" value="音樂">音樂
<input name="affect" type="checkbox" value="旅遊">旅遊
</td>
</tr>
<tr>
<td colspan="2" align="center" bgcolor="#FFFFFF">
<input name="Submit" type="submit" value="提交">
<input name="Submit2" type="reset" value="重置">
</td>
</tr>
</table>
</form>
</body>
</html>
//WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="https://java.sun.com/xml/ns/javaee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://java.sun.com/xml/ns/javaee
https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
//deal.jsp
<%@ page language="java" pageEncoding="GBK"%>
<%request.setCharacterEncoding("GBK");%>
<jsp:useBean scope="page"/>
<jsp:setProperty name="userForm" property="*"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>應用EL表達式訪問JavaBean的屬性</title>
<link rel="stylesheet" type="text/css" href="CSS/style.css">
</head>
<body>
<table width="403" height="218" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#666666">
<tr>
<td height="30" colspan="2" bgcolor="#EFEFEF">顯示用戶填寫的注冊信息</td>
</tr>
<tr>
<td width="88" align="center" bgcolor="#FFFFFF">用 戶 名:</td>
<td width="359" bgcolor="#FFFFFF"> ${userForm.username}</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">密 碼:</td>
<td bgcolor="#FFFFFF"> ${userForm.pwd}</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">性 別:</td>
<td bgcolor="#FFFFFF"> ${userForm.sex}</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">愛 好:</td>
<td bgcolor="#FFFFFF"> ${userForm.affect[0]} ${userForm.affect[1]} ${userForm.affect[2]} ${userForm.affect[3]}</td>
</tr>
<tr>
<td colspan="2" align="center" bgcolor="#FFFFFF">
<input name="Button" type="button" value="返回" onClick="window.location.href='index.jsp'">
</td>
</tr>
</table>
</body>
</html>
//UserForm.java
package com.wgh;
public class UserForm {
private String username=""; //用戶名屬性
private String pwd=""; //密碼屬性
private String sex=""; //性別屬性
private String[] affect=null; //愛好屬性
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPwd() {
return pwd;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
public void setAffect(String[] affect) {
this.affect = affect;
}
public String[] getAffect() {
return affect;
}
}
本文僅供學習參考!
最後更新:2017-04-03 14:54:15