Jsp JavaBean技术

来源:互联网 发布:常微分方程 知乎 编辑:程序博客网 时间:2024/04/30 02:58

 


 

JSP程序设计基础教程

5.1  JavaBean概述

      JSP较其他同类语言最强有力的方面就是能够使用JavaBean组件,JavaBean组件就是利用Java语言编写的组件,它好比一个封装好的容器,使用者并不知道其内部是如何构造的,但它却具有适应用户要求的功能,每个JavaBean都实现了一个特定的功能,通过合理地组织不同功能的JavaBean,可以快速生成一个全新的应用程序。如果将一个应用程序比做一间空房间,那么这些JavaBean就好比房间中的家俱。

  JavaBean技术介绍

      使用JavaBean的最大优点就在于它可以提高代码的重用性,例如正在开发一个商品信息显示界面,由于商品信息存放在数据库指定表中,此时需要执行连接数据库、查询数据库、显示数据操作,如果将这些数据库操作代码都放入JSP页面中,代码复杂度可以想象,非编程人员根本无法接收这样的代码,这将为开发带来极大的不便。

       编写一个成功的JavaBean,宗旨是“一次性编写,任何地方执行,任何地方重用”,这正迎合了当今软件开发的潮流,“简单复杂化”,将复杂需求分解成简单的功能模块,这些模块是相对独立的,可以继承、重用,这样为软件开发提供了一个简单、紧凑、优秀的解决方案。

1.一次性编写

一个成功的JavaBean组件重用时不需要重新编写,开发者只需要根据需求修改和升级代码即可。

2.任何地方执行

一个成功的JavaBean组件可以在任何平台上运行,由于JavaBean是基于Java语言编写的,所以它可以轻易移植到各种运行平台上。

3.任何地方重用

一个成功的JavaBean组件能够被在多种方案中使用,包括应用程序、其他组件、Web应用等。

  JavaBean的种类

       最初,JavaBean主要应用于可视化领域,现在JavaBean更多应用于非可视化领域,并且在服务器端表现出卓越的性能。

      JavaBean按功能可分为可视化JavaBean和不可视化JavaBean两类。

(1)可视化JavaBean

可视化JavaBean就是具有GUI图形用户界面的JavaBean;不可视JavaBean就是没有GUI图形用户界面的JavaBean,最终对用户是不可见的,它更多地是被应用到JSP中。

       最初,JavaBean主要应用于可视化领域,现在JavaBean更多应用于非可视化领域,并且在服务器端表现出卓越的性能。

      JavaBean按功能可分为可视化JavaBean和不可视化JavaBean两类。

(1)可视化JavaBean

可视化JavaBean就是具有GUI图形用户界面的JavaBean;不可视JavaBean就是没有GUI图形用户界面的JavaBean,最终对用户是不可见的,它更多地是被应用到JSP中。

       (2)不可视JavaBean

不可视JavaBean又分为值JavaBean和工具JavaBean。值JavaBean严格遵循了JavaBean的命名规范,通常用来封装表单数据,作为信息的容器。

        值JavaBean示例

      工具JavaBean则可以不遵循JavaBean规范,通常用于封装业务逻辑,数据操作等,例如连接数据库,对数据库进行增、删、改、查和解决中文乱码等操作。工具JavaBean可以实现业务逻辑与页面显示的分离,提高了代码的可读性与易维护性。例如,下面的JavaBean就是一个工具JavaBean,它用来转换字符串中的“<”与“>”字符。

       工具JavaBean示例

  JavaBean规范

通常一个标准的JavaBean需遵循以下规范:

(1)实现java.io.Serializable接口;

(2)是一个公共类;

(3)类中必须存在一个无参数的构造函数;

(4)提供对应的setXxx()和getXxx()方法来存取类中的属性,方法中的“Xxx”为属性名称,属性的第一个字母应大写。若属性为布尔类型,则可使用isXxx()方法代替getXxx()方法。

       实现java.io.Serializable接口的类实例化的对象被JVM(Java虚拟机)转化为一个字节序列,并且能够将这个字节序列完全恢复为原来的对象,序列化机制可以弥补网络传输中不同操作系统的差异问题。例如,当一台计算机在Windows系统上创建了一个对象,将这个对象序列化,并且通过网络将它发送到一台操作系统为Linux的计算机上,这时不必担心因为操作系统不同,传输的对象会有所改变,因为这个对象会重新准确组装。

      作为JavaBean,对象的序列化也是必须的。使用一个JavaBean时,一般情况下是在设计阶段对它的状态信息进行配置,并在程序启动后期恢复,这种具体工作是由序列化完成的。

       说明:如果在JSP中使用JavaBean组件,创建的JavaBean不必实现java.io.Serializable接口仍然可以运行。

       【例5-3】 JavaBean规范示例

  创建JavaBean

      JavaBean实质上就是一种遵循了特殊规范的Java类,所以创建一个JavaBean,就是在遵循这些规范的基础上创建一个Java类。

      在前面几节中已经多次给出了JavaBean的代码,所以在这里不再给出代码进行讲解。读者可以新建一个记事本,然后向记事本中输入代码,最后保存为*.java文件即可完成一个JavaBean的创建。但通常都使用开发工具进行创建,如Eclipse。使用Eclipse开发工具创建JavaBean可以使用工具提供的功能自动生成属性的getXXX()与setXXX()方法,下面介绍如何在Eclipse中创建JavaBean。

        在Eclipse下创建JavaBean

5.3.1  获取JavaBean信息

       值JavaBean通常用来封装个单数据,作为信息的容器,因此,在获取JavaBean信息时,采用的是值JavaBean。

在JSP中,可以通过<getProperty>动作指令获取JavaBean中各属性的属性值。<getProperty>动作指令的语法格式如下:

<jsp:getProperty name="BeanName"property="propertyName"/>

      其中,name用于指定JavaBean的名称;property用于指定要获取属性值的属性。

获取JavaBean信息

获取JavaBean信息

      在JSP中,不仅可以利用<getProperty>获取JavaBean的属性值,还可以利用<setProperty>属性设置JavaBean的属性值。利用<setProperty>属性设置JavaBean的属性值时,可以分为以下3种情况。

1. 通过表达式的值或字符串设置JavaBean中的属性值

2. 通过HTTP表单设置JavaBean中的属性值

3. 通过request参数设置JavaBean属性值

通过表达式的值或字符串设置JavaBean中的属性值

      在JSP页面中,通过表达式的值或字符串设置JavaBean中的属性值时,使用的<setProperty>动作指令的语法格式如下:

<jsp:setPropertyname="BeanName" property="propertyName"value="<%expression%>"

<jsp:setPropertyname="BeanName" property="propertyName"value="string"

其中,name用于指定在当前JSP页面使用的JavaBean的名称;property用于指定JavaBean中的属性名;value用于指定JavaBean中指定属性的属性值。

【例5-6】 通过表达式的值或字符串设置JavaBean中的属性值。

      编写一个保存用户信息的JavaBean,并在该JavaBean中设置username属性的默认值为wgh,pwd属性的默认值为111111,然后在JSP页面中获取JavaBean信息。

      通过HTTP表单设置JavaBean中的相应属性值时,要求表单元素参数的名称必须与JavaBean中属性名相同。这样才能保证HTTP表单中的参数能够正确传递给指定的属性。使用<setProperty>动作指令通过HTTP表单设置JavaBean中的属性值的语法格式如下:

<jsp:setPropertyname="BeanName" property="*"/>

      其中,name用于指定在当前JSP页面使用的JavaBean的名称;property用于指定JavaBean中的属性名,这里使用了通配符“*”,代表全部的属性。

【例5-7】通过HTTP表单设置JavaBean中的属性值

创建一个登录页面,如图1所示。当用户输入用户名和密码进行登录后,在另一个页面中首先通过HTTP表单设置JavaBean中的用户名和密码属性,然后再获取JavaBean中的用户名和密码属性的值并输出,如图2所示。

图1  登录页面                                                     图2  获取登录信息

通过request参数设置JavaBean属性值

通过request参数设置JavaBean属性值,要求request参数名必须与表单元素的参数名相同。实际上这种处理方式主要用于解决表单元素的名称与JavaBean中的属性名不相同的情况。使用<setProperty>动作指令通过request参数设置JavaBean属性值的语法格式如下:

<jsp:setPropertyname="BeanName" property="propertyName"param="parameterName"

      其中,name用于指定在当前JSP页面使用的JavaBean的名称;property用于指定JavaBean中的属性名;param用于指定JSP页面中的表单元素的名称。

通过request参数设置JavaBean属性值

【例5-8】通过request参数设置JavaBean属性值

创建一个登录页面,如图1所示。当用户输入用户名和密码进行登录后,在另一个页面中首先通过request参数设置JavaBean中的用户名和密码属性,然后再获取JavaBean中的用户名和密码属性的值并输出,如图2所示。

图1  登录页面                                                      图2  获取登录信息

 

5.3.3  在JSP页面中应用工具JavaBean

       工具JavaBean通常用于封装业务逻辑、数据操作等,例如连接数据库,对数据库进行增、删、改、查和解决中文乱码等操作。使用工具JavaBean可以实现业务逻辑与前台程序的分离,提高了代码的可读性与易维护性。

      【例5-9】 在JSP页面中应用工具JavaBean

例如,在实现用户留言功能时,要将用户输入的留言标题和留言内容输出到页面中。若用户输入的信息中存在HTML语法中的“<”和“>”标识,如输入<input type=“text”>,则将该内容输出到页面后,会显示一个文本框,如下图所示。

  在JSP页面中应用工具JavaBean

 

 

但预先设想的是原封不动地输出用户输入的内容。 解决该问题的方法是在输出内容之前,将内容中的“<”和“>”等HTML中的特殊字符进行转换,如将“<”转换为“&lt;”,将“>”转换为“&gt;”,这样当浏览器遇到“&lt;”时,就会输出“<”字符,如下图所示。

  在JSP页面中应用工具JavaBean

 

 

 

  应用JavaBean解决中文乱码

      在JSP程序开发中,通过表单提交的数据中若存在中文,则获取该数据后输出到页面中将显示乱码,如下图所示。所以在输出获取的表单数据之前,必须进行转码操作。将该转码操作在JavaBean中实现,可在开发其他项目时重复使用,避免了重复编码。

 

 

原创粉丝点击