Jsp:使用JavaBean

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\request\session\application」}/>
執行過程:
①在指定的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 "-//W 3C //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 "-//W 3C //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>
相關文章
相關標籤/搜索