JavaBean是一种特殊的Java类,他遵从一定的设计模式,开发工具和其他组件可以根据这种模式来调用JavaBean。一个类如果想成为一个JavaBean,该类必须遵从如下的要求格式:

 

1.  一个javaBean类必须是一个公共类,类都得设置为public的

2.  一个javaBean类必须有一个空的构造函数。类定义中必须有一个不带有参数的公用构造器。此构造器也应该通过调用各个特性的设置方法来设置特性的缺省值。当然,如果你在代码中不明文制定不带参数的构造器,系统也会自动添加构造器。

3.  一个javaBean类不应有公共属性,所有属性都定义为为private访问界限

4.  类的属性应该通过一组存取方法(getXxx和setXxx)来访问。特别的是,对于boolean或Boolean的属性,访问器可以设置为isXXX. 

 

编写一个简单的JavaBean,包含三个属性name,password,age,该javaBean的代码TestJavaBean.java 如下:

package com.longweir.testJB;

public class TestJavaBean
{
	private String name;
	private String password;
	private int age;

    //name属性的访问器和修改器
	public void setName(String name)
	{
		this.name=name;
	}

	public String getName()
	{
		return name;
	}


   //password属性的访问器和修改器

	public void setPassword(String password)
	{
		this.password=password;
	}

	public String getPassword()
	{
		return password;
	}


    //age属性的访问器和修改器
	public void setAge(int age)
	{
		this.age=age; 		
	}

	public int getAge()
	{
		return age;
	}

};

编译该JavaBean文件,将生成一个com的文件夹(编译好的TestJavaBean.class文件在该目录的子目录中),将com文件夹及其子目录的内容全部拷贝到虚拟目录的WEB-INF/classes目录下即可。

 

编写一个jsp文件TestJavBeanDemo03.jsp 来调用javaBean

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

<jsp:useBean id="tjb_title" class="com.longweir.testJB.TestJavaBean" scope="page" />
<%
    request.setCharacterEncoding("GBK");
%>

<!-- 
将从表单获取的值赋值给属性
param表示将请求的参数作为值赋值给属性,下面代码中指将request请求中的表单参数中的值赋给javaBean中的属性
-->
<jsp:setProperty name="tjb_title" property="name" param="name_form"/>
<jsp:setProperty name="tjb_title" property="password" param="password_form"/>
<jsp:setProperty name="tjb_title" property="age" param="age_form"/>



<!--获取javaBean属性值显示即可-->

<h3>姓名:<jsp:getProperty name="tjb_title" property="name"/></h3>
<h3>密码:<jsp:getProperty name="tjb_title" property="password"/></h3>
<h3>年龄:<jsp:getProperty name="tjb_title" property="age"/></h3>

 

 编写一个表单页面tjbDemo03.html ,用来获取客户端提交的数据 代码如下:

<html>
<head>
<title>输入提交数据</title>
</head>
<body>   
   <form name="testJB" action="TestJavaBeanDemo03.jsp" method="post" >
       <table width="300" border="0">	   
	   <tr >
	      <td scope="2"> 请输入数据</td>
	   </tr>
	   <tr>
	       <td>用户名:</td>
		   <td><input type="text" name="name_form"></td>
	   </tr>      	  
	    <tr>
	       <td>密码:</td>
		   <td><input type="text" name="password_form"></td>
	   </tr>
	   <tr>
	       <td>年龄:</td>
		   <td><input type="text" name="age_form"></td>
	   </tr>
	   <tr>
	       <td><input type="submit" value="提交" ></td>
		   <td><input type="reset" value="取消"></td>
	   </tr>
	   </table>
	</form>

</body>
</html>

 

以上提交后jsp文件可以正常显示客户端表单中提交的数据.

 

对于TestJavaBeanDemo03.jsp 中的如下代码:

<jsp:setProperty name="tjb_title" property="name" param="name_form"/>   
<jsp:setProperty name="tjb_title" property="password" param="password_form"/>   
<jsp:setProperty name="tjb_title" property="age" param="age_form"/>

 需要说明的是

1. param后的参数是来自request请求中的表单的参数.如果此处参数值不和html表单中的参数名一致的话,将无法获取提交的值,那么String将显示为null,int 将显示为0

 

2. 如果提交表单中的参数的name名和javaBean中的属性名一致的话,即:

<tr>
	       <td>用户名:</td>
		   <td><input type="text" name="name"></td>
	   </tr>      	  
	    <tr>
	       <td>密码:</td>
		   <td><input type="text" name="password"></td>
	   </tr>
	   <tr>
	       <td>年龄:</td>
		   <td><input type="text" name="age"></td>
	   </tr>

 那么,jsp中的代码可改为:

<jsp:setProperty name="tjb_title" property="name" param="name_form"/>   
<jsp:setProperty name="tjb_title" property="password" param="password_form"/>   
<jsp:setProperty name="tjb_title" property="age" param="age_form"/>  

可改为以句话即可:
<jsp:setProperty name="tjb_title" property="*" />
使用*代替即可,jsp会自动查找请求表单中的参数名和javaBean中的属性匹配然后赋值

 3. setProperty可以直接手动指定值,使用value属性即可.

     <jsp:setProperty name="tjb_title" property="name" value="Laurence" />

  直接对javaBean中的name属性赋值。

注意:value和param两个参数不能同时使用,只能使用其中1个