J2EE实用技术第4章JavaBean组件技术学习内容4.1图书管理系统中的JavaBean应用4.2JavaBean的概念4.3JavaBean的编写规范4.4JavaBean的属性4.5JavaBean的方法访问概述JavaBean是Java的一个组件体系结构。这是一组用于编写高可重用软件元素的规则,这些软件元素能够以一种可插拔的方式连接起来以构建应用。编写满足JavaBean规范的对象,意味着若要将这些对象联合在一起,无需编写过多的定制代码。此外还可以充分利用与JavaBean相关的开发工具。如果使用—些集成开发环境(integrateddevelopmentenvironment,IDE),甚至只需将预制的JavaBean相连接就能够构建出应用的大部分。JavaBean涉及的范围相当广泛,不过在此我们只能提供一个简要的概述。概述采用JavaBean组件技术能够大幅度提高系统功能,加快执行速度。另一方面,纯脚本语言将应用表现层和商务逻辑层混在一起,造成修改不方便,并且代码不能重复利用,采用组件技术就可以解决这些问题,并使系统更易维扩,也使网站的开发人员分工更为明确。图书管理系统中的JavaBean应用图书管理系统中JavaBeanBookEditFormBeanBookSearchFormBean图书管理系统中的JavaBean应用这两个类页面相对应的,BookEditFormBean是与新书入库页面和修改页面相对应的,这些页面中有一些需要表示的项目,这些项目与BookEditFormBean类的属性完全一致的。同理,BookSearchFormBean类也是这样的。这些类的特点是没有main方法,不可以独立运行的,可以被复用,如果其它的系统页面与我们这个页面相似,我们就可以将这些类复用。图书管理系统中的JavaBean应用类图图书管理系统中的JavaBean应用类图图书管理系统中的JavaBean应用BookEditFormBean代码(部分):publicclassBookEditFormBean{…….privateStringbookname=;//String作者privateStringauthor=;publicStringgetAuthor(){returnauthor;}publicvoidsetAuthor(Stringauthor){this.author=author;}…….}图书管理系统中的JavaBean应用BookSearchFormBean代码(部分):publicclassBookSearchFormBean{…….//String书籍名称privateStringbookname=;publicStringgetBookname(){returnbookname;}publicvoidsetBookname(Stringbookname){this.bookname=bookname;}…….}图书管理系统中的JavaBean应用与数据库相互对应的数据持久化类,实体类:Book和User类是与数据库Book表和User_Info表相互对应的,它们的结构完全一样,类中的属性对应数据库表的字段。图书管理系统中的JavaBean应用类图:图书管理系统中的JavaBean应用User的代码(部分):publicclassUser{…….//String登录用户名privateStringusername=;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}…….}图书管理系统中的JavaBean应用Book的代码(部分):publicclassBook{…….//String书籍名称publicStringgetBookname(){returnbookname;}publicvoidsetBookname(Stringbookname){this.bookname=bookname;}…….}什么是Bean?什么是JavaBean?JavaBean究竟是什么呢?JavaBean定义了一组规则;JavaBean就是遵循此规则的平常的Java对象。也就是说,JavaBean是符合JavaBeanAPI和设计模式的Java对象。由此,JavaBean可以在可视化应用生成器环境中得到识别和处理,也可以手工地编写。Bean存在并工作于Java运行时系统中,这与所有Java对象并无不同。它们使用事件和其他平常的方法调用与其邻居进行通信。什么是Bean?JavaBean具有以下特性:可以实现代码的重复利用易维护性、易使用性、易编写性可以在支持Java的任何平台上工作,而不需要重新编译可以在内部、网内或者是网络之间进行传输可以以其它部件的模式进行工作什么是Bean?JavaBean传统的应用在于可视化领域,如AWT(窗口抽象工具集)下的应用。现在,JavaBean更多的应用在于非可视化领域,它在J2EE服务器端的应用方面表现出了越来越强的生命力。非可视化的JavaBean和可视化的JavaBean同样使用属性和事件。非可视化的JavaBean在JSP程序中常用来封装事务逻辑、数据库操作等,可以很好地实现业务逻辑和前台程序的分离,使得系统具有更好的健壮性和灵活性。图书管理系统中的FormBean和实体类(User和Book),就是非可视化的JavaBean。JavaBean编写规范JavaBean的编写规范使Bean的容器(Container)能够分析一个Java类文件,并将其方法(Methods)翻译成属性(Properties),即把Java类作为一个Bean类使用。JavaBean编写规范JavaBean组件是一些Java类,任何Java类如果能够遵循一定的设计规范,就能够成为JavaBean.所谓的设计规范是:一个JavaBean类必须有一个空构造方法一个JavaBean类不应有公共实例变量(属性)一个持久值应该通过一组存取方法(getXxxx和setXxxx)来访问JavaBean编写规范构造方法与一般Java类的构造方法意思一样,就是对JavaBean的属性及其方法进行初始化,即对所定义的属性及方法设一个初始值,构造方法名要和JavaBean的类名相同。下面定义的是一个JavaBean及其构造方法:JavaBean编写规范下面例中定义了UserInfoBean()构造方法和JavaBean代码清单:packagejavabean;publicclassUserInfoBean{privateStringusername;privateStringpassword;publicUserInfoBean(){//初始化属性等操作this.username=;this.password=;}JavaBean编写规范publicvoidsetUsername(Stringname){this.username=name;}publicStringgetUsername(){returnthis.username;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetPassword(){returnthis.password;}}JavaBean的属性属性描述了组件的内部状态,一般对组件的操作都会涉及到属性,或者说对组件操作的最终目的就是控制它们的属性,来改变其内部状态。属性一般包括:类型和属性名称。JavaBean属性常用的有简单属性和索引属性。JavaBean简单属性(Simple)JavaBeanIndexed(索引的属性)JavaBean简单属性intuserid;floatprice;StringuserName;publicvoidsetUserName(Stringvalue)publicStringgetUserName()Datesdatetime;JavaBean索引的属性Indexed索引属性表示一个数组值intuserid[];Stringusername[];floatprice[];JavaBean的方法访问定义JavaBean的属性就必须为其创建访问方法。访问方法就是对组件中定义的属性的访问,包括读和写两种。通常,Bean的属性名是按大小字母相间的规则定义的,即属性的名字以小写字母开头,但属性名所含的其它单词的首字符为大写。在为该属性定义访问方法时,方法名以get或set为前缀,并连接的首字符为大写的属性名。如果对于属性firstName,则其相应的取值和赋值方法应为getFirstName()和setFirstName()。JavaBean的方法访问简单属性的方法访问publicvoidsetPropertyName(PropertyTypevalue)publicPropertyTypegetPropertyName()publicbooleanisPropertyName()索引属性的方法访问publicvoidsetPropertyName(intindex,PropertyTypevalue)publicvoidsetPropeayName(PropertyType[]value)publicPropertyType[]getPropertyName()publicPropertyTypegetPropertyName(intindex)简单属性的方法访问一个简单属性表示一个伴随有get/set方法的变量,它依赖于标准命名约定来定getXXX()方法和setXXX()方法对数据的读写:它的使用语法如下:publicvoidsetPropertyName(PropertyTypevalue)publicPropertyTypegetPropertyName()publicbooleanisPropertyName()简单属性的方法访问对于boolean类型的属性,除了可以使用getXXX方法外,还可以使用isXXX方法获得这个属性值。对于“userName”属性,假如这个属性的类型是String,我们可以采用下面方法:publicvoidsetUserName(Stringvalue)publicStringgetUserName()简单属性的方法访问您可以设置的属性是读写、只读或者是只写。getXXX()方法和setXXX()方法可以使属性具有读写属性。getXXX()方法将允许您只具有只读属性;setXXX()方法将允许您只具有写属性。简单属性的方法访问packagejavabean;publicclassSimpleBean{//type为属性的名字,类型是StringprivateStringtype;//boolean的debug属性privatebooleandebug=false;publicSimpleBean(){}//getXXX方法,返回这个属性的值publicStringgetType(){returnthis.type;}//setXXX方法,设置这个属性的值publicvoidsetType(Stringtype){this.type=type;}简单属性的方法访问//对于boolean类型的属性,可以使用isXXX方法来获得属性publicbooleanisDebug(){returnthis.debug;}//设置boolean类型的属性。publicvoidsetDebug(booleandebug){this.debug=debug;}}索引属性的方法访问同上所述的简单属性一样,可以使用get/set方法取得数组中的值。它的使用语法如下:publicvoidsetPropertyNam