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