好程序员Java学习路线Java bean是个什么概念

好程序员Java学习路线Java bean是个什么概念,Bean的中文含义是“豆子”,顾名思义JavaBean是一段Java小程序。JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去。所有遵循一定编程原则的Java类都可以被称作JavaBean。
一. Java Bean技术概述
??????? Java Bean是基于Java的组件模型,由属性、方法和事件3部分组成。在该模型中,JavaBean可以被修改或与其他组件结合以生成新组件或完整的程序。它是一种Java类,通过封装成为具有某种功能或者处理某个业务的对象。因此,也可以通过嵌在JSP页面内的Java代码访问Bean及其属性。

??????? Bean的含义是可重复使用的Java组件。所谓组件就是一个由可以自行进行内部管理的一个或几个类所组成、外界不了解其内部信息和运行方式的群体。使用它的对象只能通过接口来操作。
二. Java Bean编写规范
??????? Java Bean实际上是根据JavaBean技术标准所指定Bean的命名和设计规范编写的Java类。这些类遵循一个接口格式,以便于使函数命名、底层行为以及继承或实现的行为,其最大的优点在于可以实现代码的可重用性。Bean并不需要继承特别的基类(BaseClass)或实现特定的接口(Interface)。Bean的编写规范使Bean的容器(Container)能够分析一个Java类文件,并将其方法(Methods)翻译成属性(Properties),即把Java类作为一个Bean类使用。Bean的编写规范包括Bean类的构造方法、定义属性和访问方法编写规则。
2.1. Bean组件的工作机制
在JavaBeansVersion1.01 A规范中定义了该组件的5种重要机制:

(1)内省(Introspection):组建可以发表其支持的操作和属性,同时也支持在其他组件中发现重复利用的对象库,如用户权限控制和电子邮件自动回复等。

(2)通信(Communication):生成和收集组件的消息事件。

(3)持续(Persistence):存放组件的状态。

(4)属性(Properties):支持组件布局的控制,包括组件占用的空间和组件的相对位置。

(5)定制(Customization):开发者可控制组件所需的改变机制。

2.2. Java Bean的编写要求
??编写JavaBean必须满足以下几点要求:

(1)所有的JavaBean必须放在一个包(Package)中。

(2)JavaBean必须生成public class类,文件名称应该与类名称一致。

(3)所有属性必须封装,一个JavaBean类不应有公共实例变量,类变量都为private。

(4)属性值应该通过一组存取方法(getXxx 和 setXxx)来访问:对于每个属性,应该有一个带匹配公用getter 和 setter方法的专用实例变量。

(5)Java Bean 类必须有一个空的构造函数:类中必须有一个不带参数的公用构造器,此构造器也应该通过调用各个属性的设置方法来设置属性的默认值。
2.3. Java Bean的命名规范
???Java Bean的命名规范如下:

(1)包命名:全部字母小写。

(2)类命名:每个单词首字母大写。

(3)属性名:第一个单词全部小写,之后每个单词首字母大写。

(4)方法名:与属性命名方法相同。

(5)常量名:全部字母大写。
2.4. Java Bean的包
??????? 包即package,JavaBean的包和前面章节中介绍的包含义基本上是一样的,但是也有区别,前面介绍的包都是Java本身定义的,而JavaBean的包是用户自己定义的。

??????? 每一个JavaBean源文件被编译成.class文件后,都必须存放在相应的文件夹下,存放这个.class文件的文件夹就是一个包。JavaBean的包必须存放在特定的目录下,在每个JSP引擎中都规定了存放JavaBean包的位置,不同的JSP引擎对JavaBean存放的位置有不同的规定,如在Tomcat中,JavaBean的所有包都存放在WEB-INF/classes文件夹中。如果存在多级目录,则需要将.class文件所在目录的所有上级目录包含到包名称中,每一级目录之间用英文标点“.”隔开。例如下面代码:packagejsp.example.mybean;
2.5. Java Bean的结构
(1)属性:即Java Bean类的成员变量,用于描述JavaBean对象的状态,对象属性值的改变触发事件,属性本身就是事件源。

(2)方法:在Java Bean中,函数和过程统称为方法,通过方法来改变和获取属性的值。方法可以分为构造方法、访问方法和普通方法等。

(3)事件:事件实际上是一种特殊的Java Bean,属性值的改变触发事件,事件激发相关对象作出反应,通过Java Bean注册对象事件监听者机制来接收、处理事件,它实现了Java Bean之间的通信。
三. Java Bean属性
??????? 在上一节中我们简单提到了JavaBean的属性,Java Bean的属性与一般Java程序中所指的属性,或者说与所有面向对象的程序设计语言中对象的属性是一个概念,在程序中的具体体现就是类中的变量。属性分为四类,即单值(Simple)、索引(Index)、关联(Bound)和约束(Constrained)属性。本节将对这些属性进行详细说明。
3.1. 单值(simple)属性
??????? 单值(Simple)属性是最普通的属性类型,该类属性只有一个单一的数据值,该数据值的数据类型可以是Java中的任意数据类型,包括类和接口等类型。

??????? 定义了属性,还需定义对应的访问方法,一般每个单值属性都伴随有一对get/set方法。属性名与和该属性相关的get/set方法名对应。例如如果有一个名为“xxx”的属性,则会有setXxx和getXxx方法。

??????? 另外,布尔(Boolean)属性是一种特殊的单值属性,它只有两个允许值:true和false,如果有一个名为“xxx”的布尔属性,则可以通过isX方法访问。
3.2. 索引(Indexed)属性
??????? 如果需要定义一批同类型的属性,使用单值属性就会显得非常烦琐,为解决此问题,JavaBean中提供了索引(Indexed) 属性,索引属性是指JavaBean中数组类型的成员变量。使用与该属性对应的set/get方法可取得数组的值。索引属性通过对应的访问方法设置或取得该属性中某个元素的值,也可以一次设置或取得整个属性的值。

3.3. 关联(Bound)属性
??????? 关联(Bound)属性是指当该种属性的值发生变化时,要通知其他的对象。每次属性值改变时,这种属性就触发一个PropertyChange事件(在Java程序中,事件也是一个对象)。事件中封装了属性名、属性的原值、属性变化后的新值。这种事件传递到其他的Beans,至于接收事件的Beans应做什么动作,由其自己定义。

??????? 属性的改变称为JavaBean事件。外部与Java Bean这些事件相关的类对象称为监听者(Listener)。监听者可能只对JavaBean某一属性相关的事件有兴趣,也可能对所有属性相关的事件有兴趣,因此JavaBean提供两类事件监听者注册和注销的方法,即全局事件监听者注册、注销的方法和一般事件监听者注册、注销的方法。
3.4. 约束(Constrained)属性
??????? Java Bean的属性如果改变时,相关的外部类对象首先要检查这个属性改变的合理性再决定是否接受这种改变,这样的JavaBean属性叫约束(Constrained)属性。当约束属性的改变被拒绝时,改变约束属性的方法产生一个约束属性改变异常(PropertyVetoException),通过这个异常处理,JavaBean约束属性还原回原来的值,并为这个还原操作发送一个新的属性修改通知。

??????? 约束属性的改变可能会被拒绝,因此它的setXxx与一般其他JavaBean属性的setXxx也有所不同。约束属性的写方法如下:

??????? public void setXxx(xxxType newXxx)throws PropertyVetoException
四. Java Bean方法
4.1. 构造方法
??????? Java Bean的构造方法与与之前的普通java类的构造方法意思是一样的,就是对JavaBean的属性及其方法进行初始化,即对所定义的属性及方法设一个初始值,构造方法名要和JavaBean的类名相同。
4.2. 访问方法
?????? 在定义了Bean的属性,并通过构造方法将其初始化后,要让其他程序访问Bean的这些属性,就必须为其创建访问方法。访问方法就是对组件中定义的属性的访问,包括读和写两种访问方式。读就是一种用于取出Bean属性的值的取值函数,即getter;而写则是一种用于设置Bean属性的赋值函数,即setter。以下列出的就是Bean属性访问方法的具体语法格式:

??????? public void setPropertyName(PropertyTypevalue);//给属性赋值,即写方法

??????? public PropertyType getPropertyName();//读取属性值,即读方法

4.3. 一般方法
??????? 除了对属性的访问方法外,还可以在Bean创建一般方法来实现对函数的调用,只要将Bean中的一般方法定义成公有的方法,就可以供其他程序调用。
五. Java Bean事件
??????? 事件处理是JavaBeans体系结构的核心之一。通过事件处理机制,可让一些组件作为事件源,发出可被描述环境或其他组件接收的事件。这样,不同的组件就可在构造工具内组合在一起,组件之间通过事件的传递进行通信,构成一个应用。从概念上讲,事件是一种在“源对象”和“监听者对象”之间某种状态发生变化的传递机制。事件有许多不同的用途,例如在Windows系统中常要处理的鼠标事件、窗口边界改变事件、键盘事件等。

5.1. 事件模型

??????? Java Bean事件模型如图所示,事件源是一个JavaBean类对象,它把属性改变的时间对象传递给事件监听者,事件监听者负责事件的处理。事件监听者必须在事件源注册。

5.2. 事件状态对象

??????? 与事件发生有关的状态信息一般都封装在事件状态对象 (EventState Object) 中,这种对象是java.util.EventObject的子类。按设计习惯,这种事件状态对象类的名应以Event结尾。例如代码是一个鼠标移动事件实例。

5.3. 事件监听者接口与事件监听者

??????? 由于Java事件模型是基于方法调用的,因此需要一个定义并组织事件操纵方法的方式。JavaBeans中,事件操纵方法都被定义在继承了java.util.EventListener类的事件监听者(EventListener)接口中,按规定,EventListener接口的命名要以Listener结尾。任何一个类如果想操纵在EventListener接口中,定义的方法都必须以实现这个接口方式进行。这个类就是事件监听者。例如如下代码:

//先定义了一个鼠标移动事件对象

public class MouseMovedExampleEventextends java.util.EventObject {

//在此类中包含了与鼠标移动事件有关的状态信息

...

}

//定义了鼠标移动事件的监听者接口

interface MouseMovedExampleListener extends java.util.EventListener {

//在这个接口中定义了鼠标移动事件监听者所应支持的方法

void mouseMoved(MouseMovedExampleEvent mme);

}

5.4. 事件监听者注册与注销

??????? 为了让各种可能的事件监听者把自己注册入合适的事件源中,就建立源与事件监听者间的事件流,事件源必须为事件监听者提供注册和注销的方法。在实际中,事件监听者的注册和注销要使用以下标准的设计格式:

public void add<ListenerType>(< ListenerType> listener);

public void remove<ListenerType>(< ListenerType> listener);

??????? 下面是一个具体的实例,首先定义了一个事件监听者接口:

import java.util.*;

public interface ModelChangedListenerextends EventListener

{ void modelChanged(EventObjecte);}

5.5. 适配类
??????? 适配类是Java事件模型中极其重要的一部分。在一些应用场合,事件从源到监听者之间的传递要通过适配类来“转发”。例如:当事件源发出一个事件,而有几个事件监听者对象都可接收该事件,但只有指定对象做出反应时,就要在事件源与事件监听者之间插入一个事件适配器类,由适配器类来指定事件应该是由哪些监听者来响应。适配类成为了事件监听者,事件源实际是把适配类作为监听者注册入监听者队列中,而真正的事件响应者并未在监听者队列中,事件响应者应做的动作由适配类决定。目前绝大多数的开发工具在生成代码时,事件处理都是通过适配类来进行的。

原文地址:https://blog.51cto.com/14479068/2426765

时间: 2024-10-14 05:47:22

好程序员Java学习路线Java bean是个什么概念的相关文章

好程序员前端学习路线分享模拟JavaScript中面向对象技术

好程序员前端学习路线分享模拟JavaScript中面向对象技术,在C#和Java语言中,面向对象是以类的方式实现的,特别是继承这个特性,类的方式继承表现出了强大的功能,而且也易于学习.JavaScript不是纯的面向对象的语言,而是基于对象的语言,对象的继承是以原型函数的形式继承的,很多初学者刚开始接触的时候不太理解,但是JavaScript这种以原型函数的形式实现面向对象技术,不仅是可行的,而且还为面向对象技术提供了动态继承的功能,本文主要讨论了JavaScript的面向对象技术.?一.原型对

好程序员云计算学习路线之高级权限

好程序员云计算学习路线之高级权限,suid,sgid,sticky文件权限管理之:高级权限 问题1: 为什么会失败![[email protected] ~]# ll /root/file1.txt -rw-r--r-- 1 root root 4 7月 27 14:14 /root/file1.txt[[email protected] ~]$ cat /root/file1.txt 分层验证看,ll-d / ll-d /root (root禁地进不去)cat: /root/file1.txt

好程序员云计算学习路线分享文件打包及压缩

好程序员云计算学习路线分享文件打包及压缩,建议针对目录 Demo: 复制未打包的文件到远程主机[[email protected] ~]# du -sh /etc39M /etc[[email protected] ~]# time scp -r /etc [email protected]:/tmp //将/etc目录... ===打包,压缩===[[email protected] ~]# tar -czf etc1.tar.gz /etc //-z 调用gzip : tar removei

好程序员云计算学习路线分享软件包管理

好程序员云计算学习路线分享软件包管理,安装/查询/卸载 一.软件的类型A. 源码包 需要编译 nginx-1.12.1.tar.gz B. 二进制包 已编译 mysql-community-common-5.7.12-1.el7.x86_64.rpm 常见二进制包系统平台 包类型 工具 在线安装(自动解决依赖关系)RedHat/Centos RPM rpm,rpmbuild yumUbuntu/Debian DPKG dpkg apt注意: 不管是源码包,还是二进制包,安装时都可能会有依赖关系!

PHP开发程序员的学习路线

兄弟连PHP培训,简单为大家梳理了每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标. 第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP系统安装,简单配置维护:能够做基本的简单系统的PHP开发:能够在PHP中型系统中支持某个PHP功能模块的开发. 时间:完成本阶段的时间因人而异,有的成长快半年一年就过了,成长慢的两三年也有. 1.Linux 基本命令.操作.启动.基本服务配置(包括rpm安装文件,各种服

java程序员编程学习路线怎么走

在Java里面呢,Java又分为J2ME,J2SE,J2EE,所以Java并不是单机版的,只是面向对象语言,如果是安排Java体系呢,可以这样去学习. 第一部分:我刚开始呢是在学习一些前端知识:html,里面包括有html标签,表单标签还有css,这是一些web应用开发的基础,这个是要学习的 第二部分:Java基础知识,包括Java语法,面向对象的特征等等,还有常见的API,集合框架什么的: 第三部分:Java的界面编程,包括AWT,事件机制,SWING,这个部分呢,其实可以跳过,用的时候在看看

一个php程序员的学习路线

新手不要看到上面的概括就以为PHP学习是很简单的,编程是需要你认真的思考和不断的实践.下面具体解释一下PHP的学习线路.首先,任何网站都是由网页组成的,也就是说想完成一个网站,必须先学会做网页,掌握静态网页的制作技术是学习开发网站的先决条件.因此我们要学习HTML,为今后制作网站打下基础.学习HTML应该边学边做,HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,才能深刻记忆,一味的看书是不行的. 先来看下PHP初学者的学习线路:(1) 熟悉HTML/CSS/JS等网页基本

java学习路线-Java技术人员之路从0基础到高级

满满的  全是干货 java基础: 尚学堂 马士兵   个人推荐 历经5年锤练--史上最适合刚開始学习的人入门的Java基础视频   很具体   适合 时间多的看 传智播客java基础班 马士兵线程 马士兵反射 毕向东java基础 尚硅谷java基础文档 java0基础: 甲骨论Oracle  专业 mysql视频 传智播客java web  据说是史上最全面的 30天掌握java web视频 个人推荐  可惜 后面 十几天的 没有 尚硅谷 javaWeb文档 尚硅谷js&jquery,ajax

java学习路线-Java技术人员之路从初级到高级

满满的  全是干货 java基础: 尚学堂 马士兵   个人推荐 历经5年锤练--史上最适合初学者入门的Java基础视频   非常详细   适合 时间多的看 传智播客java基础班 马士兵线程 马士兵反射 毕向东java基础 尚硅谷java基础文档 java初级: 甲骨论Oracle  专业 mysql视频 传智播客java web  据说是史上最全面的 30天掌握java web视频 个人推荐  可惜 后面 十几天的 没有 尚硅谷 javaWeb文档 尚硅谷js&jquery,ajax,jso