Jsp:使用JavaBean

Jsp 中使用 JavaBean
本文介绍如何在Jsp 中使用JavaBean
@author:ZJ 07-2-21
Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]
1 JavaBean 组件标准
①实现 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 中查找名为 name JavaBean 实例。
②若找到,则创建一个名为 name 、类型为 classname 的局部变量,其引用指向该 JavaBean ;若未找到,则在该 scope 中创建一个名为 name 、类型为 classname JavaBean ,并创建相应的局部变量指向它。
 
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> 中同时使用 param value
 
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 >
 

你可能感兴趣的:(java,jsp,javabean)