J2EE架构设计UML软件工程组织_第1页
J2EE架构设计UML软件工程组织_第2页
J2EE架构设计UML软件工程组织_第3页
J2EE架构设计UML软件工程组织_第4页
J2EE架构设计UML软件工程组织_第5页
已阅读5页,还剩219页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

J2EE架构设计-UML软件工程组织2022/10/25J2EE架构设计UML软件工程组织J2EE架构设计-UML软件工程组织2022-10-18J21课程安排第一部份:介绍实例架构结合实例讲解Web项目总体结构分析多层结构优点具体讲解每个层次的实现技巧J2EE架构设计UML软件工程组织课程安排第一部份:介绍实例架构J2EE架构设计UML软件工程2课程安排第二部分:介绍组织层次关联利器(Spring)快速入门Factory模式IOC模式AOP模式演练Spring的威力J2EE架构设计UML软件工程组织课程安排第二部分:介绍组织层次关联利器(Spring)J2E3课程安排第三部分:介绍日志管理利器(Log4j)快速入门演练Log4j的优越性J2EE架构设计UML软件工程组织课程安排第三部分:介绍日志管理利器(Log4j)J2EE架构4课程安排第四部分:介绍UI层利器(Struts)Struts介绍快速入门ActionFromAction客户端验证J2EE架构设计UML软件工程组织课程安排第四部分:介绍UI层利器(Struts)J2EE架构5课程安排第五部分:介绍数据持久层利器(HIbernate)快速入门介绍辅助工具表与表之间关联操作多数据库操作事务管理DAO模式与Spring结合使用J2EE架构设计UML软件工程组织课程安排第五部分:介绍数据持久层利器(HIbernate)J6课程安排第六部分:介绍软件测试与部署借助Junit的单元测试借助Ant的自动部署J2EE架构设计UML软件工程组织课程安排第六部分:介绍软件测试与部署J2EE架构设计UML软7实例架构J2EE架构设计UML软件工程组织实例架构J2EE架构设计UML软件工程组织8层次介绍实例分为四层:通过Struts实现UI层通过Spring实现业务层通过Hibernate实现数据持久层传输于各层的域对象层J2EE架构设计UML软件工程组织层次介绍实例分为四层:J2EE架构设计UML软件工程组织9结构优点通过成熟的开源产品搭建层次清晰性能稳定的系统架构。层与层之间松散耦合,增加代码重用率,提高开发效率。每一层充当各自具体任务,便于团队分工和后期维护。稳健的架构能承受业务的扩展,不至于使项目失控。J2EE架构设计UML软件工程组织结构优点通过成熟的开源产品搭建层次清晰性能稳定的系统架构。J10UILayerUI是UserInterface的缩写,这一层是面向用户的界面,充当与用户互动的角色。即接受用户请求作出响应。实现这一功能最佳经验即MVC模式,实例中该层借助Struts实现,Struts本身就是MVC思想的产物。

J2EE架构设计UML软件工程组织UILayerUI是UserInterface的缩写11UILayerStruts提供ActionFrom来封装与用户互动的数据元素。Struts提供Action来接受用户请求与发生响应动作。Struts提供ValidatorPlugIn来进行UI验证。J2EE架构设计UML软件工程组织UILayerStruts提供ActionFrom来封装与12BusinessLayer 具体的业务逻辑通常导致代码的高度耦合,因此我们将业务逻辑分为单独的一层,其目的也是希望通过层,来降低它与系统其他部分的耦合度。该层借助Spring可以达到更好的效果。通过Spring的IOC模式来装配业务组件,如,DAO对象。使系统更具扩展性。通过SpringAOP(面向方面)思想,来集中处理具体业务,如事务管理,使代码更为简洁,增加复用,提高开发效率。J2EE架构设计UML软件工程组织BusinessLayer 具体的业务逻辑通常导致代码的高13PersistenceLayer在传统的系统开发中该层占据大部分的开发时间,且随着需求的变更功能的修改,逐渐变得难以控制,特别是表结构的变化可能导致整个系统大动干戈。在实例中我们借助Hibernate,利用其持久化机制和CRUD封装来减少代码开发量和其他层次的耦合度。

J2EE架构设计UML软件工程组织PersistenceLayer在传统的系统开发中该层14DomainLayer 该层应该说是ORM思想的产物,ORM用对象关联数据表,允许数据表中数据放入对象,也允许对象中数据更新到数据表,我们将这些对象的集合归为一个专门的层次即DomainLayer。域对象承担各层之间数据通信的载体。实际上域对象也是一个完完全全的业务对象,如User对象、Book对象。通过对业务的对象化,这有利于业务逻辑的重用。J2EE架构设计UML软件工程组织DomainLayer 该层应该说是ORM思想的产物,OR15系统结构-回顾 将系统进行如上的分成,从理论上可以让其承担各自职责,UI层提供友好的用户交互、业务层处理具体问题领域逻辑、持久层完成于数据库读取存储、域模型承担数据传输的载体。将一个复杂的应用领域细分成诸多最小单元,然后进行串联、组合。使得一个应用领域的实现过程中,最小单元达到最大复用。J2EE架构设计UML软件工程组织系统结构-回顾 将系统进行如上的分成,从理论上可以让其承担各16Spring-简介 springFramework是种非侵入式轻量级框架,允许自由选择和组装各部分功能,也提供了和其他很多软件集成的接口,如与Hibernate、Struts的集成。Spring主要功能有DependencyInjection、SpringContext、SpringAOP、SpringORM、SpringDAO、SpringMVC。J2EE架构设计UML软件工程组织Spring-简介 springFramework是种非侵入17Spring-为什么使用Spring利用延时注入思想组装代码,提高系统扩展性,灵活性,实现插件式编程。利用AOP思想,集中处理业务逻辑,减少重复代码,构建优雅的解决方案。利用HibernateTransactionManager类封装Hibernate事务管理,其是AOP思想的典型运用,使持久层操作代码简洁精悍。J2EE架构设计UML软件工程组织Spring-为什么使用Spring利用延时注入思想组装代码18Spring-搭建Web应用环境下载springFramework最新版本,将其下的*.jar拷贝到项目lib中,并引用。在Web.xml中配置spring的启动方式:Listener方式或Servlet方式。设置Spring配置文件。通常在系统运行前完Spring成初始化工作,因此在Web.xml中配置一个初始化Servlet。J2EE架构设计UML软件工程组织Spring-搭建Web应用环境下载springFramew19Spring-搭建Web应用环境J2EE架构设计UML软件工程组织Spring-搭建Web应用环境J2EE架构设计UML软件工20Spring-搭建Web应用环境J2EE架构设计UML软件工程组织Spring-搭建Web应用环境J2EE架构设计UML软件工21Spring-搭建Web应用环境J2EE架构设计UML软件工程组织Spring-搭建Web应用环境J2EE架构设计UML软件工22Spring-Factory模式在实际开发中会经常用到工厂模式,其完成的功能是使外部调用类不需关心具体实现类,这样非常适合在同一个事物类型具有多种不同实现的情况下使用。要实现工厂模式我们必须设计AbstractFactory类AbstractProduct类,为了实现灵活性还可能用反射机制构建Product实体。在得到具体实现类的时候也必须通过工厂类完成,如图所示:J2EE架构设计UML软件工程组织Spring-Factory模式在实际开发中会经常用到工厂模23Spring-Factory模式J2EE架构设计UML软件工程组织Spring-Factory模式J2EE架构设计UML软件工24Spring-依赖注入Spring的依赖注入能达到工厂模式的同样的效果,但其实现却优雅很多。看如下代码:在Spring配置文件中配置Bean实现代码:Producta=XXX.getBean(“Product");这样即得到了ProductA的实例,代码中只硬编码了Product接口。是不是让你兴奋了?J2EE架构设计UML软件工程组织Spring-依赖注入Spring的依赖注入能达到工厂模式的25Spring-依赖注入Spring还允许以下三种方式实现依赖注入:设值注入接口注入构造函数注入J2EE架构设计UML软件工程组织Spring-依赖注入Spring还允许以下三种方式实现依赖26Spring-依赖注入我们重点讲述设值注入方式,先来看看通过设值注入能给实际开发带来什么好处.下图是不是让你有所领悟?J2EE架构设计UML软件工程组织Spring-依赖注入我们重点讲述设值注入方式,先来看看通过27Spring-演练我们利用设值注入实现一个简单的计算器,让它实现两个数的加法或减法运算。类图如下:Product实现类中与具体实现类无关联、无依赖,通过外部配置即可自由切换实现类,美妙!J2EE架构设计UML软件工程组织Spring-演练我们利用设值注入实现一个简单的计算器,让它28Spring-演练假设我们要实现两个数相加,则配置如下(如果需要实现两个数相减,则将注释的algorithmBean替换掉当前的即可):J2EE架构设计UML软件工程组织Spring-演练假设我们要实现两个数相加,则配置如下(如果29Spring-演练测试代码如下,根据具体的实现类不同将得到两个数相应运算的结果。J2EE架构设计UML软件工程组织Spring-演练测试代码如下,根据具体的实现类不同将得到两30Spring-依赖注入总结 从演练的例子可以看出Spring提供的依赖注入思想能让代码之间依赖性降低,转而交给配置文件进行外部配置,这样对于需求变化、后期维护、功能扩展带来便利。 Spring是一种工具,更是一种思想,开发人员可以在设计代码时发挥无限想象,挖掘出最适应项目代码组织形式。J2EE架构设计UML软件工程组织Spring-依赖注入总结 从演练的例子可以看出Spring31Spring-AOP模式 AOP的全称为AspectOrientedProgramming,译为“面向方面编程”或“面向切面编程”,与熟悉的OOP(面向对象编程)思想所关注的目标有本质上的区别,AOP是针对具体业务领域、业务逻辑;OOP针对业务对象。 Spring中事务管理机制就是AOP的一个具体运用。 利用此机制省去了我们在每个具体实现类中去进行事务管理的编码,而将这一切交给Spring提供的事务代理实现类erceptor.TransactionProxyFactoryBean。

J2EE架构设计UML软件工程组织Spring-AOP模式 AOP的全称为AspectOri32Spring-AOP模式在讲述AOP运用之前我们先来了解下AOP实现原理。Spring的DependencyInjection和AOP都是某一设计模式的经典应用及放大。也许通过Spring的事物管理机制你已经将AOP的实现原理与代理模式联系在一起了。的确如此,让我们先看看代理模式的思想。J2EE架构设计UML软件工程组织Spring-AOP模式在讲述AOP运用之前我们先来了解下A33Spring-Proxy代理模式的思想是:不让外部直接访问具体目标,而是通过一个代理类才能访问具体目标。类似在具体目标与外部之间放置一道“隔离层“,所有与具体目标的通信均需通过这道”隔离层”来传送请求和返回状态。这样“隔离层“就能掌控访问具体目标的前前后后。如果我们需要在访问具体目标前或后加上一致的处理逻辑,无疑代理模式最为适合。就如事物管理。J2EE架构设计UML软件工程组织Spring-Proxy代理模式的思想是:不让外部直接访问具34Spring-Proxy 下面演练用Proxy模式来实现JDBC事务管理,先看类图:先编写Dao接口,让所有访问数据库的类和代理类都继承该接口,然后在代理类中传入要访问的具体类。这样就能通过代理类完成对具体实例的访问。J2EE架构设计UML软件工程组织Spring-Proxy 下面演练用Proxy模式来实现JD35Spring-ProxyJ2EE架构设计UML软件工程组织Spring-ProxyJ2EE架构设计UML软件工程组织36Spring-ProxyJ2EE架构设计UML软件工程组织Spring-ProxyJ2EE架构设计UML软件工程组织37Spring-Proxy从DaoImpl类中代码可以看出我们没有编写事务的控制代码,而是转交给代理类完成,这样访问数据库的具体类不需要自己关心事务处理。让某一业务逻辑集中实现,能避免重复编写代码,方便修改和维护。上面的例子有两个缺陷局限一个相同的方法名。代理类继承一个具体接口,即使有类似功能的类,当接口改变,需新建继承其接口的代理类。J2EE架构设计UML软件工程组织Spring-Proxy从DaoImpl类中代码可以看出我们38Spring-Proxy上面例子的缺陷可以通过Java的反射机制动态创建实例、方法得到解决。通过该思想,JDK1.3以上版本实现了动态代理(DynamicProxy)。说到这里也许你已经明白SpringAop机制是基于DynamicProxy来实现的。下面让我们来看看通过SpringAop怎样来实现事务管理。J2EE架构设计UML软件工程组织Spring-Proxy上面例子的缺陷可以通过Java的反射39Spring-TransactionManageJ2EE架构设计UML软件工程组织Spring-TransactionManageJ2EE架构40Spring-TransactionManageJ2EE架构设计UML软件工程组织Spring-TransactionManageJ2EE架构41Spring-AOP利用事务管理的例子,我们分析下AOP的概念:方面(Aspect)连接点(JoinPoint)通知(Advice)切入点(PointCut)目标对象(TargetObject)J2EE架构设计UML软件工程组织Spring-AOP利用事务管理的例子,我们分析下AOP的概42Spring-AOPJ2EE架构设计UML软件工程组织Spring-AOPJ2EE架构设计UML软件工程组织43Spring-AOPJ2EE架构设计UML软件工程组织Spring-AOPJ2EE架构设计UML软件工程组织44Spring-AOP方面:我们将业务组件的事务管理部分提取出来,被提取的层面就称为“方面“,如图中的事务管理。方面的意义在于将业务逻辑中复杂问题分离成不同层面,使其实现统一集中的管理。连接点:程序在执行过程中明确的点,如execute()方法。通知:在特定的连接点执行的动作。如在执行execute()方法前的预处理,在执行完execute()方法后的后处理。J2EE架构设计UML软件工程组织Spring-AOP方面:我们将业务组件的事务管理部分提取出45Spring-AOP切入点:连接点的集合,指定在何时引发通知。如事务例子中配置了所有execute.*的方法为切入点。目标对象:包含连接点的对象,也称为被代理的对象。如图中的业务组件。J2EE架构设计UML软件工程组织Spring-AOP切入点:连接点的集合,指定在何时引发通知46Spring-AOP下面我们结合实例项目,看看借助Spring为程序结构、代码组织、业务处理所带来的优越。J2EE架构设计UML软件工程组织Spring-AOP下面我们结合实例项目,看看借助Sprin47Spring-思考在实际项目中哪些业务需求适合借助AOP思想实现?J2EE架构设计UML软件工程组织Spring-思考在实际项目中哪些业务需求适合借助AOP思想48Spring-案例习题请利用SpringIOC机制,完成项目中一组类的改造。请利用SpringAOP机制,设计一个能统一集中处理一组业务需求的类。J2EE架构设计UML软件工程组织Spring-案例习题请利用SpringIOC机制,完成项49Log4j-介绍 log4j是用于java语言的日志记录工具,一个完整的软件,日志是必不可少的。项目开发中日志记录多种多样,有打印在控制台中,有记录成文本文件,有保存到数据库中等。日志信息也许需要分为调试日志,运行日志,异常日志等。这些虽然实现简单,但是也繁琐。下面将介绍用log4j来实现日志记录。J2EE架构设计UML软件工程组织Log4j-介绍 log4j是用于java语言的日志记录工具50Log4j-搭建环境下载log4j,/log4j,将log4j.jar拷贝到项目的lib中,并引用。建立log4j的配置文件,Log4j.xml或LpertiesJ2EE架构设计UML软件工程组织Log4j-搭建环境下载log4j,http://loggi51Log4j-演练我们结合实例项目代码来演示Log4j的使用及带来的便利。J2EE架构设计UML软件工程组织Log4j-演练我们结合实例项目代码来演示Log4j的使用及52Struts-介绍 Struts是用于实现Web项目中UI层的开源产品,是MVC模式的经典实现案例。它属于Apache组织中的开源产品之一,之所以使用Struts:Struts将业务数据、页面显示、动作处理进行分离,这有利各部分的维护Struts采用FrontController模式来实现动作处理,让所有的动作请求都是经过一个统一入口,然后进行分发。这样方便我们在入口中加入全局控制代码的实现,如安全控制、日志管理、国际化编码等J2EE架构设计UML软件工程组织Struts-介绍 Struts是用于实现Web项目中UI层53Struts-介绍通过Struts提供的ActionForm封装webform中的元素,使重用web表单成为可能借助StrutsValidator框架帮助完成web层的验证工作,通常情况下我们不用再去为每个web页面写其验证代码,只需通过配置即可实现。这也减少了我们的开发量,由于验证代码的集中管理,也为维护带来便利J2EE架构设计UML软件工程组织Struts-介绍通过Struts提供的ActionForm54Struts-快速入门我们结合实例来讲解Struts的应用:下载Struts,将其相关jar包引用到Web项目在web项目的web.xml中配置Action影射,将相应请求动作交给Struts提供的ActionServlet类进行统一控制在web.xm配置所需要用到的的Struts标签文件建立ActionForm、Action建立视图文件J2EE架构设计UML软件工程组织Struts-快速入门我们结合实例来讲解Struts的应用:55Struts-ActionFrom ActionFrom是用来传输表单数据的对象,通过配置文件可以关联到对应的Action,实现在UI层与业务层之间的数据传输。实现机制:Struts提供了一个org.apache.struts.action.ActionForm类,里面实现了将请求表单中的元素赋值给其具体的实现类属性。因此自定义ActionForm类时,只需继承该类即可。在自定义ActionForm类时请保证其属性名称与所对应表单名称一致。J2EE架构设计UML软件工程组织Struts-ActionFrom ActionFrom是用56Struts-ActionFrom当触发Action时,通过配置文件匹配到对应ActionFrom实例,以参数形式传入。ActionForm的实现虽然简单,但是随着界面的增加,ActionForm类也会增加,造成代码膨胀。在Struts1.1以上版本提供了ActionForm的另一个实现类,org.apache.struts.action.DynaActionForm,该类充当所有ActionForm的代理类,只需在配置ActionFrom时指定用该类实现即可J2EE架构设计UML软件工程组织Struts-ActionFrom当触发Action时,通过57Struts-ActionAction充当了控制器的角色,每个请求都会触发到Action类,我们在这里处理逻辑业务,分发数据,链接转向。其实现机制:在web.xml配置影射规则,符合其影射条件的请求都会交给org.apache.struts.action.ActionServlet类处理,在该类中将会实现org.apache.struts.action.Action类中的相应方法。在自定义Action类时只需继承该类,实现execute方法,即可让自定义的Action得到触发。J2EE架构设计UML软件工程组织Struts-ActionAction充当了控制器的角色,每58Struts-Actionexecute()方法中ActionMapping、ActionForm实例通过读取配置文件获得。J2EE架构设计UML软件工程组织Struts-Actionexecute()方法中Acti59Struts-客户端验证 在UI中对用户提交的数据作验证是必不可少的,Struts也提供了相应的实现。下面将结合实例演示一个登录界面的校验:申明校验实现类,Struts中校验功能是通过org.apache.struts.validator.ValidatorPlugIn类实现。完善校验规则文件。在validator-rules.xml中定义了常用的客户端验证规则,如,不为空,只允许数字等。特殊的实现需要在此扩充J2EE架构设计UML软件工程组织Struts-客户端验证 在UI中对用户提交的数据作验证是必60Struts-客户端验证定义要被验证的表单信息建立存放验证提示信息的资源文件在界面设置触发条件,如onsubmit时响应验证动作J2EE架构设计UML软件工程组织Struts-客户端验证定义要被验证的表单信息J2EE架构设61Hiernate-介绍对象到关系型数据映射(ORM)是架构中热门的话题,人们希望用ORM工具从单调的SQL中解脱出来,规范数据层的开发,提高开发效率。Hibernate也是实现这样的功能。Hibernate性能稳定、参考文档齐全,有专门的组织提供升级与技术支持。J2EE架构设计UML软件工程组织Hiernate-介绍对象到关系型数据映射(ORM)是架构中62Hibernate-搭建环境从下载hibernate最新发行包。然后将hibernate相关jar包加入项目lib,并引用。影射文件。影射类。加载配置信息。J2EE架构设计UML软件工程组织Hibernate-搭建环境从www.hibernate.o63Hiernate-培训内容下面我们将以此介绍关于Hiernate的如下运用:表与表之间关联操作多数据库操作事务管理DAO模式与Spring结合使用辅助功能介绍J2EE架构设计UML软件工程组织Hiernate-培训内容下面我们将以此介绍关于Hierna64Hibernate-one-to-one一对一关联有两种方式:主键关联 主键关联不需借助外部字段,直接通过两个表的主键关联,因此必须保证两个表的主键值一致。通常借助foreign标识符生成器策略。唯一外键关联 在主动方加入外键进行关联,这样主动方与被动方的影射关系实际上就成了多对一的关联。

J2EE架构设计UML软件工程组织Hibernate-one-to-one一对一关联有两种方式65Hibernate-one-to-one-主键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-主键关联J2EE66Hibernate-one-to-one-主键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-主键关联J2EE67Hibernate-one-to-one-主键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-主键关联J2EE68Hibernate-one-to-one-外键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-外键关联J2EE69Hibernate-one-to-one-外键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-外键关联J2EE70Hibernate-one-to-one-外键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-外键关联J2EE71Hibernate-many-to-many 表之间多对多的关联,通常借助中间表来实现,在实际的项目开发中也会经常碰到,假设实现一个员工薪金计算,Employee表存放员工信息,Welfare表存放福利项目信息,Salary表存放员工薪金信息,一个员工可以拥有多项福利,一项福利可以被多个员工拥有。Salary表用来保存这些关联关系。J2EE架构设计UML软件工程组织Hibernate-many-to-many 表之间多对多的72Hibernate-many-to-manyJ2EE架构设计UML软件工程组织Hibernate-many-to-manyJ2EE架构设计73Hibernate-many-to-manyJ2EE架构设计UML软件工程组织Hibernate-many-to-manyJ2EE架构设计74Hibernate-many-to-manyJ2EE架构设计UML软件工程组织Hibernate-many-to-manyJ2EE架构设计75Hibernate-many-to-manyJ2EE架构设计UML软件工程组织Hibernate-many-to-manyJ2EE架构设计76Hibernate-复合主键 复合主键是由多个字段一起组成,以此来构成唯一键值。假设实现一个游戏的注册功能。User表来存放用户信息,Game表来存放游戏信息,Register表存放注册信息。一个人可以注册多个不同游戏,但是同一个人不允许重复注册同一个游戏。J2EE架构设计UML软件工程组织Hibernate-复合主键 复合主键是由多个字段一起组成,77Hibernate-复合主键J2EE架构设计UML软件工程组织Hibernate-复合主键J2EE架构设计UML软件工程组78Hibernate-复合主键J2EE架构设计UML软件工程组织Hibernate-复合主键J2EE架构设计UML软件工程组79Hibernate-复合主键J2EE架构设计UML软件工程组织Hibernate-复合主键J2EE架构设计UML软件工程组80Hibernate-复合主键J2EE架构设计UML软件工程组织Hibernate-复合主键J2EE架构设计UML软件工程组81Hibernate-与Spring结合使用 SpringFramework考虑到了与hibernate的集成,为此提供了一些非常好用的类:org.springframework.orm.hibernate.LocalSessionFactoryBea,封装Hibernate的SessionFactory。HibernateTransactionManager,封装hibernate事务管理 其次,Spring让HibernateDAO层的开发变得更为优雅,下面一一介绍。J2EE架构设计UML软件工程组织Hibernate-与Spring结合使用 SpringF82Hibernate--配置SessionFactoryJ2EE架构设计UML软件工程组织Hibernate--配置SessionFactoryJ2E83Hibernate--配置SessionFactoryJ2EE架构设计UML软件工程组织Hibernate--配置SessionFactoryJ2E84Hibernate--配置SessionFactory 将SessionFactory配置在Spring中最大的好处体现在当项目中需要多个不同的SessionFactory时所带来的便利,如,操作多个不同数据库,我们需要分别建立不同的datasource和SessionFactory,这样在DAO操作代码中需要判断该用哪个SessionFactory,而我们借助Spring可以让具体DAO脱离具体SessionFactory,也就是说,DAO层完全可以不用关心具体数据源。J2EE架构设计UML软件工程组织Hibernate--配置SessionFactory 将S85Hibernate-manyDatabaseJ2EE架构设计UML软件工程组织Hibernate-manyDatabaseJ2EE架构设86Hibernate-manyDatabaseJ2EE架构设计UML软件工程组织Hibernate-manyDatabaseJ2EE架构设87Hibernate-manyDatabaseJ2EE架构设计UML软件工程组织Hibernate-manyDatabaseJ2EE架构设88Hibernate-manyDatabaseJ2EE架构设计UML软件工程组织Hibernate-manyDatabaseJ2EE架构设89Hibernate-manyDatabaseJ2EE架构设计UML软件工程组织Hibernate-manyDatabaseJ2EE架构设90Hibernate-DAO模式 在业务类中既写逻辑,又写与底层存储媒介交互代码,使业务类变得复杂,且不便于维护,因此我们用DAO模式将业务逻辑与底层存储媒介交互分离,DAO的英文全称为DataAccessObject。从实例的架构图中可以看出,DAO充当业务层与持久层的交互入口。J2EE架构设计UML软件工程组织Hibernate-DAO模式 在业务类中既写逻辑,又写与底91Hibernate-DAO模式 假设实现一个用户信息添加、修改、删除、查找的功能。我们将这些调用持久层CRUD的操作,封装在DAO对象中;将接收UI数据、逻辑判断封装在业务管理类中。其代实现码如下:J2EE架构设计UML软件工程组织Hibernate-DAO模式 假设实现一个用户信息添加、修92Hibernate-DAO模式J2EE架构设计UML软件工程组织Hibernate-DAO模式J2EE架构设计UML软件工程93Hibernate-DAO模式J2EE架构设计UML软件工程组织Hibernate-DAO模式J2EE架构设计UML软件工程94Hibernate-DAO模式-思考示例代码中BookDao类中继承了HibernateDaoSupport,BookManager类设置了注入DAO的属性,请思考如何在Spring配置文件中进行配置,使示例代码正常运行?J2EE架构设计UML软件工程组织Hibernate-DAO模式-思考示例代码中BookDao95Hibernate-事务管理 Hibernate中事务管理分为两种:基于JDBC的事务管理,简单封装了JDBC的事务管理,因此其作用范围在当前JDBC连接中,也就是说只能在当前Session中有效。基于JTA的事务管理,利用容器管理,可以跨越多个 Session。J2EE架构设计UML软件工程组织Hibernate-事务管理 Hibernate中事务管理分96Hibernate-事务管理J2EE架构设计UML软件工程组织Hibernate-事务管理J2EE架构设计UML软件工程组97Hibernate-事务管理 上面的示例代码展示了惯用的事务管理书写格式,在讲述SpringAOP应用的章节,曾讲述了利用AOP思想进行事务的集中管理,同样对于Hibernate的事务管理也可以利用此思想,下面让我们看看如何使用:J2EE架构设计UML软件工程组织Hibernate-事务管理 上面的示例代码展示了惯用的事务98Hibernate-事务管理J2EE架构设计UML软件工程组织Hibernate-事务管理J2EE架构设计UML软件工程组99Hibernate-事务管理 通过借助SpringAOP来管理事务,如下代码即可实现与在DAO类中书写事务管理代码同样的功能:J2EE架构设计UML软件工程组织Hibernate-事务管理 通过借助SpringAOP来100Hibernate-辅助工具 在编写数据库影射文件与影射类时,可以借助一些工具来生成,减少工作量:Xdoclet:通过影射类中的Xdoclet标签,自动生成影射文件。Middlegen:通过数据表生成影射文件。Hbm2java:通过带Xdoclet标签的映射文件生成映射类。J2EE架构设计UML软件工程组织Hibernate-辅助工具 在编写数据库影射文件与影射类时101Hibernate-辅助工具-Xdoclet xdoclet依靠标签完成与影射文件的同步,在实际开发中可以将影射类与影射文件的同步工作加入Ant任务中,给开发带来便利。接下来我们根据实例项目演示其使用。J2EE架构设计UML软件工程组织Hibernate-辅助工具-Xdoclet xdoclet102Hibernate-辅助工具-Middlegen Middlegen是Hibernate官方提供的从数据表到映射文件的转换工具,支持多种主流数据库;还可以通过配置生成Xdoclet标签,使得其影射文件可以通过工具转换成映射类。接下来我们根据实例项目演示其使用。J2EE架构设计UML软件工程组织Hibernate-辅助工具-Middlegen Middl103Hibernate-辅助工具-Hbm2java 我们可以从HibernateExtension工具包中找到hbm2java工具,它借助Xdoclet标签完成从影射文件到影射类的转换。接下来我们根据实例项目演示其使用。J2EE架构设计UML软件工程组织Hibernate-辅助工具-Hbm2java 我们可以从104Hibernate-回顾 到此我们已经介绍了Hibernate常用的功能,使用任何一个工具之前,应先透彻了解其原理与意义,结合实际做出合理的取舍。 在示例代码中我们可以看出与传统数据层代码最大的区别是:我们针对是对象而不是数据库字段及字符串值。对比下面代码,你会深有体会:J2EE架构设计UML软件工程组织Hibernate-回顾 到此我们已经介绍了Hibernat105Hibernate-案例练习请尝试表与表简各种关联实现:一对一关联一对多关联多对多关联J2EE架构设计UML软件工程组织Hibernate-案例练习请尝试表与表简各种关联实现:J2106软件测试与部署-Junit 一个成熟的软件离不开测试,有的编程思想甚至提倡由测试用例来引导业务类的开发。单元测试是测试范畴中代码阶段的测试,通常由程序员完成。在Java开发中我们常用的单元测试工具是Junit,在Eclipse中也集成了此工具。其使用非常简单,我们根据实际操作来介绍Junit的使用。J2EE架构设计UML软件工程组织软件测试与部署-Junit 一个成熟的软件离不开测试,有的编107软件测试与部署-Ant Ant是一个自动构建工具,但其功能不仅仅是限于构建工作,很多工具都有支持Ant的任务接口,如Junit、Xdoclet等。我们可以通过配置文件制定一系列任务,使其批量执行。比如我们每天开发完代码后要做如下的工作:编译代码-执行单元测试-发送测试报告-版本管理-打包部署-发布新版本。 Ant的使用简单而灵活,我们可以制定具体目标、任务和其执行的先后顺序。接下来,我们结合实例介绍Ant的使用。J2EE架构设计UML软件工程组织软件测试与部署-Ant Ant是一个自动构建工具,但其功能不108回顾 到此我们讲述了开发一个系统所涉及到的各个层面(UI、Business、ORM)以及如何借助成熟的工具来实现的细节。希望大家能吸取到从这些优秀的设计、实现思想,延深到实际开发中,帮助大家更好的分析问题、解决问题。J2EE架构设计UML软件工程组织回顾 到此我们讲述了开发一个系统所涉及到的各个层面(UI、B109案例练习请按讲述的架构实现一个完整的业务功能:用Struts实现UI层。用Spring组装业务类用Hibernate实现持久层。J2EE架构设计UML软件工程组织案例练习请按讲述的架构实现一个完整的业务功能:J2EE架构设110UML软件工程组织使命

相关培训课程:真实再现:需求开发与管理(3天)真实再现:UML&OOAD(4天)真实再现:统一软件开发过程(2天)J2EE架构设计UML软件工程组织UML软件工程组织使命

相关培训课程:J2EE架构设计U111演讲完毕,谢谢听讲!再见,seeyouagain2022/10/25J2EE架构设计UML软件工程组织演讲完毕,谢谢听讲!再见,seeyouagain2022112J2EE架构设计-UML软件工程组织2022/10/25J2EE架构设计UML软件工程组织J2EE架构设计-UML软件工程组织2022-10-18J2113课程安排第一部份:介绍实例架构结合实例讲解Web项目总体结构分析多层结构优点具体讲解每个层次的实现技巧J2EE架构设计UML软件工程组织课程安排第一部份:介绍实例架构J2EE架构设计UML软件工程114课程安排第二部分:介绍组织层次关联利器(Spring)快速入门Factory模式IOC模式AOP模式演练Spring的威力J2EE架构设计UML软件工程组织课程安排第二部分:介绍组织层次关联利器(Spring)J2E115课程安排第三部分:介绍日志管理利器(Log4j)快速入门演练Log4j的优越性J2EE架构设计UML软件工程组织课程安排第三部分:介绍日志管理利器(Log4j)J2EE架构116课程安排第四部分:介绍UI层利器(Struts)Struts介绍快速入门ActionFromAction客户端验证J2EE架构设计UML软件工程组织课程安排第四部分:介绍UI层利器(Struts)J2EE架构117课程安排第五部分:介绍数据持久层利器(HIbernate)快速入门介绍辅助工具表与表之间关联操作多数据库操作事务管理DAO模式与Spring结合使用J2EE架构设计UML软件工程组织课程安排第五部分:介绍数据持久层利器(HIbernate)J118课程安排第六部分:介绍软件测试与部署借助Junit的单元测试借助Ant的自动部署J2EE架构设计UML软件工程组织课程安排第六部分:介绍软件测试与部署J2EE架构设计UML软119实例架构J2EE架构设计UML软件工程组织实例架构J2EE架构设计UML软件工程组织120层次介绍实例分为四层:通过Struts实现UI层通过Spring实现业务层通过Hibernate实现数据持久层传输于各层的域对象层J2EE架构设计UML软件工程组织层次介绍实例分为四层:J2EE架构设计UML软件工程组织121结构优点通过成熟的开源产品搭建层次清晰性能稳定的系统架构。层与层之间松散耦合,增加代码重用率,提高开发效率。每一层充当各自具体任务,便于团队分工和后期维护。稳健的架构能承受业务的扩展,不至于使项目失控。J2EE架构设计UML软件工程组织结构优点通过成熟的开源产品搭建层次清晰性能稳定的系统架构。J122UILayerUI是UserInterface的缩写,这一层是面向用户的界面,充当与用户互动的角色。即接受用户请求作出响应。实现这一功能最佳经验即MVC模式,实例中该层借助Struts实现,Struts本身就是MVC思想的产物。

J2EE架构设计UML软件工程组织UILayerUI是UserInterface的缩写123UILayerStruts提供ActionFrom来封装与用户互动的数据元素。Struts提供Action来接受用户请求与发生响应动作。Struts提供ValidatorPlugIn来进行UI验证。J2EE架构设计UML软件工程组织UILayerStruts提供ActionFrom来封装与124BusinessLayer 具体的业务逻辑通常导致代码的高度耦合,因此我们将业务逻辑分为单独的一层,其目的也是希望通过层,来降低它与系统其他部分的耦合度。该层借助Spring可以达到更好的效果。通过Spring的IOC模式来装配业务组件,如,DAO对象。使系统更具扩展性。通过SpringAOP(面向方面)思想,来集中处理具体业务,如事务管理,使代码更为简洁,增加复用,提高开发效率。J2EE架构设计UML软件工程组织BusinessLayer 具体的业务逻辑通常导致代码的高125PersistenceLayer在传统的系统开发中该层占据大部分的开发时间,且随着需求的变更功能的修改,逐渐变得难以控制,特别是表结构的变化可能导致整个系统大动干戈。在实例中我们借助Hibernate,利用其持久化机制和CRUD封装来减少代码开发量和其他层次的耦合度。

J2EE架构设计UML软件工程组织PersistenceLayer在传统的系统开发中该层126DomainLayer 该层应该说是ORM思想的产物,ORM用对象关联数据表,允许数据表中数据放入对象,也允许对象中数据更新到数据表,我们将这些对象的集合归为一个专门的层次即DomainLayer。域对象承担各层之间数据通信的载体。实际上域对象也是一个完完全全的业务对象,如User对象、Book对象。通过对业务的对象化,这有利于业务逻辑的重用。J2EE架构设计UML软件工程组织DomainLayer 该层应该说是ORM思想的产物,OR127系统结构-回顾 将系统进行如上的分成,从理论上可以让其承担各自职责,UI层提供友好的用户交互、业务层处理具体问题领域逻辑、持久层完成于数据库读取存储、域模型承担数据传输的载体。将一个复杂的应用领域细分成诸多最小单元,然后进行串联、组合。使得一个应用领域的实现过程中,最小单元达到最大复用。J2EE架构设计UML软件工程组织系统结构-回顾 将系统进行如上的分成,从理论上可以让其承担各128Spring-简介 springFramework是种非侵入式轻量级框架,允许自由选择和组装各部分功能,也提供了和其他很多软件集成的接口,如与Hibernate、Struts的集成。Spring主要功能有DependencyInjection、SpringContext、SpringAOP、SpringORM、SpringDAO、SpringMVC。J2EE架构设计UML软件工程组织Spring-简介 springFramework是种非侵入129Spring-为什么使用Spring利用延时注入思想组装代码,提高系统扩展性,灵活性,实现插件式编程。利用AOP思想,集中处理业务逻辑,减少重复代码,构建优雅的解决方案。利用HibernateTransactionManager类封装Hibernate事务管理,其是AOP思想的典型运用,使持久层操作代码简洁精悍。J2EE架构设计UML软件工程组织Spring-为什么使用Spring利用延时注入思想组装代码130Spring-搭建Web应用环境下载springFramework最新版本,将其下的*.jar拷贝到项目lib中,并引用。在Web.xml中配置spring的启动方式:Listener方式或Servlet方式。设置Spring配置文件。通常在系统运行前完Spring成初始化工作,因此在Web.xml中配置一个初始化Servlet。J2EE架构设计UML软件工程组织Spring-搭建Web应用环境下载springFramew131Spring-搭建Web应用环境J2EE架构设计UML软件工程组织Spring-搭建Web应用环境J2EE架构设计UML软件工132Spring-搭建Web应用环境J2EE架构设计UML软件工程组织Spring-搭建Web应用环境J2EE架构设计UML软件工133Spring-搭建Web应用环境J2EE架构设计UML软件工程组织Spring-搭建Web应用环境J2EE架构设计UML软件工134Spring-Factory模式在实际开发中会经常用到工厂模式,其完成的功能是使外部调用类不需关心具体实现类,这样非常适合在同一个事物类型具有多种不同实现的情况下使用。要实现工厂模式我们必须设计AbstractFactory类AbstractProduct类,为了实现灵活性还可能用反射机制构建Product实体。在得到具体实现类的时候也必须通过工厂类完成,如图所示:J2EE架构设计UML软件工程组织Spring-Factory模式在实际开发中会经常用到工厂模135Spring-Factory模式J2EE架构设计UML软件工程组织Spring-Factory模式J2EE架构设计UML软件工136Spring-依赖注入Spring的依赖注入能达到工厂模式的同样的效果,但其实现却优雅很多。看如下代码:在Spring配置文件中配置Bean实现代码:Producta=XXX.getBean(“Product");这样即得到了ProductA的实例,代码中只硬编码了Product接口。是不是让你兴奋了?J2EE架构设计UML软件工程组织Spring-依赖注入Spring的依赖注入能达到工厂模式的137Spring-依赖注入Spring还允许以下三种方式实现依赖注入:设值注入接口注入构造函数注入J2EE架构设计UML软件工程组织Spring-依赖注入Spring还允许以下三种方式实现依赖138Spring-依赖注入我们重点讲述设值注入方式,先来看看通过设值注入能给实际开发带来什么好处.下图是不是让你有所领悟?J2EE架构设计UML软件工程组织Spring-依赖注入我们重点讲述设值注入方式,先来看看通过139Spring-演练我们利用设值注入实现一个简单的计算器,让它实现两个数的加法或减法运算。类图如下:Product实现类中与具体实现类无关联、无依赖,通过外部配置即可自由切换实现类,美妙!J2EE架构设计UML软件工程组织Spring-演练我们利用设值注入实现一个简单的计算器,让它140Spring-演练假设我们要实现两个数相加,则配置如下(如果需要实现两个数相减,则将注释的algorithmBean替换掉当前的即可):J2EE架构设计UML软件工程组织Spring-演练假设我们要实现两个数相加,则配置如下(如果141Spring-演练测试代码如下,根据具体的实现类不同将得到两个数相应运算的结果。J2EE架构设计UML软件工程组织Spring-演练测试代码如下,根据具体的实现类不同将得到两142Spring-依赖注入总结 从演练的例子可以看出Spring提供的依赖注入思想能让代码之间依赖性降低,转而交给配置文件进行外部配置,这样对于需求变化、后期维护、功能扩展带来便利。 Spring是一种工具,更是一种思想,开发人员可以在设计代码时发挥无限想象,挖掘出最适应项目代码组织形式。J2EE架构设计UML软件工程组织Spring-依赖注入总结 从演练的例子可以看出Spring143Spring-AOP模式 AOP的全称为AspectOrientedProgramming,译为“面向方面编程”或“面向切面编程”,与熟悉的OOP(面向对象编程)思想所关注的目标有本质上的区别,AOP是针对具体业务领域、业务逻辑;OOP针对业务对象。 Spring中事务管理机制就是AOP的一个具体运用。 利用此机制省去了我们在每个具体实现类中去进行事务管理的编码,而将这一切交给Spring提供的事务代理实现类erceptor.TransactionProxyFactoryBean。

J2EE架构设计UML软件工程组织Spring-AOP模式 AOP的全称为AspectOri144Spring-AOP模式在讲述AOP运用之前我们先来了解下AOP实现原理。Spring的DependencyInjection和AOP都是某一设计模式的经典应用及放大。也许通过Spring的事物管理机制你已经将AOP的实现原理与代理模式联系在一起了。的确如此,让我们先看看代理模式的思想。J2EE架构设计UML软件工程组织Spring-AOP模式在讲述AOP运用之前我们先来了解下A145Spring-Proxy代理模式的思想是:不让外部直接访问具体目标,而是通过一个代理类才能访问具体目标。类似在具体目标与外部之间放置一道“隔离层“,所有与具体目标的通信均需通过这道”隔离层”来传送请求和返回状态。这样“隔离层“就能掌控访问具体目标的前前后后。如果我们需要在访问具体目标前或后加上一致的处理逻辑,无疑代理模式最为适合。就如事物管理。J2EE架构设计UML软件工程组织Spring-Proxy代理模式的思想是:不让外部直接访问具146Spring-Proxy 下面演练用Proxy模式来实现JDBC事务管理,先看类图:先编写Dao接口,让所有访问数据库的类和代理类都继承该接口,然后在代理类中传入要访问的具体类。这样就能通过代理类完成对具体实例的访问。J2EE架构设计UML软件工程组织Spring-Proxy 下面演练用Proxy模式来实现JD147Spring-ProxyJ2EE架构设计UML软件工程组织Spring-ProxyJ2EE架构设计UML软件工程组织148Spring-ProxyJ2EE架构设计UML软件工程组织Spring-ProxyJ2EE架构设计UML软件工程组织149Spring-Proxy从DaoImpl类中代码可以看出我们没有编写事务的控制代码,而是转交给代理类完成,这样访问数据库的具体类不需要自己关心事务处理。让某一业务逻辑集中实现,能避免重复编写代码,方便修改和维护。上面的例子有两个缺陷局限一个相同的方法名。代理类继承一个具体接口,即使有类似功能的类,当接口改变,需新建继承其接口的代理类。J2EE架构设计UML软件工程组织Spring-Proxy从DaoImpl类中代码可以看出我们150Spring-Proxy上面例子的缺陷可以通过Java的反射机制动态创建实例、方法得到解决。通过该思想,JDK1.3以上版本实现了动态代理(DynamicProxy)。说到这里也许你已经明白SpringAop机制是基于DynamicProxy来实现的。下面让我们来看看通过SpringAop怎样来实现事务管理。J2EE架构设计UML软件工程组织Spring-Proxy上面例子的缺陷可以通过Java的反射151Spring-TransactionManageJ2EE架构设计UML软件工程组织Spring-TransactionManageJ2EE架构152Spring-TransactionManageJ2EE架构设计UML软件工程组织Spring-TransactionManageJ2EE架构153Spring-AOP利用事务管理的例子,我们分析下AOP的概念:方面(Aspect)连接点(JoinPoint)通知(Advice)切入点(PointCut)目标对象(TargetObject)J2EE架构设计UML软件工程组织Spring-AOP利用事务管理的例子,我们分析下AOP的概154Spring-AOPJ2EE架构设计UML软件工程组织Spring-AOPJ2EE架构设计UML软件工程组织155Spring-AOPJ2EE架构设计UML软件工程组织Spring-AOPJ2EE架构设计UML软件工程组织156Spring-AOP方面:我们将业务组件的事务管理部分提取出来,被提取的层面就称为“方面“,如图中的事务管理。方面的意义在于将业务逻辑中复杂问题分离成不同层面,使其实现统一集中的管理。连接点:程序在执行过程中明确的点,如execute()方法。通知:在特定的连接点执行的动作。如在执行execute()方法前的预处理,在执行完execute()方法后的后处理。J2EE架构设计UML软件工程组织Spring-AOP方面:我们将业务组件的事务管理部分提取出157Spring-AOP切入点:连接点的集合,指定在何时引发通知。如事务例子中配置了所有execute.*的方法为切入点。目标对象:包含连接点的对象,也称为被代理的对象。如图中的业务组件。J2EE架构设计UML软件工程组织Spring-AOP切入点:连接点的集合,指定在何时引发通知158Spring-AOP下面我们结合实例项目,看看借助Spring为程序结构、代码组织、业务处理所带来的优越。J2EE架构设计UML软件工程组织Spring-AOP下面我们结合实例项目,看看借助Sprin159Spring-思考在实际项目中哪些业务需求适合借助AOP思想实现?J2EE架构设计UML软件工程组织Spring-思考在实际项目中哪些业务需求适合借助AOP思想160Spring-案例习题请利用SpringIOC机制,完成项目中一组类的改造。请利用SpringAOP机制,设计一个能统一集中处理一组业务需求的类。J2EE架构设计UML软件工程组织Spring-案例习题请利用SpringIOC机制,完成项161Log4j-介绍 log4j是用于java语言的日志记录工具,一个完整的软件,日志是必不可少的。项目开发中日志记录多种多样,有打印在控制台中,有记录成文本文件,有保存到数据库中等。日志信息也许需要分为调试日志,运行日志,异常日志等。这些虽然实现简单,但是也繁琐。下面将介绍用log4j来实现日志记录。J2EE架构设计UML软件工程组织Log4j-介绍 log4j是用于java语言的日志记录工具162Log4j-搭建环境下载log4j,/log4j,将log4j.jar拷贝到项目的lib中,并引用。建立log4j的配置文件,Log4j.xml或LpertiesJ2EE架构设计UML软件工程组织Log4j-搭建环境下载log4j,http://loggi163Log4j-演练我们结合实例项目代码来演示Log4j的使用及带来的便利。J2EE架构设计UML软件工程组织Log4j-演练我们结合实例项目代码来演示Log4j的使用及164Struts-介绍 Struts是用于实现Web项目中UI层的开源产品,是MVC模式的经典实现案例。它属于Apache组织中的开源产品之一,之所以使用Struts:Struts将业务数据、页面显示、动作处理进行分离,这有利各部分的维护Struts采用FrontController模式来实现动作处理,让所有的动作请求都是经过一个统一入口,然后进行分发。这样方便我们在入口中加入全局控制代码的实现,如安全控制、日志管理、国际化编码等J2EE架构设计UML软件工程组织Struts-介绍 Struts是用于实现Web项目中UI层165Struts-介绍通过Struts提供的ActionForm封装webform中的元素,使重用web表单成为可能借助StrutsValidator框架帮助完成web层的验证工作,通常情况下我们不用再去为每个web页面写其验证代码,只需通过配置即可实现。这也减少了我们的开发量,由于验证代码的集中管理,也为维护带来便利J2EE架构设计UML软件工程组织Struts-介绍通过Struts提供的ActionForm166Struts-快速入门我们结合实例来讲解Struts的应用:下载Struts,将其相关jar包引用到Web项目在web项目的web.xml中配置Action影射,将相应请求动作交给Struts提供的ActionServlet类进行统一控制在web.xm配置所需要用到的的Struts标签文件建立ActionForm、Action建立视图文件J2EE架构设计UML软件工程组织Struts-快速入门我们结合实例来讲解Struts的应用:167Struts-ActionFrom ActionFrom是用来传输表单数据的对象,通过配置文件可以关联到对应的Action,实现在UI层与业务层之间的数据传输。实现机制:Struts提供了一个org.apache.struts.action.ActionForm类,里面实现了将请求表单中的元素赋值给其具体的实现类属性。因此自定义ActionForm类时,只需继承该类即可。在自定义ActionForm类时请保证其属性名称与所对应表单名称一致。J2EE架构设计UML软件工程组织Struts-ActionFrom ActionFrom是用168Struts-ActionFrom当触发Action时,通过配置文件匹配到对应ActionFrom实例,以参数形式传入。ActionForm的实现虽然简单,但是随着界面的增加,ActionForm类也会增加,造成代码膨胀。在Struts1.1以上版本提供了ActionForm的另一个实现类,org.apache.struts.action.DynaActionForm,该类充当所有ActionForm的代理类,只需在配置ActionFrom时指定用该类实现即可J2EE架构设计UML软件工程组织Struts-ActionFrom当触发Action时,通过169Struts-ActionAction充当了控制器的角色,每个请求都会触发到Action类,我们在这里处理逻辑业务,分发数据,链接转向。其实现机制:在web.xml配置影射规则,符合其影射条件的请求都会交给org.apache.struts.action.ActionServlet类处理,在该类中将会实现org.apache.struts.action.Action类中的相应方法。在自定义Action类时只需继承该类,实现execute方法,即可让自定义的Action得到触发。J2EE架构设计UML软件工程组织Struts-ActionAction充当了控制器的角色,每170Struts-Actionexecute()方法中ActionMapping、ActionForm实例通过读取配置文件获得。J2EE架构设计UML软件工程组织Struts-Actionexecute()方法中Acti171Struts-客户端验证 在UI中对用户提交的数据作验证是必不可少的,Struts也提供了相应的实现。下面将结合实例演示一个登录界面的校验:申明校验实现类,Struts中校验功能是通过org.apache.struts.validator.ValidatorPlugIn类实现。完善校验规则文件。在validator-rules.xml中定义了常用的客户端验证规则,如,不为空,只允许数字等。特殊的实现需要在此扩充J2EE架构设计UML软件工程组织Struts-客户端验证 在UI中对用户提交的数据作验证是必172Struts-客户端验证定义要被验证的表单信息建立存放验证提示信息的资源文件在界面设置触发条件,如onsubmit时响应验证动作J2EE架构设计UML软件工程组织Struts-客户端验证定义要被验证的表单信息J2EE架构设173Hiernate-介绍对象到关系型数据映射(ORM)是架构中热门的话题,人们希望用ORM工具从单调的SQL中解脱出来,规范数据层的开发,提高开发效率。Hibernate也是实现这样的功能。Hibernate性能稳定、参考文档齐全,有专门的组织提供升级与技术支持。J2EE架构设计UML软件工程组织Hiernate-介绍对象到关系型数据映射(ORM)是架构中174Hibernate-搭建环境从下载hibernate最新发行包。然后将hibernate相关jar包加入项目lib,并引用。影射文件。影射类。加载配置信息。J2EE架构设计UML软件工程组织Hibernate-搭建环境从www.hibernate.o175Hiernate-培训内容下面我们将以此介绍关于Hiernate的如下运用:表与表之间关联操作多数据库操作事务管理DAO模式与Spring结合使用辅助功能介绍J2EE架构设计UML软件工程组织Hiernate-培训内容下面我们将以此介绍关于Hierna176Hibernate-one-to-one一对一关联有两种方式:主键关联 主键关联不需借助外部字段,直接通过两个表的主键关联,因此必须保证两个表的主键值一致。通常借助foreign标识符生成器策略。唯一外键关联 在主动方加入外键进行关联,这样主动方与被动方的影射关系实际上就成了多对一的关联。

J2EE架构设计UML软件工程组织Hibernate-one-to-one一对一关联有两种方式177Hibernate-one-to-one-主键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-主键关联J2EE178Hibernate-one-to-one-主键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-主键关联J2EE179Hibernate-one-to-one-主键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-主键关联J2EE180Hibernate-one-to-one-外键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-外键关联J2EE181Hibernate-one-to-one-外键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-外键关联J2EE182Hibernate-one-to-one-外键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-外键关联J2EE183Hibernate-many-to-many 表之间多对多的关联,通常借助中间表来实现,在实际的项目开发中也会经常碰到,假设实现一个员工薪金计算,Employee表存放员工信息,Welfare表存放福利项目信息,Salary表存放员工薪金信息,一个员工可以拥有多项福利,一项福利可以被

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论