JSP中的JavaBean的一些简单用法

1.JavaBean组件的作用是提高了代码的复用率,将页面的现实逻辑和业务逻辑区分开,使得HTML开发人员和java程序员能够分开工作。
2.JavaBean组件本身就是一个类,只不过一个标准的JavaBean组件有几个特征而已。
(1)它是一个公开的(public)类。
(2)它必须有一个默认的构造办法。即没带参数的构造办法。
(3)它提供公有的getXXX()和setXXX()办法给外部程序获取JavaBean的属性值。
但可以屏蔽一些getXXX()和setXXX()办法。即有些属性可以是只读或只写。对于
Boolean属性对于的办法应该是is/set。
(4)索引属性是指获取和设置数组时使用的属性。要运用索引属性,需要提供两对
get/set办法,一对用于数组,另一对用于数组中的元素。
3.JavaBean的一个例子

public class Person{ 
 private String name; 
 private int age; 
 private boolean married=false; 
 private String[] interest; 

 public String getName(){ 
 return name; 
 } 
 public void setName(String name){ 

 this.name=name; 

 } 


 public int getAge(){ 

 return age; 

 } 

 public void setAge(int age){ 

 this.age=age; 

 } 


 public boolean isMarried(){ 

 return married; 

 } 

 public void setMarried(boolean married){ 

 this.married=married; 

 } 


 public String[] getInterest(){ 

 return this.interest; 

 } 

 public void setInterest(String[] interest){ 

 this.interest=interest; 

 } 

 public String getInterest(int i){ 

 return this.interest[i]; 

 } 

 public void setInterest(int i,String newInterest){ 

 interest[i]=newInterest; 

 } 

 }


4.如何在JSP中使用JavaBean
JSP中提供了3个动作元素来访问JavaBean,分别是<jsp:useBean>,<jsp:setProperty>和<jsp:getProperty>

4.1<jsp:useBean>动作语法如下:
<jsp:useBean id="idName" scope="page/request/session/application" typeSpec />
其中的typeSpec的定义如下:
typeSpec::=class="className" type="typeName" |
type="typeName" class="className" |
beanName="beanName" type="typeName" |
type="typeName" beanName="beanName" |
type="typeName"
其中的各个属性的含义如下:
id:用于标记JavaBean的名字。
scope:指定JavaBean的范围。
class:JavaBean的完整限定类名。
beanName:指定bean的名字。该名字提供给java.beans.Beas类的instantiate()办法,实
例化一个JavaBean。
type:指定定义的脚本变量的类型。该属性默认值和class属性的值一样。可以使bean本
身,父类或有bean类提供的接口。

4.2<jsp:setProperty>
该动作与<jsp:useBean>一起,用来设置javaBean的简单属性和索引属性。该动作将调用
JavaBean中的setXXX办法,为该JavaBean类设置属性。
<jsp:setProperty>动作语法如下:
<jsp:setProperty name="beanName" prop_expr />
其中,prop_expr的定义如下:
prop_expr ::=property="*" |
property="propertyName" param="parameterName"
property="propertyName" value="propertyValue"

其中各个属性的含义如下:
name:实例的名字,它必须是已经在<jsp:useBean>元素中通过id属性定义的名字。
property设置属性的名字。如果是"*"表示请求参数传递过来的名字和JavaBean的名字是
一样的。
param请求参数的名字。
value:JavaBean的值。不能与param同时使用。

4.3<jsp:getProperty>
<jsp:getProperty>用来访问一个bean的属性。并把属性的值转化成一个String。如果属
性是一个对象,将调用对象的toString()办法。
该动作元素的语法如下:
<jsp:getProperty name="name" property="propertyName">
其中,各个属性的含义为:
name:JavaBean的名字。
property要得到的属性名字。该属性必须在JavaBean中时可读的属性。

5.实例。
下面将结合上述进行一个简单的例子。

5.1javaBean类:

package com.havy.bean; 

 public class PersonBean implements java.io.Serializable{ 

 private static final long serialVersionUID = -4301923149579270947L; 


 private String name; 

 private int sex; 

 private boolean married=false; 

 private String[] interest; 


 public String getName() { 

 return name; 

 } 

 public void setName(String name) { 

 this.name = name; 

 } 

 public int getSex() { 

 return sex; 

 } 

 public void setSex(int sex) { 

 this.sex = sex; 

 } 

 public boolean isMarried() { 

 return married; 

 } 

 public void setMarried(boolean married) { 

 this.married = married; 

 } 

 public String[] getInterest() { 

 return interest; 

 } 

 public void setInterest(String[] interest) { 

 this.interest = interest; 

 } 

 public String getInterest(int i){ 

 return this.interest[i]; 

 } 

 public void setInterest(int i,String newInterest){ 

 interest[i]=newInterest; 

 } 

}


5.2HTML提交页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=gbk"> 

<title>用户信息填写</title> 

</head> 

<body> 

 <form action="reg.jsp" method="post" name="reg"> 

 <table > 

 <tr> 

 <td>用户名:</td> 

 <td><input type="text" name="personName"></td> 

 </tr> 

 <tr> 

 <td>性别:</td> 

 <td> 

 <input type="radio" name="sex" value="1" checked>男 

 <input type="radio" name="sex" value="0">女 

 </td> 

 </tr> 

 <tr> 

 <td>婚否</td> 

 <td> 

 <input type="checkbox" name="married" value="1">婚否 

 </td> 

 </tr> 

 <tr> 

 <td>兴趣</td> 

 <td> 

 <input type="checkbox" name="interest" value="shopping">购物 

 <input type="checkbox" name="interest" value="sport">运动 

 <input type="checkbox" name="interest" value="onLine">上网 

 </td> 

 </tr> 

 <tr> 

 <td><input type="reset" value="重填"></td> 

 <td><input type="submit" value="提交"></td> 

 </tr> 

 </table> 

 </form> 

</body> 

</html>



5.3设置JavaBean和获取JavaBean的值

<%@page contentType="text/html;charset=gb2312" %> 

<% 

 request.setCharacterEncoding("gb2312"); 

%> 

<jsp:useBean id="person" scope="session" class="com.havy.bean.PersonBean"></jsp:useBean> 

 <jsp:setProperty name="person" property="*" /> 

 <jsp:setProperty name="person" property="name" param="personName" /> 


<html> 

 <body> 

 <a href="personInfo.jsp">查看设置的属性</a>



你的姓名:<jsp:getProperty property="name" name="person"/><br>
你的性别:<%

int sex=person.getSex(); 

 if(1==sex) 

 out.println("男"); 

 else if(0==sex) 

 out.println("女"); 

 %> 

 <br> 

你的婚否:<% 

 boolean married=person.isMarried(); 

 if(married) 

 out.println("已经结婚"); 

 else 

 out.println("还没结婚"); 

 %> 

 <br>

你的兴趣:

<% 

 String[] s=person.getInterest(); 

 for(int i=0;i<s.length;i++){ 

 out.println(person.getInterest(i)); 

 } 

 %><br> 


 </body> 

</html>