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;
- }
- };
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>
<%@ 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 >
<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" />
<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 >
<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中的属性匹配然后赋值
<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个