1、J2EE架构设计UML软件工程组织课程安排第一部份:介绍实例架构 结合实例讲解Web项目总体结构 分析多层结构优点 具体讲解每个层次的实现技巧J2EE架构设计UML软件工程组织课程安排第二部分:介绍组织层次关联利器(Spring)快速入门 Factory模式 IOC模式 AOP模式 演练Spring的威力J2EE架构设计UML软件工程组织课程安排第三部分:介绍日志管理利器(Log4j)快速入门 演练Log4j的优越性J2EE架构设计UML软件工程组织课程安排第四部分:介绍UI层利器(Struts)Struts介绍 快速入门 ActionFrom Action 客户端验证J2EE架构设计UML软
2、件工程组织课程安排第五部分:介绍数据持久层利器(HIbernate)快速入门 介绍辅助工具 表与表之间关联操作 多数据库操作 事务管理 DAO模式 与Spring结合使用J2EE架构设计UML软件工程组织课程安排第六部分:介绍软件测试与部署 借助Junit的单元测试 借助Ant的自动部署J2EE架构设计UML软件工程组织实例架构J2EE架构设计UML软件工程组织层次介绍实例分为四层:通过Struts实现UI层 通过Spring实现业务层 通过Hibernate实现数据持久层 传输于各层的域对象层J2EE架构设计UML软件工程组织结构优点 通过成熟的开源产品搭建层次清晰性能稳定的系统架构。层与层
3、之间松散耦合,增加代码重用率,提高开发效率。每一层充当各自具体任务,便于团队分工和后期维护。稳健的架构能承受业务的扩展,不至于使项目失控。J2EE架构设计UML软件工程组织UI Layer UI是User Interface的缩写,这一层是面向用户的界面,充当与用户互动的角色。即接受用户请求作出响应。实现这一功能最佳经验即MVC模式,实例中该层借助Struts实现,Struts本身就是MVC思想的产物。J2EE架构设计UML软件工程组织UI Layer Struts提供ActionFrom来封装与用户互动的数据元素。Struts提供Action来接受用户请求与发生响应动作。Struts提供Va
4、lidatorPlugIn来进行UI验证。J2EE架构设计UML软件工程组织Business Layer具体的业务逻辑通常导致代码的高度耦合,因此我们将业务逻辑分为单独的一层,其目的也是希望通过层,来降低它与系统其他部分的耦合度。该层借助Spring可以达到更好的效果。通过Spring的IOC模式来装配业务组件,如,DAO对象。使系统更具扩展性。通过Spring AOP(面向方面)思想,来集中处理具体业务,如事务管理,使代码更为简洁,增加复用,提高开发效率。J2EE架构设计UML软件工程组织Persistence Layer 在传统的系统开发中该层占据大部分的开发时间,且随着需求的变更功能的修
5、改,逐渐变得难以控制,特别是表结构的变化可能导致整个系统大动干戈。在实例中我们借助Hibernate,利用其持久化机制和CRUD封装来减少代码开发量和其他层次的耦合度。J2EE架构设计UML软件工程组织Domain Layer该层应该说是ORM思想的产物,ORM用对象关联数据表,允许数据表中数据放入对象,也允许对象中数据更新到数据表,我们将这些对象的集合归为一个专门的层次即Domain Layer。域对象承担各层之间数据通信的载体。实际上域对象也是一个完完全全的业务对象,如User对象、Book对象。通过对业务的对象化,这有利于业务逻辑的重用。J2EE架构设计UML软件工程组织系统结构-回顾将
6、系统进行如上的分成,从理论上可以让其承担各自职责,UI层提供友好的用户交互、业务层处理具体问题领域逻辑、持久层完成于数据库读取存储、域模型承担数据传输的载体。将一个复杂的应用领域细分成诸多最小单元,然后进行串联、组合。使得一个应用领域的实现过程中,最小单元达到最大复用。J2EE架构设计UML软件工程组织Spring-简介springFramework是种非侵入式轻量级框架,允许自由选择和组装各部分功能,也提供了和其他很多软件集成的接口,如与Hibernate、Struts的集成。Spring主要功能有 Dependency Injection、Spring Context、Spring AOP
7、、Spring ORM、Spring DAO、Spring MVC。J2EE架构设计UML软件工程组织Spring-为什么使用Spring 利用延时注入思想组装代码,提高系统扩展性,灵活性,实现插件式编程。利用AOP思想,集中处理业务逻辑,减少重复代码,构建优雅的解决方案。利用HibernateTransactionManager类封装Hibernate事务管理,其是AOP思想的典型运用,使持久层操作代码简洁精悍。J2EE架构设计UML软件工程组织Spring-搭建Web应用环境 下载springFramework最新版本,将其下的*.jar 拷贝到项目lib中,并引用。在Web.xml中配置
8、spring的启动方式:Listener方式或Servlet方式。设置Spring配置文件。通常在系统运行前完Spring成初始化工作,因此在Web.xml中配置一个初始化Servlet。J2EE架构设计UML软件工程组织Spring-搭建Web应用环境J2EE架构设计UML软件工程组织Spring-搭建Web应用环境J2EE架构设计UML软件工程组织Spring-搭建Web应用环境J2EE架构设计UML软件工程组织Spring-Factory模式 在实际开发中会经常用到工厂模式,其完成的功能是使外部调用类不需关心具体实现类,这样非常适合在同一个事物类型具有多种不同实现的情况下使用。要实现工厂
9、模式我们必须设计要实现工厂模式我们必须设计AbstractFactoryAbstractFactory类类AbstractProductAbstractProduct类,为了实现灵活性还可能用反射机类,为了实现灵活性还可能用反射机制构建制构建ProductProduct实体。在得到具体实现类的时候也必须实体。在得到具体实现类的时候也必须通过工厂类完成,如图所示:通过工厂类完成,如图所示:J2EE架构设计UML软件工程组织Spring-Factory模式J2EE架构设计UML软件工程组织Spring-依赖注入 Spring的依赖注入能达到工厂模式的同样的效果,但其实现却优雅很多。看如下代码:在S
10、pring配置文件中配置Bean实现代码:Product a=XXX.getBean(“Product);这样即得到了ProductA的实例,代码中只硬编码了Product接口。是不是让你兴奋了?J2EE架构设计UML软件工程组织Spring-依赖注入Spring还允许以下三种方式实现依赖注入:设值注入 接口注入 构造函数注入J2EE架构设计UML软件工程组织Spring-依赖注入 我们重点讲述设值注入方式,先来看看通过设值注入能给实际开发带来什么好处.下图是不是让你有所领悟?J2EE架构设计UML软件工程组织Spring-演练 我们利用设值注入实现一个简单的计算器,让它实现两个数的加法或减法
11、运算。类图如下:Product实现类中与具体实现类无关联、无依赖,通过外部配置即可自由切换实现类,美妙!J2EE架构设计UML软件工程组织Spring-演练 假设我们要实现两个数相加,则配置如下(如果需要实现两个数相减,则将注释的algorithm Bean替换掉当前的即可):J2EE架构设计UML软件工程组织Spring-演练 测试代码如下,根据具体的实现类不同将得到两个数相应运算的结果。J2EE架构设计UML软件工程组织Spring-依赖注入总结从演练的例子可以看出Spring提供的依赖注入思想能让代码之间依赖性降低,转而交给配置文件进行外部配置,这样对于需求变化、后期维护、功能扩展带来便
12、利。Spring是一种工具,更是一种思想,开发人员可以在设计代码时发挥无限想象,挖掘出最适应项目代码组织形式。J2EE架构设计UML软件工程组织Spring-AOP模式AOP的全称为Aspect Oriented Programming,译为“面向方面编程”或“面向切面编程”,与熟悉的OOP(面向对象编程)思想所关注的目标有本质上的区别,AOP是针对具体业务领域、业务逻辑;OOP针对业务对象。Spring中事务管理机制就是AOP的一个具体运用。利用此机制省去了我们在每个具体实现类中去进行事务管理的编码,而将这一切交给Spring提供的事务代理实现类org.springframework.tra
13、nsaction.interceptor.TransactionProxyFactoryBean。J2EE架构设计UML软件工程组织Spring-AOP模式 在讲述AOP运用之前我们先来了解下AOP实现原理。Spring的Dependency Injection和AOP都是某一设计模式的经典应用及放大。也许通过Spring的事物管理机制你已经将AOP的实现原理与代理模式联系在一起了。的确如此,让我们先看看代理模式的思想。J2EE架构设计UML软件工程组织Spring-Proxy 代理模式的思想是:不让外部直接访问具体目标,而是通过一个代理类才能访问具体目标。类似在具体目标与外部之间放置一道“隔
14、离层“,所有与具体目标的通信均需通过这道”隔离层”来传送请求和返回状态。这样“隔离层“就能掌控访问具体目标的前前后后。如果我们需要在访问具体目标前或后加上一致的处理逻辑,无疑代理模式最为适合。就如事物管理。J2EE架构设计UML软件工程组织Spring-Proxy下面演练用Proxy模式来实现JDBC事务管理,先看类图:先编写Dao接口,让所有访问数据库的类和代理类都继承该接口,然后在代理类中传入要访问的具体类。这样就能通过代理类完成对具体实例的访问。J2EE架构设计UML软件工程组织Spring-ProxyJ2EE架构设计UML软件工程组织Spring-ProxyJ2EE架构设计UML软件工
15、程组织Spring-Proxy从DaoImpl类中代码可以看出我们没有编写事务的控制代码,而是转交给代理类完成,这样访问数据库的具体类不需要自己关心事务处理。让某一业务逻辑集中实现,能避免重复编写代码,方便修改和维护。上面的例子有两个缺陷1.局限一个相同的方法名。2.代理类继承一个具体接口,即使有类似功能的类,当接口改变,需新建继承其接口的代理类。J2EE架构设计UML软件工程组织Spring-Proxy 上面例子的缺陷可以通过Java的反射机制动态创建实例、方法得到解决。通过该思想,JDK1.3以上版本实现了动态代理(Dynamic Proxy)。说到这里也许你已经明白Spring Aop机
16、制是基于Dynamic Proxy来实现的。下面让我们来看看通过Spring Aop怎样来实现事务管理。J2EE架构设计UML软件工程组织Spring-TransactionManageJ2EE架构设计UML软件工程组织Spring-TransactionManageJ2EE架构设计UML软件工程组织Spring-AOP利用事务管理的例子,我们分析下AOP的概念:方面(Aspect)连接点(JoinPoint)通知(Advice)切入点(PointCut)目标对象(TargetObject)J2EE架构设计UML软件工程组织Spring-AOPJ2EE架构设计UML软件工程组织Spring-A
17、OPJ2EE架构设计UML软件工程组织Spring-AOP 方面:我们将业务组件的事务管理部分提取出来,被提取的层面就称为“方面“,如图中的事务管理。方面的意义在于将业务逻辑中复杂问题分离成不同层面,使其实现统一集中的管理。连接点:程序在执行过程中明确的点,如execute()方法。通知:在特定的连接点执行的动作。如在执行execute()方法前的预处理,在执行完execute()方法后的后处理。J2EE架构设计UML软件工程组织Spring-AOP 切入点:连接点的集合,指定在何时引发通知。如事务例子中配置了所有execute.*的方法为切入点。目标对象:包含连接点的对象,也称为被代理的对象
18、。如图中的业务组件。J2EE架构设计UML软件工程组织Spring-AOP 下面我们结合实例项目,看看借助Spring为程序结构、代码组织、业务处理所带来的优越。J2EE架构设计UML软件工程组织Spring-思考 在实际项目中哪些业务需求适合借助AOP思想实现?J2EE架构设计UML软件工程组织Spring-案例习题 请利用Spring IOC机制,完成项目中一组类的改造。请利用Spring AOP机制,设计一个能统一集中处理一组业务需求的类。J2EE架构设计UML软件工程组织Log4j-介绍log4j是用于java语言的日志记录工具,一个完整的软件,日志是必不可少的。项目开发中日志记录多种
19、多样,有打印在控制台中,有记录成文本文件,有保存到数据库中等。日志信息也许需要分为调试日志,运行日志,异常日志等。这些虽然实现简单,但是也繁琐。下面将介绍用log4j来实现日志记录。J2EE架构设计UML软件工程组织Log4j-搭建环境 下载log4j,http:/logging.apache.org/log4j,将log4j.jar拷贝到项目的lib中,并引用。建立log4j的配置文件,Log4j.xml 或 Log4j.propertiesJ2EE架构设计UML软件工程组织Log4j-演练 我们结合实例项目代码来演示Log4j的使用及带来的便利。J2EE架构设计UML软件工程组织Strut
20、s-介绍Struts是用于实现Web项目中UI层的开源产品,是MVC模式的经典实现案例。它属于Apache组织中的开源产品之一,之所以使用Struts:Struts将业务数据、页面显示、动作处理进行分离,这有利各部分的维护 Struts采用Front Controller模式来实现动作处理,让所有的动作请求都是经过一个统一入口,然后进行分发。这样方便我们在入口中加入全局控制代码的实现,如安全控制、日志管理、国际化 编码等J2EE架构设计UML软件工程组织Struts-介绍 通过Struts提供的ActionForm封装web form 中的元素,使重用web表单成为可能 借助Struts Va
21、lidator框架帮助完成web层的验证工作,通常情况下我们不用再去为每个web页面写其验证代码,只需通 过配置即可实现。这也减少了我们的开发量,由于验证代码的集中管理,也为维护带来便利J2EE架构设计UML软件工程组织Struts-快速入门我们结合实例来讲解Struts的应用:下载Struts,将其相关jar包引用到Web项目 在web项目的web.xml中配置Action影射,将相应请求动作交给Struts提供的ActionServlet类进行统一控制 在web.xm配置所需要用到的的Struts标签文件 建立ActionForm、Action 建立视图文件J2EE架构设计UML软件工程组
22、织Struts-ActionFromActionFrom是用来传输表单数据的对象,通过配置文件可以关联到对应的Action,实现在UI层与业务层之间的数据传输。实现机制:Struts提供了一个org.apache.struts.action.ActionForm类,里面实现了将请求表单中的元素赋值给其具体的 实现类属性。因此自定义ActionForm类时,只需继承该类即可。在自定义ActionForm类时请保证其属性名称与所对应 表单名称一致。J2EE架构设计UML软件工程组织Struts-ActionFrom当触发Action时,通过配置文件匹配到对应ActionFrom实例,以参数形式传入
23、。ActionForm的实现虽然简单,但是随着界面的增加,ActionForm类也会增加,造成代码膨胀。在Struts1.1以上版本提供了 ActionForm的另一个实现类,org.apache.struts.action.DynaActionForm,该类充当所有ActionForm的代理类,只需在配置ActionFrom时指定用该类实现即可J2EE架构设计UML软件工程组织Struts-Action Action充当了控制器的角色,每个请求都会触发到Action类,我们在这里处理逻辑业务,分发数据,链接转向。其实现机制:在web.xml配置影射规则,符合其影射条件的请求都会交给org.a
24、pache.struts.action.ActionServlet类处理,在该类中将会实现org.apache.struts.action.Action类中的相应方法。在自定义Action类时只需继承该类,实现execute方法,即可让自定义的Action得到触发。J2EE架构设计UML软件工程组织Struts-Action execute()方法中 ActionMapping、ActionForm实例通过读取配置文件获得。J2EE架构设计UML软件工程组织Struts-客户端验证在UI中对用户提交的数据作验证是必不可少的,Struts也提供了相应的实现。下面将结合实例演示一个登录界面的校验:
25、申明校验实现类,Struts中校验功能是通过org.apache.struts.validator.ValidatorPlugIn类实现。完善校验规则文件。在validator-rules.xml中定义了常用的客户端验证规则,如,不为空,只允许 数字等。特殊的实现需要在此扩充J2EE架构设计UML软件工程组织Struts-客户端验证 定义要被验证的表单信息 建立存放验证提示信息的资源文件 在界面设置触发条件,如onsubmit时响应验证动作J2EE架构设计UML软件工程组织Hiernate-介绍 对象到关系型数据映射(ORM)是架构中热门的话题,人们希望用ORM工具从单调的SQL中解脱出来,规
26、范数据层的开发,提高开发效率。Hibernate也是实现这样的功能。Hibernate性能稳定、参考文档齐全,有专门的组织提供升级与技术支持。J2EE架构设计UML软件工程组织Hibernate-搭建环境 从www.hibernate.org下载hibernate最新发行包。然后将hibernate相关jar包加入项目lib,并引用。影射文件。影射类。加载配置信息。J2EE架构设计UML软件工程组织Hiernate-培训内容下面我们将以此介绍关于Hiernate的如下运用:表与表之间关联操作 多数据库操作 事务管理 DAO模式 与Spring结合使用 辅助功能介绍J2EE架构设计UML软件工程
27、组织Hibernate-one-to-one一对一关联有两种方式:主键关联主键关联不需借助外部字段,直接通过两个表的主键关联,因此必须保证两个表的主键值一致。通常借助foreign标识符生成器策略。唯一外键关联在主动方加入外键进行关联,这样主动方与被动方的影射关系实际上就成了多对一的关联。J2EE架构设计UML软件工程组织Hibernate-one-to-one-主键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-主键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-主键关联J2EE架构设计UML软件工程组织Hibernate-on
28、e-to-one-外键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-外键关联J2EE架构设计UML软件工程组织Hibernate-one-to-one-外键关联J2EE架构设计UML软件工程组织Hibernate-many-to-many表之间多对多的关联,通常借助中间表来实现,在实际的项目开发中也会经常碰到,假设实现一个员工薪金计算,Employee表存放员工信息,Welfare表存放福利项目信息,Salary表存放员工薪金信息,一个员工可以拥有多项福利,一项福利可以被多个员工拥有。Salary表用来保存这些关联关系。J2EE架构设计UML软件工程组织Hib
29、ernate-many-to-manyJ2EE架构设计UML软件工程组织Hibernate-many-to-manyJ2EE架构设计UML软件工程组织Hibernate-many-to-manyJ2EE架构设计UML软件工程组织Hibernate-many-to-manyJ2EE架构设计UML软件工程组织Hibernate-复合主键复合主键是由多个字段一起组成,以此来构成唯一键值。假设实现一个游戏的注册功能。User表来存放用户信息,Game表来存放游戏信息,Register表存放注册信息。一个人可以注册多个不同游戏,但是同一个人不允许重复注册同一个游戏。J2EE架构设计UML软件工程组织Hi
30、bernate-复合主键J2EE架构设计UML软件工程组织Hibernate-复合主键J2EE架构设计UML软件工程组织Hibernate-复合主键J2EE架构设计UML软件工程组织Hibernate-复合主键J2EE架构设计UML软件工程组织Hibernate-与Spring结合使用Spring Framework考虑到了与hibernate的集成,为此提供了一些非常好用的类:org.springframework.orm.hibernate.LocalSessionFactoryBea,封装Hibernate的SessionFactory。HibernateTransactionManag
31、er,封装hibernate事务管理其次,Spring让Hibernate DAO层的开发变得更为优雅,下面一一介绍。J2EE架构设计UML软件工程组织Hibernate-配置SessionFactoryJ2EE架构设计UML软件工程组织Hibernate-配置SessionFactoryJ2EE架构设计UML软件工程组织Hibernate-配置SessionFactory将SessionFactory配置在Spring中最大的好处体现在当项目中需要多个不同的SessionFactory时所带来的便利,如,操作多个不同数据库,我们需要分别建立不同的datasource和SessionFacto
32、ry,这样在DAO操作代码中需要判断该用哪个SessionFactory,而我们借助Spring可以让具体DAO脱离具体SessionFactory,也就是说,DAO层完全可以不用关心具体数据源。J2EE架构设计UML软件工程组织Hibernate-many DatabaseJ2EE架构设计UML软件工程组织Hibernate-many DatabaseJ2EE架构设计UML软件工程组织Hibernate-many DatabaseJ2EE架构设计UML软件工程组织Hibernate-many DatabaseJ2EE架构设计UML软件工程组织Hibernate-many DatabaseJ2
33、EE架构设计UML软件工程组织Hibernate-DAO模式在业务类中既写逻辑,又写与底层存储媒介交互代码,使业务类变得复杂,且不便于维护,因此我们用DAO模式将业务逻辑与底层存储媒介交互分离,DAO的英文全称为Data Access Object。从实例的架构图中可以看出,DAO充当业务层与持久层的交互入口。J2EE架构设计UML软件工程组织Hibernate-DAO模式假设实现一个用户信息添加、修改、删除、查找的功能。我们将这些调用持久层CRUD的操作,封装在DAO对象中;将接收UI数据、逻辑判断封装在业务管理类中。其代实现码如下:J2EE架构设计UML软件工程组织Hibernate-DA
34、O模式J2EE架构设计UML软件工程组织Hibernate-DAO模式J2EE架构设计UML软件工程组织Hibernate-DAO模式-思考示例代码中BookDao类中继承了HibernateDaoSupport,BookManager类设置了注入DAO的属性,请思考如何在Spring配置文件中进行配置,使示例代码正常运行?J2EE架构设计UML软件工程组织Hibernate-事务管理Hibernate中事务管理分为两种:基于JDBC的事务管理,简单封装了JDBC的事务管理,因此其作用范围在当前JDBC连接中,也就是说只能在当前Session中有效。基于JTA的事务管理,利用容器管理,可以跨越
35、多个Session。J2EE架构设计UML软件工程组织Hibernate-事务管理J2EE架构设计UML软件工程组织Hibernate-事务管理上面的示例代码展示了惯用的事务管理书写格式,在讲述Spring AOP 应用的章节,曾讲述了利用AOP思想进行事务的集中管理,同样对于Hibernate的事务管理也可以利用此思想,下面让我们看看如何使用:J2EE架构设计UML软件工程组织Hibernate-事务管理J2EE架构设计UML软件工程组织Hibernate-事务管理通过借助Spring AOP来管理事务,如下代码即可实现与在DAO类中书写事务管理代码同样的功能:J2EE架构设计UML软件工程
36、组织Hibernate-辅助工具在编写数据库影射文件与影射类时,可以借助一些工具来生成,减少工作量:Xdoclet:通过影射类中的Xdoclet标签,自动生成影射文件。Middlegen:通过数据表生成影射文件。Hbm2java:通过带Xdoclet标签的映射文件生成映射类。J2EE架构设计UML软件工程组织Hibernate-辅助工具-Xdocletxdoclet依靠标签完成与影射文件的同步,在实际开发中可以将影射类与影射文件的同步工作加入Ant任务中,给开发带来便利。接下来我们根据实例项目演示其使用。J2EE架构设计UML软件工程组织Hibernate-辅助工具-MiddlegenMidd
37、legen是Hibernate官方提供的从数据表到映射文件的转换工具,支持多种主流数据库;还可以通过配置生成Xdoclet标签,使得其影射文件可以通过工具转换成映射类。接下来我们根据实例项目演示其使用。J2EE架构设计UML软件工程组织Hibernate-辅助工具-Hbm2java我们可以从Hibernate Extension工具包中找到hbm2java工具,它借助Xdoclet标签完成从影射文件到影射类的转换。接下来我们根据实例项目演示其使用。J2EE架构设计UML软件工程组织Hibernate-回顾到此我们已经介绍了Hibernate常用的功能,使用任何一个工具之前,应先透彻了解其原理与
38、意义,结合实际做出合理的取舍。在示例代码中我们可以看出与传统数据层代码最大的区别是:我们针对是对象而不是数据库字段及字符串值。对比下面代码,你会深有体会:J2EE架构设计UML软件工程组织Hibernate-案例练习请尝试表与表简各种关联实现:1.一对一关联2.一对多关联3.多对多关联J2EE架构设计UML软件工程组织软件测试与部署-Junit一个成熟的软件离不开测试,有的编程思想甚至提倡由测试用例来引导业务类的开发。单元测试是测试范畴中代码阶段的测试,通常由程序员完成。在Java开发中我们常用的单元测试工具是Junit,在Eclipse中也集成了此工具。其使用非常简单,我们根据实际操作来介绍
39、Junit的使用。J2EE架构设计UML软件工程组织软件测试与部署-AntAnt是一个自动构建工具,但其功能不仅仅是限于构建工作,很多工具都有支持Ant的任务接口,如Junit、Xdoclet等。我们可以通过配置文件制定一系列任务,使其批量执行。比如我们每天开发完代码后要做如下的工作:编译代码-执行单元测试-发送测试报告-版本管理-打包部署-发布新版本。Ant的使用简单而灵活,我们可以制定具体目标、任务和其执行的先后顺序。接下来,我们结合实例介绍Ant的使用。J2EE架构设计UML软件工程组织回顾到此我们讲述了开发一个系统所涉及到的各个层面(UI、Business、ORM)以及如何借助成熟的工
40、具来实现的细节。希望大家能吸取到从这些优秀的设计、实现思想,延深到实际开发中,帮助大家更好的分析问题、解决问题。J2EE架构设计UML软件工程组织案例练习请按讲述的架构实现一个完整的业务功能:1.用Struts实现UI层。2.用Spring组装业务类3.用Hibernate实现持久层。J2EE架构设计UML软件工程组织UML软件工程组织软件工程组织 使命使命相关培训课程:相关培训课程:真实再现:需求开发与管理(真实再现:需求开发与管理(3天)天)真实再现:真实再现:UML&OOAD(4天)天)真实再现:统一软件开发过程(真实再现:统一软件开发过程(2天)天)J2EE架构设计UML软件工程组织2022-10-4J2EE架构设计UML软件工程组织
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。