Jsp中使用JavaBean
本文介紹如何在Jsp中使用JavaBean

@author:ZJ 07-2-21

1JavaBean元件標準

①實現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中查詢名為nameJavaBean例項。
②若找到,則建立一個名為name、型別為classname的區域性變數,其引用指向該JavaBean;若未找到,則在該scope中建立一個名為name、型別為classnameJavaBean,並建立相應的區域性變數指向它。

 

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>中同時使用paramvalue

 

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 = 1L;

    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 “-//W3C//DTD HTML 4.01 Transitional//EN”>

<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 “-//W3C//DTD HTML 4.01 Transitional//EN”>

<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>