您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > JavaBean经典教程
第5章JavaBean组件技术5.1JavaBean简介5.2.JavaBean属性5.3JavaBean的作用域5.4使用JavaBean计算圆的周长与面积5.1JavaBean简介5.1.1为什么要使用JavaBean5.1.2JavaBean的形式和要素JavaBean是使用Java语言描述的软件组件模型,简单地说,它就是一个可以重复使用的Java类。JavaBean可分为可视化组件和非可视化组件,其中可视化组件包括简单的GUI元素(例如,文本框、按钮)及一些报表组件等。非可视化组件是在实际开发中经常被使用到的并且在应用程序中起着至关重要的作用。其主要功能是用来封装业务逻辑(功能实现)、数据库操作(例如,数据处理、连接数据库)等。返回JavaBean是Java程序的一种,所使用的语法和其它类似的Java程序一致。在程序中使用JavaBean具有以下优点:在实际的开发过程中,通常会出现重复的代码或者段落,此时就会大大降低程序的可重用性并且浪费时间。使用JavaBean就可以大大简化程序的设计过程并且方便了其它程序的重复使用。为什么要使用JavaBeanJavaBean在服务器端的应用具有非常强大的优势,非可视化的JavaBean可以非常好地实现控制逻辑、业务逻辑、表示层之间的分离,从而大大降低了它们之间的耦合度。非可视化的JavaBean现在多用于后台处理,这样会使系统具有一定的灵活性。(1)可以实现代码的重复利用。(2)易编写、易维护、易使用。(3)它可以压缩在jar文件中,以更小的体积在网络中应用(4)完全是Java语言编写,可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译。返回编写JavaBean就是编写一个Java的类,这个类创建的一个对象称做一个Bean。为了能让使用这个bean的应用程序构建工具(比如JSP引擎)知道这个bean的属性和方法,只需在类的方法命名上遵守以下规则:JavaBean的形式和要素(1)(1)如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:●getXXX():用来获取属性xxx。●setXXX():用来修改属性xxx.。(2)对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用is“代替上面的get和set。(3)类中方法的访问属性都必须是public的。(4)类中如果有构造方法,那么这个构造方法也是public的并且没有参数。JavaBean的形式和要素(2)JavaBean示例:importjava.io.Serializable;publicclassJavaBeanDemoimplementsSerializable{//实现了Serializable接口JavaBeanDemo(){}//无参的构造方法privateintid;//私有属性IdprivateStringname;//私有属性namepublicintgetId(){returnId;}publicvoidsetId(intid){//set()方法this.id=id;}publicStringgetName(){//get()方法returnname;}publicvoidsetName(Stringname){this.name=name;}}返回5.2JavaBean属性5.2.1简单属性5.2.2索引属性5.2.3束缚属性5.2.4限制属性在JavaBean的设计中按照其属性的不同作用可以把该Bean分为4类,分别是简单属性设置(Simple)、索引属性设置(Indexed)、束缚属性设置(Bound)、限制属性设置(Constrained)。返回简单属性JavaBean的简单属性(Simple属性)表示为一般数据类型的变量并且getXXX()和setXXX()方法是以属性来命名的。例如:publicclassHello{Hello(){}//无参构造方法privateStringname;//定义String类型的简单属性nameprivatebooleaninfo;publicStringgetName(){//简单属性的getXxx()方法returnname;}publicvoidsetName(Stringname){//简单属性的setXxx()方法this.name=name;}publicbooleanisInfo(){//布尔类型的取值方法returninfo;}publicvoidsetInfo(booleaninfo){//布尔类型的setXxx方法this.info=info;}}返回索引属性JavaBean的索引属性(Indexed属性)表示一个数组值或者一个集合,与Simple属性一样可以使用getXXX()和setXXX()方法来获取值,例如:publicint[]array=newint[8];publicint[]getArray(){//返回整个数组returnarray;}publicvoidsetArray(int[]array){//为整个数组赋值this.array=array;}publicvoidsetArray(intindex,intvalue){//为数组中的某个元素赋值this.array[index]=value;}publicintgetArray(intindex){//返回数组中的某个值returnarray[index];}使用Indexed属性除了表示数组之外,还可以表示集合类。返回束缚属性束缚属性(Bound)也称为关联属性,它是当该种属性的值发生变化时,要通知其它的对象。每次属性值改变时,这种属性就触发一个PropertyChange事件(在Java程序中,事件也是一个对象)。事件中封装了属性名、属性的原值、属性变化后的新值。这种事件是传递到其它的Bean,至于接收事件的Bean应做什么动作由其自己定义。包含关联属性的Bean必须具有以下的功能:(1)允许事件监听器注册和注销与其有关的属性修改事件;(2)当修改一个关联属性时,可以在相关的监听器上触发属性修改事件。利用java.beans.PropertyChangeSupport类创建出PropertyChangeSupport类的对象,从而可以用于管理注册的监听器列表和属性修改事件通知的发送。JavaBean还需要实现addPropertyChangeLinster()方法和removePropertyChangeLinster()方法,以便添加和取消属性变化的监听器。返回限制属性限制属性(constrained)是指当这个属性的值要发生变化时,与这个属性已建立了某种连接的其它外部Java对象可否决该属性值的改变(限制属性的监听者通过抛出PropertyVetoException来阻止该属性值的改变),Bean本身也可以否决该Bean属性值的改变。一个限制属性有两种监听者:属性变化监听者和取消属性改变的监听者。取消属性改变的监听者在自己的对象代码中有相应的控制语句,在监听到有限制属性要发生变化时,在控制语句中判断是否应否决这个属性值的改变。利用java.beans.VetoableChangeSupport类的fireVetoableChange()方法传递属性名称、改变前的值和改变后的值等信息。JavaBean还需要实现addVetoableChangeLinster()方法和removeVetoableChangeLinster()方法,以便添加和取消属性变化的监听器。注意:由于限制属性使用了错误处理,编程的时候要特别注意异常的处理方式。返回5.3JavaBean的作用域返回5.3.1page作用域5.3.2request作用域5.3.3session作用域5.3.4application作用域5.3.5JavaBean获取作用域数据appliactionsessionpagerequestpage作用域page作用域在这4种类型中范围是最小的,客户端每次请求访问时都会创建一个JavaBean对象。JavaBean对象的有效范围是客户请求访问的当前页面文件,当客户执行当前的页面文件完毕后JavaBean对象结束生命。在page范围内,每次访问页面文件时都会生成新的JavaBean对象,原有的JavaBean对象已经结束生命期。返回request作用域当scope为request时,JavaBean对象被创建后,它将存在于整个request的生命周期内,request对象是一个内建对象,使用它的getParameter方法可以获取表单中的数据信息。Request范围的JavaBean与request对象有着很大的关系,它的存取范围除了page外,还包括使用动作元素jsp:include和jsp:forward包含的网页,所有通过这两个操作指令连接在一起的JSP程序都可以共享同一个JavaBean对象。返回session作用域返回当scope为session时,JavaBean对象被创建后,它将存在于整个session的生命周期内,session对象是一个内建对象,当用户使用浏览器访问某个网页时,就创建了一个代表该链接的session对象,同一个session中的文件共享这个JavaBean对象。客户对应的session生命期结束时JavaBean对象的生命也结束了。在同一个浏览器内,JavaBean对象就存在于一个session中。当重新打开新的浏览器时,就会开始一个新的session。每个session中拥有各自的JavaBean对象。application作用域返回当scope为application时,JavaBean对象被创建后,它将存在于整个主机或虚拟主机的生命周期内,application范围是JavaBean的生命周期最长的。同一个主机或虚拟主机中的所有文件共享这个JavaBean对象。如果服务器不重新启动,scope为application的JavaBean对象会一直存放在内存中,随时处理客户的请求,直到服务器关闭,它在内存中占用的资源才会被释放。在此期间,服务器并不会创建新的JavaBean组件,而是创建源对象的一个同步拷贝,任何拷贝对象发生改变都会使源对象随之改变,不过这个改变不会影响其它已经存在的拷贝对象。JavaBean获取作用域数据(1)通过下面的实例说明4个作用域:首先,创建一个JavaBean:“Scope.java”。packagescope;publicclassScope{publicScope(){}//无参的构造函数privateintnumber=0;//初始化变量number的值为0publicintgetNmuber(){//增加并返回变量number的值number++;returnnumber;}publicvoidsetNumber(intnewNumber){this.number=newNumber;//给变量number赋新值}}JavaBean获取作用域数据(2)然后,创建名称为“scope.jsp”的页面文件,用来显示JavaBean存在的范围的具体区别。主要代码:bodyjsp:useBeanid=pageScopescope=pageclass=scope.Scope/%out.println(使用page获取的数据为:+pageScope.getNmuber());%jsp:useBeanid=requestScopescope=requestclass=scope.Scope/%out.println(使用request获取的数据为:+requestScope.getNmuber());%jsp:useBeanid=sessionScopescope=sessionclass=scope.Scope/%out.println(使用session获取的数据为:+sessionS
本文标题:JavaBean经典教程
链接地址:https://www.777doc.com/doc-1828350 .html