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个