已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章JavaBean组件程序设计 6 内容提要 理解JavaBean 掌握操作JavaBean的相关标记理解JavaBean的生存期JavaBean的属性掌握jsp javabean的开发模式 组件技术概述 现在软件开发都已经转向了基于组件的开发 目前具备代表性的组件技术有微软的COM COM 有Sun的JavaBean和EJB EnterpriseJavaBean 另外还有CORBA CommonObjectRequestBrokerArchitecture 公共对象请求代理结构 组件和容器 容器是包含其它组件的组件 它们被用作组件的框架 例如 可视化的开发工具使你能拖放组件到容器中 这些容器能调整大小和位置 软件组件模型描述了如何开发和使用组件 软件组件模型包括以下元素 创造和使用组件的规范 软件实现规范 为建造和使用组件提供一种具体的机制 JavaBean规范将 软件组件 的概念引入到Java编程的领域 组件是自包含的 可重用的软件单元 而JavaBean组件 则可以使用可视的应用程序开发工具 可视地将它们编写到Java程序中 JavaBean规范为Java开发人员提供了一种 组件化 其Java类的方法 Bean开发工具 JavaSoft 开发Java系列开发工具的公司 开发了BDK Bean开发工具 BDK可供开发者自由地使用 适用于Windows2000 XP 2003 以及Solaris2 4和2 5 其它用于Bean开发的各种工具 常用的有7个 SunMicroSystems公司的JavaPlan SunMicroSystems公司的JavaStudio SunMicroSystems公司的JavaWorkshop IBM的VisualAgeforJava Symantec的VisualCaf forJava 微软公司的VisualJ Boland公司的Jbuilder JavaBean简介 JavaBean是一种软件组件模型 它与其它软件对象相互作用 决定如何建立和重用软件组件 这些可重用软件组件被称之为Bean Bean使用现有的Bean帮助开发新的计划 进而 建立它们之间的关系 在Sun公司的JavaBean规范的定义中 Bean的正式说法是 Bean是一个基于Sun公司的JavaBean规范的 可在编程工具中被可视化处理的可复用的软件组件 JavaBean是基于Sun公司的JavaBean规范的 可在编程工具中被可视化处理的可复用的软件组件 因此JavaBean具有4个基本特性 1 独立性 2 可重用性 3 在可视化开发工具中使用 4 状态可以保存 进一步认识JavaBean 从根本上说 一个javabean就是放置在jsp服务器后台的一个javabean类 它封装了一些私有的数据和方法 这些私有数据可以用javabean类中的方法来存取 通过使用javabean 可以最大限度地扩充java程序的功能 还可以很快生成许多新的应用程序 可以说 javabean最大的优点是实现代码的重复利用 使程序易于维护 JavaBean的工作过程 JSP JavaBean 调用javaBean的方法 返回处理的结果 JavaBean的特点 编写JavaBean就是编写一个Java类 所以只要会写类就能编写一个Bean 一个完整JavaBean在类的命名上需要遵守4点 1 如果类的成员变量的名字是xxx 那么为了更改或获取成员变量的值 在类中使用两个方法 getXxx 用来获取属性xxx setXxx 用来修改属性xxx 2 对于boolean类型的成员变量 允许使用is代替get和set 3 类中方法的访问属性必须是public的 4 类中如果有构造方法 那么这个构造方法也是public的 并且是无参数的 JavaBean页面指令 在JSP中专门提供三个页面指令来和JavaBean交互 分别是jsp useBean指令 jsp setProperty指令和jsp getProperty指令 jsp useBean指令指定JSP页面中包括的JavaBean 具体的语法格式为 例如 注意 用于从一个javabean中获得某个变量的值 无论原先这个变量是什么类型的 都将被转换为一个String类型的值 JavaBean页面指令 其中 id是当前页面中引用JavaBean的名字 JSP页面中的Java代码将使用这个名字来访问JavaBean scope 指定JavaBean的作用范围 可以取4个值 缺省为 page page JavaBean只能在当前页面中使用 在JSP页面执行完毕后 该JavaBean将会被进行垃圾回收 request JavaBean仅用于当前客户端的请求 它在同一个请求范围内有效 session JavaBean在整个用户会话过程中都有效 application JavaBean在当前整个Web应用的范围内有效 jsp setProperty指令功能是设置JavaBean的属性 jsp getProperty操作指令功能是得到某个JavaBean的属性值 编写JavaBean packagetest publicclassMyBean privateStringstr privateintnum publicMyBean 初始化str Thisistheinitialvalue num 0 publicvoidsetvalue Stringavalue 设置strstr avalue publicStringgetvalue 得到strreturnstr publicvoidsetnumber intNumber 设置number num Number publicintgetnumber 得到number returnnum 案例名称 简单的JavaBean程序名称 mybean java 编译JavaBean文件 将mybean java文件编译成class类文件mybean class 由于mybean java中导入了包test 因此编译后生成的mybean class文件将自动存放在与mybean java同级目录的文件夹test的下面 通常 jsp文件存放在目录 c Tomcat4 1 webapps ROOT 中 要想在这些jsp文件中使用javabean 就必须把javabean源文件编译后生成的class类文件存放在目录 c Tomcat4 1 webapps ROOT WEB INF classes 中 否则Tomcat将无法找到javanean 这里 我们把mybean class这个文件存放在目录 c Tomcat4 1 webapps ROOT WEB INF classes test 中 在JSP也页面中使用JavaBean 案例名称 在JSP中使用JavaBean程序名称 05 01 jsp 编写使用上面这个javabean mybean 的JSP页面 使用Javabean相关标记的综合示例 我们来看一个例子 这个例子要求浏览者提交一个表单 在处理表单的jsp程序中综合使用了 这三个标记来存取javabean对象中的变量 使用前面的javabean mybean java 提交表单的页面 05 02 htmlJsp处理页面 05 03 jsp 等价于 注 使用request getParameter方法得到的值是一个字符串 Javabean的生存期 scope 指定JavaBean的作用范围 可以取4个值 缺省为 page page JavaBean只能在当前页面中使用 在JSP页面执行完毕后 该JavaBean将会被进行垃圾回收 request JavaBean仅用于当前客户端的请求 它在同一个请求范围内有效 session JavaBean在整个用户会话过程中都有效 application JavaBean在当前整个Web应用的范围内有效 Javabean生存期示例 Javabean生存期 05 04 jspPage 05 05 jspRequest 05 06 jspSession 05 07 jspApplication 05 08 jsp 利用外部的Bean JSP之所以强大 很大程度上依赖于外部组件的使用 有很多著名的公司开发外部Bean组件 比如SUN公司和IBM公司等 本节介绍最常用的组件 Email组件 图形组件和文件上传组件 Email组件 JavaMailAPI是一个用于阅读 编写和发送电子邮件的可选包 标准扩展 在JSP中要想发送Email 需要实用JavaMail组件 这里需要两个组件 activation jar 和 mail jar 发送Email 需要根据实际修改五个参数 程序才可以正确执行 目前的SMTP邮件发送服务器都需要验证 验证需要设置三个参数 发送邮件的服务器地址strHost 验证用户名strUserName和strPassWord密码StringstrHost StringstrUserName szg StringstrPassWord szg 案例名称 发送Email程序名称 mail jsp 发送Email 还需要修改两个参数就是发送人地址和收信人地址 StringstrFrom shizhiguo StringstrToList shizhiguo 比如现在张三有一个邮箱是zhangsan 邮箱密码是mamahao 现在他要给周润发发邮件 周润发的邮箱是zhourunfa 改完的五个参数如下面的代码段 StringstrHost intnPort 0 StringstrUserName zhangsan StringstrPassWord mamahao StringstrFrom zhangsan StringstrToList zhourunfa 常见邮箱的SMTP地址 发送Email 绘制图形 在Java图形编程领域中 最著名的组件是JGraph组件 该组件在绘制二维和三维方面功能非常优秀 最新的JGraph组件可以从 使用JGraph绘图 案例名称 使用JGraph绘图程序名称 j6 09 java 文件上传 在Web开发中 文件上传是一项非常实用的功能在Java开发体系中 文件上传功能的实现主要依赖于JavaBean 常用的上传组件是jspsmart 以jspsmart组件为例进行介绍文件上传 使用jspsmart组件实现文件上传 案例名称 文件上传功能的实现程序名称 selectfile html文件名称 存储到服务器上的路径 使用jspsmart组件实现文件上传 案例名称 处理文件上传的Servlet程序程序名称 servletUpload java 面向对象设计模式 面向对象软件开发领域中 设计模式包括一些规则来完成一定任务 设计模式针对一些特定的问题 提出一种解决方案 常用的面向对象设计模式有4种 Factory模式 Singleton模式 Fa ade模式和MVC架构模式 Factory模式 如果想要通过Email发送一些新产品的信息 目标用户的类型不同 所以需要发送不同内容的邮件 除此之外 用户的类型还可能会不断的增加 一般这种需求利用Factory模式设计 定义一个EmailSender类 classEmailSender voidsendEMail SeniorClientTypeclient SeniorClientEmailemail newSeniorClientEmail email createEmailBody email createEmailSubject email send voidsendEMail RichClientTypeclient RichClientEmailemail newRichClientEmail email createEmailBody email createEmailSubject email send voidsendEMail FemaleClientTypeclient FemalClientEmailemail newFemaleClientEmail email createEmailBody email createEmailSubject email send Factory模式 根据sendEMail传递的参数类型 创建不同的发送Email的对象 然后利用该对象的方法进行处理 创建的Email类为 classSeniorClientEmail voidcreateEmailBody voidcreateEmailSubject voidsend classRichClientEmail voidcreateEmailBody voidcreateEmailSubject voidsend Factory模式 如果要添加新的客户类型 只要修改EmailSender类 添加一种新的客户类型方法就可以 Factory模式建立的系统扩充性非常好 进一步抽象 利用接口或者抽象类 将公共的一些特征抽象成接口或者抽象类 将一些细节留给派生类处理 设计的Email类为 classEmailSender VoidsendEmail IClientTypeclient Iemailemail client createEmail email createEmailBody email createEmailSubject email send Factory模式 不同的客户类型利用不同的类进行处理 抽象这些客户的一些共同特征 建立接口IClientType 具体的客户类型处理类都通过这个接口创建 InterfaceIClientType IEmailcreateEmail classSeniorClientTypeimplementsIClientType IEmailcreateEmail returnnewSeniorClientEmail classRichClientTypeimplementsIClientType IEmailcreateEmail returnnewRichClientEmail Factory模式 同时提取不同的Email类型的一些共同特征 建立接口IEmail 具体的类都通过这个接口创建 interfaceIEmail voidcreateEmailBody voidcreateEmailSubject voidsend classSeniorClientTypeimplementsIEmail voidcreateEmailBody voidcreateEmailSubject voidsend classRichClientTypeimplementsIEmail voidcreateEmailBody voidcreateEmailSubject voidsend Singleton模式 数据库管理系统DB2和Oracle有连接数目的限制 在默认的情况下 DB2是50用户 Oracle是100用户 如果超过这个数据的话 程序就会出现异常 利用类ConnectionPoolManager来保证连接数不被超过 Singleton模式 classConnectionPoolManager staticConnectionPoolManagerinstance null intnumberofConnection 0 intmaxConnection 50 privateConnectionPoolManager publicstaticConnectionPoolManagergetConnectionPoolManager if instance null instance newConnectionPoolManager returninstance publicDBConnectiongetConnection if numberOfConnection maxConnection returncreateNewConnection else sleep 3000 getConnection Fa ade模式 比如要保存一个帐户的信息 第一步需要得到数据连接对象 第二步需要解析客户信息和帐户信息 第三步根据需要存储的内容生成不同的SQL语句 第四步执行SQL语句 过程比较繁杂 利用Fa ade模式 将所有的处理流程进行封装 只向外提供一个方法 实现所有的功能 MVC架构模式 Model View Controller架构模式是80年代中期在Smalltalk 80GUI 一种经典的面向对象程序设计语言 实验室发明的 根据MVC模式 一个软件应该将商务逻辑 Model 和显示 View 分开 分开有许多好处 最主要的有两个方面 1 同一的商务逻辑层 Model 可能会对应多个显示层 View 如果商务逻辑层和显示层放在一起的话 再添加一个显示层的时候就会极大的增加组件的复杂性 一个商务逻辑对着两个显示层的例子是 银行的帐户的商务逻辑层对应ATM和Internet两个显示层 2 通常情况下 每次修改显示层的时候一般并不需要修改商务逻辑层 MVC架构模式 Model层一般利用Fa ade模式进行设计 在复杂的商务逻辑上 提供简单并且统一的应用程序接口 这一层负责管理应用程序应用程序的行为和状态 来响应状态的请求和改变状态的指令 View层 从Model层和Controler层获取数据 并按照某种方式显示给用户 Controller层的功能是捕捉用户的一些事件 并根据用户和应用程序的状态来决定响应的类型 Controller层的响应会同时影响到View层和Model层 MVC中三层的关系 JSP设计模式 JSP设计模式包括两个 1 Model1 JSP JavaBean设计模式 2 Model2 MVC设计模式 模式一JSP JavaBean模式 在这种模式中 JSP页面独自响应请求并将处理结果返回客户 所有的数据库操作通过JavaBean来实现 大量地使用这种模式 常会导致在JSP页面中嵌入大量的Java代码 当需要处理的商业逻辑非常复杂时 这种情况就会变得很糟糕 大量的Java代码使得JSP页面变得非常臃肿 前端的页面设计人员稍有不慎 就有可能破坏关系到商业逻辑的代码 这种情况在大型项目中经常出现 造成了代码开发和维护的困难 同时会导致项目管理的困难 因此这种模式只适用于中小规模的项目 模式二MVC模式 MVC 模式即是 Model View Controller 模式 在这种模式中 通过JSP技术来表现页面 通过Servlet技术来完成大量的事务处理工作 实现用户的商业逻辑 在这种模式中 Servlet用来处理请求的事务 充当了控制器 Controller即 C 的角色 Servlet负责响应客户对业务逻辑的请求并根据用户的请求行为 决定将哪个JSP页面发送给客户 JSP页面处于表现层 也就是视图 View即 V 的角色 JavaBean则负责数据的处理 也就是模型 Model即 M 的角色 模式二MVC模式 MVC在JSP中的实现模型 目前有两种实现模型 1 基于Bean的MVC模型 2 基于Stucts的MVC模型 基于Bean的MVC模型 Bean可以利用JavaBean实现 也可以利用EJB来实现 分别构成的系统是 JavaBean M JSP V ServletEJB M JSP V Servlet
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋清场协议书范本
- 房屋破裂赔偿协议书
- 房屋继承托管协议书
- 房屋股份出让协议书
- 房屋装修物业协议书
- 房屋资金监管协议书
- 房屋遗产分配协议书
- 房屋预付金合同协议
- 房租中介定金协议书
- 房租退租转租协议书
- 口腔科护理工作总结
- 《人寿保险实务》课件
- 【MOOC】国家安全概论-西安交通大学 中国大学慕课MOOC答案
- JGJT46-2024《施工现场临时用电安全技术标准》条文解读
- 学术不端案例介绍课件
- 资金监管账户管理办法
- 保险专业代理机构高级管理人员任职资格申请表
- 股权设计与股权激励培训课件
- 部编版道德与法治二年级上册第14课《家乡物产养育我》公开课课件
- 统编版语文九年级上册第15课《故乡》公开课一等奖创新教学设计
- 山西前期物业合同范本
评论
0/150
提交评论