




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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;publicclassUserInfoBeanprivateStringusername;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的方法访问,简单属性的方法访问publicvoidset(value)publicget()publicbooleanis()索引属性的方法访问publicvoidset(intindex,value)publicvoidset(value)publicget()publicget(intindex),简单属性的方法访问,一个简单属性表示一个伴随有getset方法的变量,它依赖于标准命名约定来定getXXX()方法和setXXX()方法对数据的读写:它的使用语法如下:,publicvoidset(value)publicget()publicbooleanis(),简单属性的方法访问,对于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方法取得数组中的值。它的使用语法如下:,publicvoidset(intindex,value)publicvoidset(value)publicget()publicget(intindex),索引属性的方法访问,packagejavabean;publicclassIndexBeanprivateStringtype=newStringJSP,EJB;/getXXX方法,返回这个属性的值publicStringgetType()returnthis.type;/setXXX方法,设置这个属性的值publicvoidsetType(Stringtype)this.type=type;/另外的设置属性和获得属性值的方法publicvoidsetType(intindex,Stringvalue)typeindex=value;publicStringgetType(intindex)returntypeindex;,索引属性的方法访问,上面的例子,使用以下的语句可以读写Bean的属性值:注意:必须将Bean属性访问方法的访问权限定义成公有(public)。,setType(4,JavaBean);Stringtype=getType(4);Stringstr=getType();,JavaBean的开发实例1/4,students表结构,JavaBean的开发实例2/4,students表中数据,JavaBean的开发实例3/4,StudentsDataBean.java程序清单/学号privateintid=0;/姓名privateStringname=;publicintgetId()returnid;publicStringgetName()returnname;publicvoidsetId(inti)id=i;publicvoidsetName(Stringstring)name=string;,JavaBean的开发实例4/4,Test.java程序清单packagejavabean.db;publicclassTestpublicstaticvoidmain(Stringargs)StudentsDataBeanbean=newStudentsDataBean();/查询bean.query(2);System.out.print(id:+bean.getId();System.out.print(|);System.out.print(name:+bean.getName();,演示,JavaBean的开发实例,POJOJavaBean和LogicJavaBean,POJO不具有业务逻辑方法,只有构造方法、属性和对属性操作的set和get方法,LogicBean是另外的一个极端,有业务逻辑方法,基本上不关心属性。,POJOJavaBean和LogicJavaBean,在图书管理系统中我们刚才提到有四个JavaBean:代表页面的:BookEditFormBeanBookSearchFormBean代表数据库表的:Book和User,POJOJavaBean和LogicJavaBean,这些类它们是典型的JavaBean,符合JavaBean的规范,它们有构造方法、属性和对属性操作的方法(setXXX和getXXX),没有其它的方法,没有业务处理的方法(例如:数据库查询、删除等),这样的JavaBean称之为POJO简单的Java对象。JavaBean除了上述的规定以外,是否还允许有业务方法呢?从Java对象的角度讲这是可以的,这与JavaBean的规范没有冲突,我们可以把这种JavaBean叫做LogicJavaBean,它们继承JavaBean的可复用性和可扩展性,实际上LogicJavaBean它们的传统的JavaBean规范被弱化甚至于没有任何属性,只有业务处理方法。,图书管理系统中的POJOJavaBean,图书管理系统中的LogicJavaBean,图书管理系统中的LogicJavaBean,BookServiceImp代码:,publicclassBookServiceImpimplementsBookServicepublicStringgetNextBookId()BookDaodao=newBookDaoImp();Stringsbookid=dao.findMaxId();intbookid=Integer.parseInt(sbookid);bookid+;StringbookNextId=0000+String.valueOf(bookid);bookNextId=bookNextId.substring(bookNextId.length()-4);returnbookNextId;publicListsearch(Stringauthor,Stringbookname,Stringpublishing)BookDaodao=newBookDaoImp();returndao.find(author,bookname,publishing);,图书管理系统中的LogicJavaBean,LogonServiceImp代码:,publicclassLogonServiceImpimplementsLogonServicepublicUsergetUserInfo(Stringname,Stringpassword)UserDaodao=newUserDaoImp();Useruser=dao.findByPrimaryKey(name);if(user!=null,图书管理系统中的LogicJavaBean,UserDaoImp代码:,publicclassUserDaoImpimplementsUserDaopublicUserfindByPrimaryKey(Stringpk)Useruser=null;Connectionconn=null;tryconn=DBManager.getConnection();if(conn=null)returnnull;Stringsql=selectusername,password,authorityfromuser_infowhereusername=?;System.out.println(sql:+sql);/3.取得PrepareStatement对象PreparedStatementpStmt=conn.prepareStatement(sql);pStmt.setString(1,pk);/4.执行查询语句ResultSetrs=pStmt.executeQuery();,图书管理系统中的LogicJavaBean,UserDaoImp代码:,ResultSetrs=pStmt.executeQuery();if(rs.next()user=newUser();user.setUsername(rs.getString(username);user.setPassword(rs.getString(password);user.setAuthority(rs.getString(authority);catch(SQLExceptione)e.printStackTrace();/thrownewSystemException(数据查询异常!);,图书管理系统中的LogicJavaBean,UserDaoImp代码:,finallyif(conn!=null)tryconn.close();catch(SQLExceptione)e.printStackTrace();returnuser;,图书管理系统中的LogicJavaBean,BookDaoImp代码:,publicclassBookDaoImpimplementsBookDaopublicListfind(Stringauthor,Stringbookname,Stringpublishing)Listlist=newArrayList();Connectionconn=null;tryconn=DBManager.getConnection();/4.创建Statement对象Statementstmt=conn.createStatement();Stringsql=selectbookid,bookname,au
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025员工离职终止合同证明
- 2025秋部编版八年级语文上册《野望》教学设计
- 2025企业煤炭购销合同
- 2024-2025学年高中物理 第一章 电磁感应 2 感应电流产生的条件说课稿1 教科版选修3-2
- 本册综合教学设计-2025-2026学年初中化学九年级全一册人教版(五四学制)
- 线缆厂研发费用管理规定
- 2025知识产权许可合同书(合同版本)
- 2025建筑工地瓷砖订购合同模板
- 2025年应用文写作设备租赁合同范例
- 2025合同签订盖章操作指南
- 小学二年级综合实践活动课教学计划
- 采矿技术员考试试题及答案
- 中国建设银行校园招聘全国统一考试笔试题试卷历年真题内部题库(含答案)
- 生态环境保护执法课件
- 2024年卫生高级职称面审答辩(中医骨伤科)副高面审模拟试题及答案
- 招投标审计课件
- 14.3角的平分线(第2课时)(教学设计)数学人教版2024八年级上册
- 街道物业管理办公室职责
- 2025年保健产品的试题及答案
- 2025反洗钱知识考试试题库及答案
- 贵州省药品上市后变更备案管理实施细则
评论
0/150
提交评论