JavaBean技术

Posted 张嫣然

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaBean技术相关的知识,希望对你有一定的参考价值。

JSP设计模式

关于JavaBean的产生原因和JSP开发模式的一个演变可以参照如下示例图

两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式。
JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序(因为业务逻辑复杂,控制代码多,而在JSP中编写控制代码,十分不便),这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据。(JSP中编写业务控制逻辑代码)
Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求(控制器,连接模型和视图,对整个业务流程进行控制,调用JavaBean封装处理数据,调用JSP显示页面),jsp负责数据显示,javabean负责封装数据(Model 模型功能)。 Servlet+JSP、JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。

技术分享图片
关于JavaWeb_MVC模式可以参见之前的博客http://blog.csdn.net/megustas_jjc/article/details/52922859,在此不再细说。(其中JavaBean符合Model,JSP符合View,Servlet符合Controller)

JavaBean

(1)什么是JavaBean

1、是一个Java 类
2、必须存在无参数构造方法
3、所有成员变量都是private
4、私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。即如果想private成员变量被外界访问,提供public的get和set方法。

编写好JavaBean组件,其他程序可以通过反射技术实例化JavaBean对象,并且通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。 关于反射技术,参考http://blog.csdn.net/megustas_jjc/article/details/52769688,这里需要注意不要将JavaBean与单例模式混淆(通过内省Introspection,也可以对JavaBean进行操作,Introspection对JavaBean通过反射技术操作,出国留学内省是一套基于反射技术,更易于操作JavaBean的API)

单例模式

1、private 构造方法
2、private static 实例对象
3、public static 对象访问方法

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。如下是一个Java代码实例:

一些资源管理器常常设计成单例模式。在计算机系统中,需要管理的资源包括软件外部资源,譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler, 以避免两个打印作业同时输出到打印机中。每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同时传到传真卡中的情况。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。

(2)使用JavaBean的原因

程序中往往有重复使用的段落,JavaBean就是为了能够重复使用而设计的程序段落,而且这些段落并不只服务于某一个程序,而且每个JavaBean都具有特定功能,当需要这个功能的时候就可以调用相应的JavaBean。从这个意义上来讲,JavaBean大大简化了程序的设计过程,也方便了其他程序的重复使用。

JavaBean传统应用于可视化领域,如AWT(窗口工具集)下的应用。而现在,JavaBean更多地应用于非可视化领域,同时,JavaBean在服务器端的应用也表现出强大的优势。非可视化的JavaBean可以很好地实现业务逻辑、雅思基础控制逻辑和显示页面的分离,现在多用于后台处理,使得系统具有更好的健壮性和灵活性。JSP + JavaBean和JSP + JavaBean + Servlet成为当前开发Web应用的主流模式。

(3)JavaBean的属性

  • JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、 getter方法,setter方法称为属性修改器,getter方法称为属性访问器。
  • 属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性的修改器名称为setName,password属性的修改器名称为setPassword。
  • 属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,例如,name属性的访问器名称为getName,password属性的访问器名称为getPassword。
  • 一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称之为只写、只读属性。

(4)在JSP中使用JavaBean

  1. 标签:用于在指定的域范围内查找指定名称的JavaBean对象:
    如果存在则直接返回该JavaBean对象的引用。
    如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。
    常用语法

    id属性用于指定JavaBean实例对象的引用名称和其存储在域范围中的名称。
    class属性用于指定JavaBean的完整类名(即必须带有包名)。
    scope属性用于指定JavaBean实例对象所存储的域范围,英语培训费用其取值只能是page、request、session和application等四个值中的一个,其默认值是page。

例如:

翻译为(即会生成一个.java文件):

代码效果:从page返回获得person对象,如果不为null 直接使用,如果为null 创建新的Person对象

标签:用于在JSP页面中设置一个JavaBean组件的属性。
标签:用于在JSP页面中获取一个JavaBean组件的属性。

(5)实例
首先,我们写一个JavaBean:

JSP页面:

因为实际开发中,主要应用model2模式,所有javabean相关标签已经很少使用。

setProperty特殊用法
—- 根据请求数据自动封装 Person属性

技术分享图片

利用最简单的Model 1 JSP+JavaBean模式,我们可以简单的实现一个计算器的功能:

技术分享图片

代码很简单,在此就不再附上实际代码。



















以上是关于JavaBean技术的主要内容,如果未能解决你的问题,请参考以下文章

Javabean技术

javabean 如何清除已经填充了的属性

Java高新技术——内省(JavaBean)

Java高新技术——内省(JavaBean)

JSP 与Javabean 的交互技术

javabean的用法作业(手写拍照上传): 1 啥是JavaBean?有啥作用? 2举例说明