轻量级J2EE(精选5篇)
轻量级J2EE 篇1
1 轻量级J2EE架构的优缺点
轻量级J2EE架构具有以下优点:架构简单但是功能强大,可以通过配置Web容器集群来达到横向扩展。与特制非EJB(Enterprise Java Bean)架构相比,大大降低了复杂性,而比EJB架构更容易学习和配置如果轻量级容器支持AOP(Aspect-Oriented Programming),那么就能提供非常成熟的声明式服务。不需要EJB容器,仍可以使用多种J2EE提供的企业级服务。在不同的应用服务器之间有较高的可移植性。控制反转可以让轻量级服务器为你“组装”对象。可以方便的在容器外进行单元测试。主要缺点是:需要添加远程门面才能支持远程客户端。再就是轻量级容器还没有形成标准。可以应用到各个层中的框架和技术众多,没有最优的架构方案,这给架构设计带来了难度,也给开发人员提出了更高的要求。
2 轻量级J2EE架构中各层的设计
轻量级J2EE架构主流的分层结构是:表现层,业务层(服务层、领域模型层),数据持久层和数据层。
2.1 表现层
表现层主要负责与用户的交互,可以选用各种开源的Web框架来实现,其中包括以Struts为代表的请求驱动类框架,以JSF(Java Server Faces)为代表的事件驱动类框架,还有一些近来出现的新框架。该层主要有两个设计目标:一个为结构清晰。另一个为尽可能的薄,应该只包括Web专用的控制逻辑。要达到以上目标,一般需要应用MVC(Model View Controller)模式。
2.2 业务层
业务层是整个架构的核心部分,负责处理系统的业务逻辑。该层需要为表现层提供服务接口,同时还需要调用数据层的接口来进行业务逻辑的处理。Martin Fowler在文献[6]中提到三种业务逻辑的组织方式:事务脚本(Transaction Script),将所有逻辑组织成单个过程,在过程中直接调用数据库或是通过一个简单的数据库封装器,适用于少量逻辑的应用程序。领域模型(Domain Model),需建立一个完整的对象层,来对目标业务领域建模,不适用于复杂业务逻辑的应用程序。表模块(Table Module),以一个类对应数据库中的一个表来组织领域逻辑,适用于使用记录集存取表数据时的场景,如COM和.NET设计方案中。在避免领域逻辑的重复及利用经典模式来管理复杂性方面,领域模型优于其他两种方式。
2.3 数据持久层
数据持久层主要完成对数据的持久化,负责处理数据持久逻辑。所谓数据持久化,是指把数据存储到关系数据库或其它文件中,使得能够在应用程序结束后仍能够访问。数据持久层要为业务层提供持久化数据的CRUD访问接口。对于大、中型应用,为了更好的进行OO开发,在该层还需要借助一些优秀的开源ORM工具完成对象关系的映射。所以,数据持久层一般需要实现数据持久化和对象关系映射两部分功能。
2.4 数据源层
这一层主要是指存放数据的关系数据库或是遗留系统(Legacy System)中的数据,可以被统称为企业信息系统(EIS)。
3 几种典型的轻量级J2EE架构分析
随着面向对象设计开发的广泛普及和优秀的开源的ORM工具的出现,采用领域模型处理业务逻辑逐渐开始流行。下面讨论几种典型的基于领域对象模型的轻量级J2EE架构设计。根据业务逻辑的处理方式不同,可以有以下三种:
第一种:该领域模型对象不实现任何逻辑,仅作为PO(Persistent Object)使用,Martin称之为是“贫血的领域模型”。这样的领域模型对象中仅有setter/getter方法,没有其它任何行为。采用这种领域模型对象的J2EE架构如图1所示。这种架构的优点是:对开发人员要求比较低,不用区分领域逻辑和应用逻辑。层次结构比较清晰,属于比较严格的分层架构模式的应用。缺点也是明显的:业务层的类需要处理不同的逻辑,不利于代码重用。领域对象不符合OO设计的基本原则。
第二种:该领域模型对象实现所有的业务逻辑,在业务层中添加一服务层以领域模型之上的瘦外观集合方式实现,瘦外观建立了表现层与应用程序交互的边界和操作集。采用这种领域模型对象的架构设计如图2所示。这一类的架构的优点是:同样不需要区分领域逻辑和应用逻辑。缺点是:领域对象混杂了领域逻辑和应用逻辑,同样不利于代码重用。领域对象和DAO层产生了双向依赖,不利于领域对象的测试与维护。该架构应该属于分层架构模式的变体松散分层系统,但是低层却需要调用高层的服务,使得架构层次不够清晰。
第三种:该将业务逻辑划分为领域逻辑和应用逻辑,领域模型对象仅实现领域逻辑,而应用逻辑交给服务层处理。采用这一类领域模型对象的架构设计如图3所示。该架构相对于前两种架构来说,优点是明显的:如果应用逻辑和领域逻辑能够合理划分,代码的可重用性就会大大提高。该类领域对象最符合OO设计。缺点则是:对开发者要求相对较高,应能够合理区分领域逻辑和应用逻辑。该架构的层次划分相对比较清晰,综合了架构的分层设计和面向对象设计的优点。
以上三种架构,应该说三种架构各有优缺点,可以满足不同的需求,应该在综合考虑各种因素的基础上做出恰当的选择。
4 结论
本论文首先对分层架构模式进行了研究,基于此对轻量级J2EE架构的概念、优缺点、各层的概要设计和几种典型的轻量级J2EE架构进行了讨论。各种不同的开源框架可以很好的整合,它们可以在同一个的架构的不同层发挥各自的优势。像Spring这样的属于架构级的应用框架的出现也进一步促进了轻量级J2EE架构的发展。开源框架为我们带来好的解决方案的同时,也为J2EE社区注入了新的思想新的活力。
摘要:随着开源运动的不断发展,从数据持久层到业务层再到表现层都涌现了一批优秀的轻量级开源框架。针对轻量级J2EE架构的整体设计和各个层的具体设计展开研究,综述了各个层中出现的主要框架和设计方案,分别对它们进行了比较分析。
关键词:J2EE,架构,轻量级
参考文献
[1]Rod Johnson,Juergen Hoeller.expert one-on-one J2EE Development without EJB[M].Wrox,2004.
[2]Welcome to Struts,http://struts.apache.org/1.2.x/index.html[EB/OL].
[3]冯相忠.基于MVC设计模式的Struts框架及其应用的研究.计算机技术与发展[J],2006,16(8):131-136.
[4]吴寅斐,何钦铭,吴太瑞.Struts分析及应用研究[J].计算机工程,2006,31(16):44-45.
[5]肖菁.使用XSLT和Struts框架开发Web应用[EB/OL].IBM开发者网站,2004.
[6]George Franciscus.Struts与Velocity的集成[EB/OL].IBM开发者网站,2005.
[7]James Turner,Kevin Bedell著,孙勇译.Struts Kick Start[M].北京:电子工业出版2004.
轻量级J2EE 篇2
1 J2EE架构
J2EE (Java2 Platform Enterprise Edition) 是开放的、基于标准的平台, 用于开发、部署和管理N层结构, 面向Web的、以服务器为中心的企业级应用。它是一套体系结构, 也是一种技术规范。它支持平台独立、可移植、提供组件重用策略、一致化的安全模型以及灵活的事务控制特性。
J2EE应用是分布式的架构, 它把应用程序分层, 不同的层一般运行在不同的机器上。应用程序有几种分层模型:单层, 两层, 三层, N层。目前大多数企业级应用使用多层应用模型, 其优点:每一层可被单独改变, 而无需其他层的改变;降低部署与维护的开销;资源可被缓冲和重复利用;提高了灵活性、可伸缩性。
J2EE分层结构如下:
(1) 客户层:J2EE应用可以是基于Web的, 也可以是不基于Web的。在基于Web的J2EE应用中, 浏览器运行在客户层中, 它从一个Web服务器上下载Web层的静态HTML页面或由JSP或Servlet生成的动态HTML页面, 从而显示在浏览器中。在不基于Web的J2EE应用中, 客户端可以是Java程序, 还可以是包括一个Java Bean类来管理用户输入, 并将该输入发送到在业务层中运行的EJB组件来处理。
(2) Web层:J2EE Web组件可以是JSP页面以及显示HTML页面的Servlet组成, 调用Servlet或JSP页面的HTML页面, 在应用程序组装时与Web组件打包在一起。Web层可能包括Java Beans来帮助JSP和Servlet完成某些功能, JSP通常使用Java Beans和业务层中的EJB组件交互。运行在客户层的Web组件依赖容器例如支持客户请求和响应等功能。
(3) 业务层:业务层为底层业务服务组件提供必要的接口。业务组件通常为运行在EJB容器里的EJB组件。EJB组件从客户程序处接受数据, 对数据进行处理, 再将数据发送到企业信息系统层存储。同时EJB组件也可从数据层获取数据, 并将数据处理后返回客户端程序。业务层和Web层构成了J2EE应用的中间层。
(4) 企业信息系统层:它运行企业信息系统软件, 包括企业基础设施系统, 例如企业资源计划、大型机事务处理、数据库系统及其他遗留信息系统。J2EE应用组件由于某种原因可能需要访问企业信息系统层。
1.1 传统J2EE架构
企业级应用开发中, 业务逻辑是企业级应用的核心。在传统J2EE应用开发中, 通常使用EJB组件实现业务逻辑, EJB组件是J2EE企业开发平台最核心的部分, EJB组件有三种类型:会话Bean、实体Bean、消息驱动Bean。其中会话Bean分为有状态会和无状态两种;多用户时, 无状态会话Bean运行效率高于有状态会话Bean。有状态会话Bean可以一对一地维持每个调用客户的状态, 并且在不同的方法调用中维持这个状态。客户的状态在会话Bean的实例变量中维护, 要生成有状态会话Bean, 需要在Bean实现类中声明实例变量。无状态会话Bean不能维持一个调用客户的状态, 当方法执行完毕, 状态不会被保持, 而是不能在多个方法调用之间保持状态。在调用完成后, 无状态会话Bean被立即释放到缓冲池中, 无状态会话Bean具有很好的伸缩性, 可以支持大量用户的调用。按照Bean提供的接口可以分为本地接口和远程接口Bean。本地接口可以和客户端在同一个JVM里运行, 不能提供远程调用, 但它效率高, 适合于细粒度组件。远程接口Bean必须通过远程调用方法调用, 并且成本高, 适合于粗粒度组件。实体Bean代表持久的存储对象。实体Bean分为两种:Bean管理持久化 (BMP) 、容器管理持久化 (CMP) 。BMP组件由Bean开发者自己管理Bean和它所代表的数据库记录的同步;CMP组件由容器自动管理Bean和它所代表的数据库记录的同步, 不需要Bean开发者提供数据访问的各种细节。如果使用实体Bean, 最好选择带本地接口的CMP组件实体Bean, 因为带远程接口的实体Bean在远程调用时浪费资源, 而且在性能上也存在风险。消息驱动Bean集成了Java消息服务和企业Bean的功能。消息驱动的EJB不直接与客户交互, 它是JMS消息监听器。客户把消息发送给JMS目的地, 之后, JMS提供者和EJB容器协作, 把消息发送给消息驱动的EJB。
1.2 轻量级J2EE架构
不使用EJB组件, 也可进行J2EE应用开发。在J2EE应用开发中, 由于EJB组件存在优势和不足, 为此采取EJB的优点, 去除缺点, 使不使用EJB的J2EE体系结构更加成熟。本文提出基于Struts2+Spring+Hibernate体系结构称为J2EE轻量级架构。
1.2.1 Struts2 (表示层框架)
Struts2是以Web Work优秀设计思想为核心, 吸收了Struts1部分优点, 建立一个兼容Web Work和Struts1的MVC框架。
Struts2优点:
(1) 支持多视图表示。Struts2支持JSP、XML、Free Marker等表现层技术, 可与多种视图技术整合, 为开发者提供多种适应性。
(2) Struts2Action类可以实现一个Action接口, 也可以实现其他接口, 使可选和定制的服务成为可能。
(3) 在软件设计上Struts2没有耦合Servlet API和Struts2API, 属于非侵入式设计, 当系统重构时, Struts2中Action可复用, 提高了代码的复用率;在应用上Struts2中Action可以不依赖于Servlet API和Struts2API, 从而允许Action脱离Web容器运行, 降低测试难度。
(4) 模块化。Struts2把模块化作为体系架构中的基本思想, 可以通过三种方法将应用程序模块化:将配置信息拆分成多个文件;把自包含的应用模块创建为插件;创建新的框架特性, 即将与特定应用无关的新功能组织成插件, 以添加到多个应用中去。
1.2.2 Spring (业务逻辑层框架)
Spring是非常优秀的轻量级开源MVC框架。它的主要核心是Io C容器和AOP机制。其中Io C容器负责创建、管理应用组件。从最前端的控制器, 到中间层的业务逻辑组件, 以及底层的DAO组件, 都在Io C容器的管理下, 以低耦合的方式运行。AOP机制以Io C容器为基础, 用于处理系统中分布于各个模块中的交叉关注点的问题。
Spring优点:
(1) 独立于各种应用服务器, 低侵入式设计, 代码的污染极低。
(2) Spring的DI容器降低了业务对象替换的复杂性, 提高了组件之间的解耦。
(3) Spring的AOP容器允许将通用任务如安全、事务、日志等进行集中式处理, 从而提供更好的复用。
(4) Spring的ORM和DAO提供了与第三方持久层框架的整合, 简化了底层的数据库访问。
(5) Spring高度的开发性, 开发者可根据自己的需要选择使用某一个模块。Spring致力于J2EE应用各层解决方案, 它是企业级应用开发"一站式"选择, 并贯穿于表现层、业务逻辑层和持久化层。Spring为企业应用开发提供轻量级解决方案, 包括依赖注入核心机制、基于AOP声明式事务管理、与多种持久化层技术及优秀的Web MVC框架整合功能。
1.2.3 Hibernate (持久层框架)
Hibernate是目前最优秀、使用最广泛的O/RM (对象关系映射) 框架。其基本特征:完成面向对象的程序设计语言到关系数据库的映射。因此Hibernate是面向对象程序设计语言和关系型数据库之间的桥梁, 允许程序开发者采用面向对象的方式操作关系数据库。因为有了Hibernate的支持, 使得J2EE应用开发过程的OOA、OOD、OOP三个过程一脉相承, 成为一个整体。
Hibernate优点:
(1) 在操作数据库时, 会自动生成SQL语句。
(2) 它是基于Java开放源代码持久化中间件。
(3) 它对JDBC进行轻量级对象封装, 可应用在任何使用JDBC场合, 既可以在Java的客户端程序使用, 也可以在Servlet/JSP的Web应用中使用。最具革命意义的是, Hibernate可以在使用EJB组件的J2EE架构中取代CMP, 完成数据持久化的重任。
(4) 它使用Java反射机制而不是字节码增强程序来实现透明性。
(5) 它的性能非常好, 因为它是个轻量级框架。映射的灵活性很出色。
(6) 它支持各种关系型数据库, 映射一对一到多对多的各种复杂关系。
(7) 它作为J2EE持久化的解决方案, 使用传统POJO作为系统的持久化类, 具有低侵入式设计, 不会造成代码污染。同时系统的持久化类无需继承任何Hibernate基类或者实现任何Hibernate接口, 提供了极好的代码复用。
1.2.4 三种轻量级框架整合
轻量级框架整合是利用Struts2、Spring和Hibernate的各自优势互补进行开发的, 通过配置文件将Struts2、Spring和Hibernate集成起来, 实现多层开发, 达到高内聚、低耦合的目的。
三大框架整合如下:
(1) 表示层:Web客户端发送HTTP请求, 调用Web控制器 (web.xml) 初始化Spring上下文加载监听器, 加载application-context.xml, 之后在Web.xml中定义Struts2核心控制器Filter Dispathcer, 初始化Struts2并处理所有用户的WEB请求, 然后将它的请求转发给Action Proxy, Action Proxy根据请求的action名字在struts.xml中找到相应的Action。
(2) 业务层:Action把请求转发给业务逻辑控制器, 由业务逻辑控制器调用模型中相应的业务逻辑方法, 模型调用DAO, 把DAO实现类注入到Spring容器中, 由Spring把各个组件装配在一起。DAO负责访问数据库, 把Hibernate配置文件、Session Factory、事务管理器以及事务传播特性注入到Spring容器中, 由容器统一管理。
(3) 持久层:DAO实现类继承Hibernate Dao Support类并实现DAO, 通过Hibernate模板直接操作数据库, 对数据表增、删、改、查操作。
最后把DAO组件依赖注入到相应的Service实现类中, 它实现Service接口。业务逻辑层处理完毕, 将返回的结果交给ActionProxy, Action Proxy根据Action处理后返回的字符串, 在struts.xml中找到与字符串匹配的结果, 根据名字得到相应的视图资源, 再发出HTTP响应客户端请求。
2 电子拍卖系统设计
2.1 设计原理
目前, 最具有代表性的电子商务形式有:B2B企业之间业务、B2C企业与消费者之间交易、G2C政府与消费者或市民之间业务、C2C消费者与消费者之间交易。在该系统中买卖双方都为顾客, 属于C2C电子商务形式。根据系统特点, 采用B/S结构设计, 实现在线拍卖功能。
2.2 功能介绍
该系统模拟e Bay系统的部分功能, 主要实现电子拍卖系统中的核心功能。本系统要求用户参与拍卖之前, 必须登录系统。本系统提供了系统登录验证, 登录验证通过Struts2的拦截器实现, 拦截器拦截用户Session, 判断Session中是否保存了当前用户ID, 如果保存了用户ID, 说明用户已经登录, 否则没有登录。
对于物品的管理, 本系统可以查询拍卖物品, 添加拍卖物品, 增加物品种类, 竞价处理, 以及发送邮件通知用户所参与的竞价。注册用户可以添加用户物品和物品种类。添加之前必须登录系统, 每个Action中并不判断用户是否登录, 而是通过Struts2的拦截器完成功能, 从而提供更好的代码复用。
注册用户可以浏览当前拍卖中的物品以及流拍的物品。
注册用户可以参与竞价, 参与的竞价系统将发送邮件通知用户。
2.3 系统架构
本系统严格采用J2EE的三层架构, 分为表示层、业务逻辑层和数据服务层。三层体系将业务规则、数据访问及合法性验证等工作放到中间层处理, 客户端不直接与数据库交互, 而是通过控制器与中间层建立联系, 再由中间层与数据库交互。系统架构如图1所示, 系统三层架构的具体功能如下:
表示层在JSP页面中使用Struts2标签显示数据, 生成页面显示效果。
中间层采用Struts2+Spring+Hibernate, 为了分离控制层与业务逻辑层又可细分为:
(1) Web层, 就是MVC模式里的"C" (Controller) , 负责表示层与业务逻辑层的交互, 调用业务逻辑层, 并将业务数据返回给表示层显示。
(2) Service层 (业务逻辑层) , 负责实现业务逻辑, 对DAO对象进行正面模式的封装。
(3) DAO层 (数据访问对象层) , 负责与持久化对象交互, 封装了数据的增、删、改、查原子操作。
(4) PO层 (持久化对象层) , 通过实体/关系映射工具将关系数据库中的数据映射成对象, 实现以面向对象方式操作关系数据库。
通过使用Struts2, 提供了良好的MVC模式, 所有的用户请求都由Struts2的Action负责拦截, 然后通过Spring提供自动装配功能, 定位Spring容器中的业务逻辑组件, 调用业务逻辑组件方法处理用户请求。
数据服务层使用Oracle关系数据库存储数据。
3 电子拍卖系统实现
实现原理以Spring为核心, 承上启下。向上管理表示层, 向下管理业务逻辑层组件, 同时负责管理业务逻辑层所需的DAO对象, 负责在各层之间传值的是值对象。
3.1 实现持久化层
为实现Hibernate持久层, 需定义实体类以及对应的映射文件。根据该系统实现的功能需要定义的实体类为:用户、物品、物品种类、物品状态、竞价记录, 这5个实体类分别对应各自的数据表, Hibernate可通过各自的PO类来访问数据表。为了进行数据持久化访问, 必须增加映射文件, 映射文件负责完成持久化类和数据表之间的映射关系。其中每个持久化类对应数据库中的一张表, 持久化类中的每个属性对应数据表中的字段, 持久化类的每个实例对应数据表中每一行记录。
3.2 实现业务逻辑层
业务逻辑层采用面向接口编程原则, 为了让系统中的控制器不依赖于业务逻辑组件的实现类, 而依赖于业务逻辑组件的接口, 达到降低系统重构的代价。该系统中使用Spring邮件抽象层, 当用户竞价成功后, 系统向竞价成功的用户发送邮件进行通知。还使用Spring任务调度机制判断系统中拍卖物品的状态, 该任务每隔一段时间会自动执行, 不用以硬编码的方式编写在程序中, 而是通过Spring的配置文件完成。由于Spring AOP提供声明式事务管理功能, 所以在业务逻辑组件方法内无须编写事务管理代码, 将事务管理写在配置文件中, 由Spring容器管理事务。
3.3 实现Web层
系统使用Struts2作为前端MVC框架, 控制层由Struts2 Action充当, Action负责调用系统业务逻辑方法处理用户请求, 并将处理后的结果放入值栈, 在JSP页面中使用Struts2标签显示结果。在Struts2中使用Filter Dispatcher过滤拦截*.action的请求, 并将用户请求直接转入到Struts2框架内。通过这种方式, 对于普通的页面也必须经过Struts2过滤, 保证了用户无法直接浏览任何页面, 提高系统安全性。
结论
开发表明, 基于Struts2+Hibernate+Spring的J2EE轻量级框架优点:
(1) 开发工作变得简单有效, 开发者只负责分析系统业务, 不必关注与业务逻辑无关的底层技术问题。
(2) 大大提高企业级应用开发生产力, 开发周期明显缩短, 开发成本降低。
(3) 系统部署到服务器上运行稳定, 性能较高。
(4) 系统易于维护和管理。
(5) 电子拍卖系统具有松散耦合、结构清晰伸缩性强可扩展性好重用性高等特点
参考文献
[1]刘晓华.J2EE企业级应用开发[M].北京:电子工业出版社, 2003.
[2]Rod Johnson.Expert One-on-OneJ2EE Design and Development[M].北京:电子工业出版社, 2002.
[3]李刚.Struts2权威指南-基于WebWork核心的MVC开发[M].北京:电子工业出版社, 2010.
[4]罗时飞.精通Spring[M].北京:电子工业出版社, 2005.
[5]陆荣幸, 郁洲, 王志强.J2EE平台上MVC设计模式的研究与实现[J].计算机应用与研究, 2003, 31 (3) :144-146.
[6]陈天河.Hibernate开发宝典[M].北京:电子工业出版社, 2006.
[7]杨蕴石, 王颖, 吕科, 赵亚伟.基于J2EE集成开源框架研究与应用[J].微计算机信息, 2008, 24 (3) :220-223.
轻量级J2EE 篇3
一、J2EE框架技术
Struts起源于Small Talk的MVC。即Model、View和Controller。由Controller解耦显示逻辑与业务逻辑, 支持实现松耦合结构。面对Web Work、Spring MVC、JSF、Tapestry等, Struts设计成熟、信息资源丰富、开发群体广泛, 是目前最常用的表现层M V C。
Spring是一种为解决企业应用程序开发复杂性的轻量级应用程序框架和容器。集成了J2EE许多最佳与前驱性实践。具有传统EJB的关键服务而不依赖于任何组件替代重量级E J B框架。扩展了所集成的组件并提供更高级功能。Spring完成了实际开发所需的单态模式与工厂模式。核心机制是DI (Dependency Injection) 与IOC (Inversion of Control) 。通过DAO和ORM实现数据访问的抽象模块, 并支持Hibernate。
Hibernate是低侵入ORM (Object-Relationship Mapping) 框架。联接了面向对象程序设计语言和关系型数据库。实现了对JDBC的轻量级封装。通过J2EE中的JDBC、JTA、JNDI实现Session、Transaction和数据库连接管理。由HQL以面向对象方式查询持久化对象。ORM框架还包括OJB、Top Link等。OJB是Apache的子项目, 开发文档不多, 规范一直不很稳定, 并未得到广泛支持。Top Link一旦作为商业产品使用则要收取费用。
二、框架的整合与实践
对于一个企业信息系统来说, 考虑到虽然系统中各模块实现不同, 但原理大同小异。因此, 本文以开发的信息发布子系统为例集成Struts、Hibernate和Spring, 并说明系统各层实现。系统架构处理流程如图所示。表现层通过控制器与业务逻辑层交互, 业务逻辑层同时处理业务规则与数据访问, 再与数据持久层交互。
1. Domain Object
根据系统需求从应用中抽取实体。子系统模型实体类包括: (1) Publisher:发布者信息。 (2) Information:包括标题、内容、时间、图片路径、新闻审核与推荐等。 (3) Category:信息分类。 (4) View:信息说明或补充评论。用POJO (Plain Old Java Object) 作为PO。以Information为例, 其中包含Publisher、Category和View类对象。
2. 数据持久层
数据持久层采用DAO (Data Access Object) 设计模式。对底层数据库提供CRUD操作, 对上层业务逻辑提供DAO接口。DAO实现包括三个部分: (1) 在DAO接口中声明CRUD等方法。 (2) 实现D A O接口并扩展支持类。 (3) 产生D A O实例, 实现业务逻辑与持久层的解耦。然后获得D A O工厂实例, 产生D A O组件。通过扩展Hibernate Dao Support和对应DAO接口完成Hibernate实现。传入session Factory引用到由Hibernate Dao Support提供的方法中, 返回Hibernate Template实例完成数据库操作。以Information为例的DAO接口实现类如下:
可见当数据库结构改变时, 仅影响D A O而并不会涉及业务逻辑层。业务逻辑只要专注其自身的实现, 而不需要关注底层数据库访问, 实现了业务逻辑与特定数据库访问的解耦。
3. 业务逻辑层
业务逻辑层完全依赖DAO组件, 只需调用DAO接口。用Facade封装多个DAO组件。依赖由Facade提供的一个高层接口。业务逻辑对外提供Infor Pub Facade接口, 表示层只要面向该接口编程, 实现了业务层与表示层的解耦。由Infor Pub Facade Imp扩展Infor Pub Facade接口实现。Infor Pub Facade Imp类中将各DAO作为成员属性。
4. 表示层
表示层包括Action Form和Action Servlet。Action Form在视图和Action Servlet之间传递数据。由Action Form的validate () 完成数据验证。Action Servlet再根据接响应完成到Action的转发。再由Action的execute () 获取信息完成业务逻辑验证并决定调用的业务逻辑。在Struts中完成Spring容器的加载。不再将Action Servlet拦截的请求转发到struts-config.xml中的Action, 而是转发到由Spring容器管理的Action。并由Spring的IOC管理Action。通过Delegating Request Processor扩展Struts的子请求处理器Request Processor, 将请求转发到actionservlet.xml。
三、结束语
本文集成Struts、Hibernate和Spring。系统层次清晰, 由Spring贯穿整个系统, 无缝整合表示层、业务逻辑层和数据持久层。系统灵活性得到增强。业务逻辑只需实现一次, 组件之间以接口方式耦合, 实现了企业信息系统最大限度的解耦。开发的系统具有良好的伸缩性与可扩展性, 从而提高企业运作效率与降低开发成本, 具有一定的现实意义。
参考文献
[1]James Goodwill.Jakarta struts[M].O’REILLY Publishing, 2002.
[2]Ted Husted.Struts in Action:Building Web Applications with leading java framework[M].Manning Publication Company, 2002.
[3]Matt Raible.Spring Live[M].Source Beat, 2004.
[4]Rod Johnson.Expert One on One J2EE Development without EJB[M].Wiley Publishing, 2004.
轻量级J2EE 篇4
如何在教学监控体系中扩展监控面, 提高学生、教师、各级督导、等教学主体在监控过程中的参与度, 加强监控决策正确性, 提升监控评估效率, 缩短监控反馈中调控时间, 是当前各高职院校都在思考的问题。
本课题提出了利用struts、spring、hibernate轻量级J2EE架构, 构建构建高职院校教学信息反馈信息平台, 来解决上述问题, 优化教学监控过程。
1 业务需求
监控系统流程:
评价信息是教学调控的基础, 客观正确的评价信息是调控措施是否得当的前提条件, 评价系统即根据所制定的教学各个环节的评价指标体系, 以及有组织、有计划地对教学质量进行检查、评价的制度体系。其内容主要包括以下几个方面:高职院校应当从制度上保证各级主管领导和部门的定期教学检查, 并强调各级主体依据工作任务和具体情况的不同而各有所侧重。其工作目标应当强调“诊断性”检查, 以发现问题和解决问题为主;确定教学质量评价周期, 形成周期性的质量评价体系;教师课堂教学质量评价和学生学业成绩考核;教师教学水平综合评价体系;教研室教学管理水平评价体系;系 (部) 级管理水平评价体系;辅以不定期的对教学各个环节进行评价的制度体系和完备的各级领导听课制度。
2 系统用户
结合二级管理方式转变, 我们首要的要明确各级质量监控人员的职责:
1) 学校教学工作决策中心和教学工作委员会确定学校的办学思路和教学工作基本思路, 确定教学工作的长远和近期规划, 确定教学管理基本制度, 确定教学和教学管理的重大措施, 监控专业教学计划、重大教学改革方案和人才培养方案的制定。
2) 教务处全面负贵教学管理工作, 包括教学管理制度制定、专业和课程建设、实训基地建设、教学计划制订、教学运行管理、教学质童评价、教学环节安排, 同时要积极规划和推进教学改革。
3) 学校督导处代表学校对教学工作进行监、指导、参谋、沟通和评价。分院级教学监控与评价的实施力。
4) 分院领导具体执行教务处关于教学管理有关具体规定, 具体落实教学任务, 具体组织教学运行, 实施教学质量监控和检查, 向教务处反债教学质量监控信息。
5) 专业建设指导委员会主要负责监控该专业的人才培养目标、人才培养规格、课程设置、人才培养棋式及校企合作办学等。
6) 分院教学督导对教学工作进行监价、指导、参谋、沟通和评价。
7) 专业 (教研室) 主要负责监控本教研室教师的理论教学和实践教学分学期授课计划的编制与实施。
8) 教师主要负责对学生的学习进行评价, 在教学中收集有关的信息, 及时向教务处或分院进行书面或口头反映。
9) 学生、学生教学信息员负责对学校教学状况进行全方位、全过程监测, 在学习中收集有关信息, 及时通过各种集道向教学管理部门进行书面或口头反映。
3 技术平台
1) Struts是目前Java Web M VC框架主流。经过数年的发展, Struts已经逐渐成长为一个稳定、成熟的框架, 并且占有了M VC框架中最大的市场份额。struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
2) Spring是一个开源框架, 它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的Java Bean来完成以前只可能由EJB完成的事情。然而, Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言, 任何Java应用都可以从Spring中受益。简单来说, Spring是一个轻量级的控制反转 (Io C) 和面向切面 (AOP) 的容器框架。
3) Hibernate是一个开放源代码的对象关系映射框架, 它对JD-BC进行了非常轻量级的对象封装, 使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合, 既可以在Java的客户端程序使用, 也可以在Servlet/JSP的Web应用中使用, 最具革命意义的是, Hibernate可以在应用EJB的J2EE架构中取代CMP, 完成数据持久化的重任。
摘要:高职院校教学质量监控体系一直是各个院校提升学校内涵, 提高教学质量而重点关注的难题, 在实践过程中, 发现教学质量监控面不广、监控信息反馈不及时、调控周期较长并且不能落到实处, 本文针对这些情况, 提出了基于轻量级J2EE框架, 构建高职院校教学信息反馈信息平台, 提高教学监控面, 提高信息反馈速度, 监控调控措施。
轻量级J2EE 篇5
随着我国银行信用卡使用环境的不断优化, 目前我国总体信用卡保有量已经突破3200万张, 其中卡户大约在1600万户左右, 卡户年消费平均值已经达到了8000元/年。各商业银行信用卡中心为了快速抢占国内信用卡市场份额, 纷纷采取了日趋多样化的市场营销方式。信用卡邮购业务作为一种主要的市场营销方式, 越来越受到各商业银行的重视。
为了能够应对快速发展的信用卡邮购业务需求, 各商业银行信用卡中心纷纷提出了邮购业务计算机管理系统的建设需求。为了实现系统目标, 系统架构的选择至关重要。J2EE提出了一般意义上的架构设计, 不足之处是体系显得过于庞大。轻量级的J2EE架构是对经典J2EE的简化, 不仅保持了J2EE的优势, 同时简化了J2EE程序的开发过程。利用轻量级J2EE架构构建信用卡邮购业务管理系统, 既可以充分利用J2EE的自身良好架构所具有的特点来满足业务管理系统的建设需要, 同时又使所构建的系统易于动态扩展、维护、控制, 且具有伸缩性, 因此是一个非常合适的选择。
2、技术介绍
轻量级J2EE软件架构主要由主流的开源框架Struts和Hibernate根据其各自的应用特性而进行整合而成。
Struts框架是基于MVC模式的Web框架。它从根本上把业务逻辑和表示层分离开来, 可以方便迅速地把一个复杂的应用划分成模型 (Mode1) , 视图 (View) 和控制器 (Controller) 3个组成部分。体系结构图如图1所示。视图 (View) 组件提供人机交互的界面, Struts通过视图组件将客户端提交的Html Form数据封装到Action Form Bean中, 向控制器组件提交选择或输入请求, 来实现表单数据在视图和模型之间传递。模型 (Model) 组件主要以Java Bean或EJB的形式存在, 在独立于外在显示内容和形式的情况下对软件所处理问题进行逻辑抽象, 封装问题的核心数据、逻辑和功能的计算关系, 独立于具体的界面表达和I/O操作。控制器 (Controller) 组件是Struts框架的核心, 它接受所有来自客户端的请求, 将模型和视图匹配在一起, 共同完成用户的请求。控制器组件只是一个分发器, 组件自身不做任何的数据处理, 它只把用户的信息传递给模型, 告诉模型做什么, 选择符合要求的视图返回给用户。
Hibernate框架是一个优秀的开放源代码的J a v a对象持久层轻量级框架。Hibernate的技术本质仅是一个提供数据库服务的中间件, 它是通过底层的JDBC或JTA来实现事务的管理和调度。Hibernate提供的HQL是一种类SQL语言, 在功能和使用方式上都非常接近于标准的S Q L。Hibernate的框架架构图如图2所示。
基于Struts和Hibernate框架相结合的轻量级J2EE软件架构的一般的总体结构如图3所示。
3、业务分析
银行信用卡邮购管理系统应该包括以下主要功能:
(1) 为商品的供应商端提供网络服务平台, 使供应商完成商品信息的上传并查询商品审核不通过的原因;
(2) 为业务客服部门端提供查询平台, 进行商品的属性维护、上下架管理、并及时修改产品库中的商品库存;
(3) 为信用卡用户提供客户端邮购网站, 配合邮购管理系统完成正常订单、订单撤销、订单退货及废单的处理;
(4) 为供应商端、业务客服部门端提供商品信息报表和各类统计报表;为银行财务部门提供入账文件, 完成对信用卡帐户的操作。
通过对邮购管理系统主要功能的分析, 系统大致可分为以下三个功能模块:
(1) 邮购业务处理模块:
包括商品管理子模块和订单管理子模块两部分。商品管理子模块主要完成对商品属性、库存的管理;对供应商端、客户端邮购网站、邮购管理系统三者之间进行的商品交互、审核的管理;为客服部门提供商品库查询平台等。订单管理子模块主要根据业务信贷部门对订单授权与否, 结合信用卡客户、供应商、业务客服部门触发的订单状态发生的改变, 进行订单流程管理, 完成正常订单、订单撤销、订单退货及废单的处理, 为银行财务部门提供入账文件。
(2) 系统管理模块:
主要包括用户管理子模块、权限管理子模块、机构管理子模块、菜单管理子模块等, 完成设置用户组成员、设置相同用户组下不同用户成员的不同操作权限、对商品供应商进行审核等功能。
(3) 公共服务模块:
主要包括联机处理子模块、批量处理子模块、库存预警子模块等, 联机和批量处理子模块完成独立于各类具体业务报文的联机和批量处理等, 实现相关各方的信息传递。库存预警子模块对在联机交易和批处理发生过程中可能发生的低于库存量警戒线的问题进行预警。
4、系统设计和实现
根据基于Struts和Hibernate框架的软件架构的特点和银行信用卡邮购业务的特性, 银行信用卡邮购管理系统采用以下符合MVC设计模式的B/S平台框架的系统架构设计: (1) 模型 (M o d e l) 层:通过普通的Java类提供的数据库和网络等访问能力实现将采集的数据写入数据库, 或获得要展示的数据; (2) 视图 (View) 层:利用Struts框架实现B/S数据的采集和展现; (3) 控制 (Controller) 层:采用XML配置文件为系统应用配置信息数据选择正确的应用处理程序; (4) 数据存储层:通过Hibernate技术实现数据库的访问控制。模型层对视图层提供接口, 同样数据存储层对模型层提供接口。各个层次之间均采用只对暴露的相应接口进行编程, 而不关心各自的实现细节, 来实现各个层之间的松散耦合。银行信用卡邮购管理系统总体架构设计图如图4所示。以商品管理子模块为例, 该业务子系统架构的各个模块和层次如图5所示。
系统的一般处理流程如图6所示, 用户通过浏览器访问Web Server服务器, Web Server对客户请求进行解析并与相关配置文件进行比较后, 将客户请求转发至相应的应用处理程序, 处理程序负责访问控制数据库, 并将结果数据传回到W e b Server, 并通过Web Server在客户的浏览器上显示给客户。
系统各层的具体设计和实现如下:
(1) 模型 (Model) 层
通过定义报文格式的方式确定与模型层相关的各个层次之间的相应接口, 模型层中的Java Bean只对暴露的相应接口进行编程, 封装了所处理问题的核心数据。这些报文格式包括:请求和响应报文的报文格式;具体交易类型报文格式 (包括授权、撤销、退货、各类批处理等交易) ;符合银行相关其他系统接口的专用报文格式;具有订单、商品、管理类等接口的有关订单、商品、管理类的内部报文格式。
模型层中的Java Bean是由Hibernate以事务管理方式组织的数据访问对象DAO的类打包组成, 主要实现解析各类请求数据报文, 根据解析得到的客户端以o r g.w3c.dom.Document类型封装的请求报文中的请求模块 (req Module) 和请求类型 (req Type) 关键字段, 依据配置文件选择并执行相关的业务逻辑的数据访问对象, 完成数据库的修改, 最后构造同样以org.w3c.dom.Document类型封装的响应报文予以返回的功能。
(2) 视图 (View) 层
视图层的重要任务是在客户端的web界面与服务器模型层之间实现表单数据的传递。在银行信用卡邮购业务管理系统中, 类似于订单的详细信息这类表单数据, 往往都具有相对较多的字节数。如果通过url方式来实现表单数据传递, 大量的字节数会超过url对于256个字节的长度限制。银行信用卡邮购业务管理系统主要采用了以javascript为框架的Ajax (异步javascript和xml) 技术和Ext表格控件的技术实现表单数据传递。通过Ajax技术中的xmlhttp.send () 方法将传送至服务器模型层的大量数据封装在一个xml对象中, 来传送大量数据;同时由Ext技术中Ext.data包提供远程代理的功能。传送的表单数据采用xml文件格式, 无限扩展了数据结构本身的限制。同时视图层采用了级联样式表CSS (cascading style sheets) 和样式的行为模式H T C (H T M L component) 技术。
(3) 控制 (C o n t r o l l e r) 层
在银行信用卡邮购业务管理系统中, 控制层对于来自客户端的请求, 通过配置文件 (struts-config.xm1) 实现模型和视图之间的匹配, 共同完成用户的请求。客户端的配置文件 (struts-config.xm1) 为不同的业务逻辑决定了不同的Form (jsp) 文件和Action (javascript) 文件。具体来说, 当客户通过F o r m (jsp) 页面发出某一个需要处理的业务逻辑请求, 管理系统会根据配置文件 (struts-config.xm1) 查找与F o r m (j s p) 页面相对应的A c t i o n (javascript) 文件, 然后模块层根据查找到的Action (javascript) 文件中的请求模块 (r e q M o d u l e) 和请求类型 (r e q T y p e) , 选择调用相应的数据访问对象DAO加以处理并通过EJB模式返回处理结果, 最后Action文件根据返回结果选择对应的页面视图 (j s p页面文件) 。对于一些相关业务逻辑, Action文件通过javascript文件之间的调用关系来实现相互调用。
(4) Java对象持久层的实现
鉴于银行信用卡邮购业务管理系统将邮购业务逻辑请求作为是在本地服务器上进行的事务处理的特点, Hibernate采用了基于DAO+JDBC模式的事务管理方式。采用DAO模式可以实现数据访问和业务逻辑的分离以及业务数据的对象化封装, 即实现对数据访问的封装。采用JDBC模式 (非ORM模式, ORM模式主要适用分布式的事务管理) 满足了邮购业务管理系统应用程序对本地事务进行管理的特定需求。JDBC模式同时还具有优越的访问数据库的性能和对于复杂的多表联查和数据库操作灵活多变的特点。在设计事务管理方式时遵循:事务界定代码嵌入在DAO类中;DAO类使用JDBC API进行事务界定;调用者不能界定事务;事务范围局限于单个JDBC连接的四项原则。xml将数据访问对象映射到二维表 (其中X X X与数据库中的相关表文件同名) , 再通过配置文件hibernate.cfg.xml将所有数据访问对象映射数据库中所有的二维表, 告诉Hibernate如何把一个对象存储到数据库中。
Hibernate中的每个值对象V O (Value Objects) 是一个POJO (Plain Old Java Object) , 对应数据库中相应的二维表, 在模型层和数据访问对象之间传递所需的数据, 形式上如同普通的Java Bean, 由一些属性及对应的get/set方法组成。
在数据访问对象DAO (Data Access Object) 中实现客户端请求报文数据包的解析、相应的数据库操作、返回响应数据包的功能, 从而完成本地的事务管理。通过S p r i n g中的D A O支持类Hibernate Dao Support为Hibernate数据访问对象提供Session Factory。
Session Factory session Factory=new C o n f i g u r a t i o n () .c o n f i g u r e () .build Session Factory () ;
Session s=session Factory.get Session Factory () .open Session () ;
Transaction t=s.begin Transaction () ;
Query query=s.create Query (query HQL) ;
t.commit () ;
参考文献
[1]张文娟, 周家纪, 管东华.基于Struts-Spring-Hibernate的整合框架概述及其应用[N].计算机时代.2008, 8 (8) 49-51
[2]Spring从入门到精通[M].北京:清华大学出版社.2006
[3]蔡雪焘.Hibernate开发及整合应用大全[M].北京:清华大学出版社.2006
[4]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社.2004