日期:2014-05-16  浏览次数:20423 次

JSP和JavaBean
JSP和JavaBean

  本章将详细介绍什么是JavaBean,以及如何定义JavaBean。还将介绍如何在JSP中调用JavaBean,如何设置并获得JavaBean属性以及设置JavaBean的范围,最后还将介绍如何移除JavaBean。
通过本章的学习,读者应该能够完成如下几个目标。
熟练掌握定义JavaBean
熟练掌握在JSP中调用JavaBean
熟练掌握设置并获得JavaBean属性
熟练掌握设置JavaBean的范围
熟练掌握移除JavaBean

1 JavaBean简介

      JavaBean是为Java语言设计的软件组件模型,具有可重复使用和跨平台的特点。可以通过JavaBean来封装业务逻辑,进行数据库操作等。从而很好的实现业务逻辑和前后台程序的分离。
      JavaBean其实就是一个简单的Java类,这也就意味着,Java类的一切特征,JavaBean也都具有。JavaBean同样可以使用封装、继承、多态等特性。
JavaBean可以分为两类,一类是有用户接口(UI)的JavaBean,一类是没有用户接口的JavaBean。一般在JSP中使用的都是没有用户接口的JavaBean,因此本章所介绍的JavaBean都是指没有用户接口的JavaBean。这类JavaBean只是简单的进行业务封装,如数据运算和处理、数据库操作等。

      一个标准的JavaBean应该具有如下几个特点。
1、JavaBean必须是一个公开的类,也就是说JavaBean的类访问权限必须是public的。
2、JavaBean必须具有一个无参数的构造方法。如果在JavaBean中定义了自定义的有参构造方法,就必须添加一个无参数构造方法,否则将无法设置属性;如果没有定义自定义的有参构造方法,则可以利用编译器自动添加的无参构造方法。
3、JavaBean一般将属性设置成私有的,通过使用getXXX()方法和setXXX()方法来进行属性的取得和设置。

1.1 定义JavaBean
02 //一个简单的JavaBean示例
03 public class UserBean {
04 // 用户名属性
05 private String username;
06 // 用户密码属性
07 private String password;
08 //获得用户名
09 public String getUsername() {
10 return username;
11 }
12 //设置用户名
13 public void setUsername(String username) {
14 this.username = username;
15 }
16 //获得用户密码
17 public String getPassword() {
18 return password;
19 }
20 //设置用户密码
21 public void setPassword(String password) {
22 this.password = password;
23 }
24 }

1.2 在JSP中调用JavaBean
在JSP中调用JavaBean,有如下两个优点。
1、提高代码的可复用性。
对于通常使用的业务逻辑代码,如数据运算和处理、数据库操作等,可以封装到JavaBean中。在JSP文件中可以多次的调用JavaBean中的方法来实现快速的程序开发。
2、将HTML代码和Java代码进行分离,程序利于开发维护。
将业务逻辑进行封装,使得业务逻辑代码和显示代码想分离,不会互相干扰。避免了代码有多有复杂的问题,方便了日后的维护。
要想要JSP中调用JavaBean,就需要使用到<jsp:useBean>动作指令,其语法格式如下。
<jsp:useBean id="对象名称" scope="储存范围" class="类名"></jsp:useBean>
其中id属性表示该JavaBean实例化后的对象名称。scope属性用来指定该JavaBean的范围,也就是指JavaBean实例化后的对象储存范围。范围的取值有如下四种,分别是page、request、session和application。class属性用来指定JavaBean的类名,这里所指的类名包括包名和类名。

2 设置JavaBean属性
JSP中提供了一个<jsp:setProperty>动作指令来设置JavaBean属性,其有如下四种语法格式。
<jsp:setProperty name="实例化对象名" property="*"/>
<jsp:setProperty name="实例化对象名" property="属性名称"/>
<jsp:setProperty name="实例化对象名" property="属性名称" param="参数名称"/>
<jsp:setProperty name="实例化对象名" property="属性名称" value="属性值" />
其中name属性使用设置实例化对象名,和<jsp:useBean>中的id属性保持一致。property属性用来指定JavaBean属性名称。param属性用来指定接受参数名称,value属性用来指定属性值。

2.1根据所有参数设置JavaBean属性
第一种<jsp:setProperty>动作指令用来根据所有参数设置JavaBean属性,其语法格式如下。
<jsp:setProperty name="实例化对象名" property="*"/>
其中“*”表示根据表单传递的所有参数来设置JavaBean的属性。比如通过表单传递了两个参数,如username和password,这时就可以自动的对JavaBean中的username属性以及password属性进行赋值。这里必须注意的是,表单的参数必须和JavaBean中的属性名称保持大小写一致,否则无法进行赋值操作。

2.2 根据指定参数设置JavaBean属性
第二种<jsp:setProperty>动作指令用来根据指定参数设置JavaBean属性,其语法格式如下。
<jsp:setProperty name=“实例化对象名” property=“属性名称"/>
第二种<jsp:setProperty>动作指令相比第一种<jsp:setProperty>动作指令具有更好的弹性。第一种<jsp:setProperty>动作指令要求设置所有的参数,而第二种<jsp:setProperty>动作指令可以用来设置指定的参数。比如通过表单传递了两个参数,如username和password,这时就可以指定只为JavaBean的username属性赋值,也可以指定只为JavaBean的password属性赋值。

2.3 根据指定参数设置指定JavaBean属性
第三种<jsp:setProperty>动作指令用来根据指定参数设置指定JavaBean属性,其语法格式如下。
<jsp:setProperty name="实例化对象名" property="属性名称" param="参数名称"/>
第三种<jsp:setProperty>动作指令相比前两种<jsp:setProperty>动作指令更加具有弹性。前面两种<jsp:setProperty>动作指令都需要设置参数和JavaBean属性必须相同,而且必须保证大小写一致。而第三种<jsp:setProperty>动作指令没有此限制,因为可以通过其指定需要设置的JavaBean属性。

2.4 设置指定JavaBean属性为指定值
第四种<jsp:setProperty>动作指令用来设置指定JavaBean属性为指定值,其语法格式如下。
<jsp:setProperty name="实例化对象名" property="属性名称" value="属性值"