閱讀656 返回首頁    go 技術社區[雲棲]


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

  上一篇:go [Qt教程] 第44篇 進階(四)信號和槽
  下一篇:go PHP PDO 封裝 成靜態類