Struts 2框架分析(共7篇)
篇1:Struts 2框架分析
Struts2的6个配置文件,分别是struts-default.xml,default.properties,struts-plugin.xml,struts.xml,struts.properties,web.xml
1、struts-default.xml,里面放置的是struts2框架的核心东西,如bean类,package包,result type,interceptor拦截器等
2、default.properties,properties类型的文件里面放置的是键值对,key和value,主要是对一些常量进行设定。
3、struts-plugin.xml,与第三方插件进行整合时需要使用的配置文件。如我们和spring进行整合时,就需要使用到struts-spring-plugin.xml这个配置文件
4、struts.xml,需要我们程序员在src目录下手动创建,在这个里面也可以对常量进行设定,使用的是constant标签,包含name和value属性。
5、struts.properties,这里也是对常量进行设定
6、web.xml,这里设定struts2的启动项,使用的是filter和filter-mapping标签,也可以进行常量的设定,在filter标签里使用init-param标签。但是我们一般不再这里设定。
这里有4个配置文件,可以对常量进行设定。分别是default.properties,struts.xml,struts.properties,web.xml。他们的优先级顺序是web.xml优先级最高,其次是struts.properties,struts.xml,最后是default.properties。我们最主要进行学习的就是struts.xml,其他的作为了解内容就可以了。
篇2:Struts 2框架分析
实验(实习)名称 Struts2框架编程 实验(实习)日期 得分 指导教师 院 计软 专业 计科 年级 2013级 班次 3 姓名 张文娇 学号 20131308081
1.实验目的:
1)掌握Struts2框架和工作流程。2)熟悉Struts标签库的使用。
3)掌握Struts 2拦截器的原理,并能进行相关设置和编程。4)了解和掌握文件上传等功能实现
2.实验内容:
1)采用Struts2框架,创建三个JSP页面(hello.jsp、welcome.jsp)和一个Action实现类(StrutsAction),并对web.xml和Struts.xml进行必要配置,实现用户登录功能的处理。(参考教材3.1节)
2)采用Struts2相关技术,实现“学生综合管理系统”的“添加学生信息”功能(具体需求详见教材3.7所述)
3.实验步骤
{对每个实验题目进行简要步骤描述,包括源码和实验结果截图} 1)
1.启动MyEclips 8.5 2.创建web project项目命名为FirstStruts2 3.添加支持包 4.配置web.xml
5.在工程中创建LoginAction.jsp import dao.CustomerDAO;public class LoginAction {
private String name;private String password;/**在此方法里实现业务逻辑处理*/ public String execute()throws Exception {
CustomerDAO dao=new CustomerDAO();boolean boo=dao.check(name, password);if(boo)return “success”;
} else return “error”;public String getName(){ return name;} public void setName(String name){ this.name = name;} public String getPassword(){ return password;} public void setPassword(String password){this.password = password;} } 6.配置struts.xml文件
篇3:Struts2框架的研究与应用
关键词:struts2,MVC,内置校验器
引言
Struts2采用MVC模式, 是一个开源的web框架。Struts2虽然是在struts1的基础发展起来的但它以webwork为核心, 采用webwork的设计理念, 跟struts1有很大差别。
1. struts2与struts1的区别
1.1 struts2在Servlet依赖方面与struts1是不同的。Struts 1 Action依赖于Servlet API, 因为Struts 1 Action的execute方法中有Http Servlet Request和Http Servlet Response方法。Struts 2 Action不再依赖于Servlet API, 从而允许Action脱离Web容器运行, 从而降低了测试Action的难度。当然, 如果Action需要直接访问Http Servlet Request和Http Servlet Response参数, Struts2 Action仍然可以访问它们。但是, 大部分时候, Action都无需直接访问Http Servet Request和Http Servlet Response, 从而给开发者更多灵活的选择。
1.2 struts2的action类的实现与struts1是不同的。Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2Action类可以实现一个Action接口, 也可以实现其他接口, 使可选和定制的服务成为可能。Struts 2提供一个Action Support基类去实现常用的接口。即使Action接口不是必须实现的, 只有一个包含execute方法的POJO类都可以用作Struts 2的Action。
1.3 Struts2提供了拦截器, 利用拦截器可以进行AOP编程, 即是将通用的功能丛不相关的类中分离出来, 使得很多类共享一个行为, 一旦发生变化, 不必修改很多类, 只需修改这个行为即可。实现如权限拦截等功能。
1.4 Strut2提供了类型转换器, 我们可以把特殊的请求参数转换成需要的类型。
1.5 Struts2提供支持多种表现层技术, 如:JSP、free Marker、Velocity等。
1.6 Struts2提供了大量的内置校验器, 实际中的大部分校验需求都可以通过内置校验器来完成, 常用的有必填校验器、必填字符校验器、字符串长度校验器、整数校验器、日期校验器、邮箱地址校验器等。使用时只需对这些校验器进行配置。
1.7 提供了全局范围、包范围和Action范围的国际化资源文件管理机制。
2. struts2的体系结构及工作机制
2.1 Struts2体系结构图
Strut2的体系结构如图1所示:
2.2 Struts2的工作机制
从图1可以看出, 一个请求在Struts2框架中的处理大概分为以下几个步骤:
(1) 客户端初始化一个指向Servlet容器的请求;
(2) 这个请求经过一系列的过滤器;
(3) 接着Filter Dispatcher被调用, Filter Dispatcher询问Action Mapper来决定这个请求是否需要调用某个Action;
(4) 如果Action Mapper决定需要调用某个Action, Filter Dispatcher把请求的处理交给Action Proxy;
(5) Action Proxy通过Configuration Manager询问框架的配置文件, 找到需要调用的Action类;
(6) Action Proxy创建一个Action Invocation的实例;
(7) Action Invocation实例使用命名模式来调用, 在调用Action的过程前后, 涉及到相关拦截器的调用;
(8) Action执行完毕, Action Invocation负责根据struts.xml中的配置找到对应的返回结果。
3. struts2应用
3.1 基于验证框架的输入校验
Struts2的内置校验器有很多, 常用的有必填校验器、必填字符串校验器、字符串长度校验器、整数校验器、日期校验器等。使用时只需对这些校验器进行配置。编写校验配置文件, 命名规则为action类名-validatin.xml;配置文件存放位置应与Action在相同的文件夹内;校验器的配置风格为字段校验器配置风格。
3.2 配置文件
实现输入校验, 在struts2框架中需要配置3个文件:web.xml、struts.xml和action类名-validatin.xml。在web.xml文件完成对核心控制器的部署, 配置如下:
在struts.xml文件中配置视图可控制器的映射, 配置如下:
在action类名-validatin.xml中完成输入数据的校验, 配置如下:
4. 结论
Struts2是一个优秀的、可扩展的、开源的企业级web应用程序框架。它的实际目的是加快企业级的web应用的开发, 提高系统的稳定性, 降低系统的维护成本。本文在介绍struts2的应用时给出了一个输入校验应用实例, 为今后更好的应用struts2框架开发web应用程序提供了参考。
参考文献
[1]王娟, 谭明超等。基于struts2框架产品信息web发布系统的实现。计算机与信息技术, 2008年06期
[2]吴琳娜, 丛静, 郝林攀。基于Java/MVC构建的三层web政务信息系统。哈尔滨商业大学学报, 2005年12月
[3]蒲子明。Struts2+Hibernate+Spring整合开发技术详解[M]。北京:清华大学出版社, 2010年10月
篇4:Struts 2框架分析
关键词:MVC设计模式;struts2框架;MyBatis
中图分类号:TP311.52 文献标识码:A文章编号:1007-9599 (2013) 05-0000-02
1引言
目前很多公司规模不断扩大,人员越来越多,部门随之增加,后勤部门为了方便管理整个公司的收支情况,必须对每一个部门的收支情况进行更快更直观的统计分析,在这種情况下不得不借助计算机技术进行管理。这个系统就是针对后勤管理部门对整个公司的各个部门的收支情况统计分析的信息化系统。在传统的统计分析中,后勤人员首先必须去各个部门找到负责人签字确认,然后才能进行统计,最后交到财务进行核算。这一系列过程,其具有周期长、效率低、不及时的特点。本系统开发解决了这一问题,使后勤人员从繁杂的工作中解脱出来,提高了工作效率。同时也解决了各部门负责人现场签字的问题。随着信息技术以及网络技术的迅速发展。很多管理系统使用B/S架构进行管理开发,因为在B/S架构组件开发中,整个系统利用Browse作为最终用户界面,这种解决方案也成为企业软件开发的方向,例如J2EE的提出使这种架构更加成熟,使B/S模式更加成熟。在B/S开发模式中,最常用的开发模式是MVC开发设计模式,Struts2是MVC很好的体现,本文主要是使用Struts2与MyBatis框架进行设计开发,在理论上实现了业务逻辑、控制和界面显示的分离,它的提出对Web 的应用开发具有重要意义,本系统开发模式由图一所示:
图1系统开发模式
1.1Struts框架。Struts2是一项开放源码项目,它为Web应用提供了模型-视图-控制器MVC框架,特别适用于开发大型可扩展的Web应用项目。这个框架使开发人员只关注解决公司的实际问题上,而且Struts 框架提供了许多供扩展和定制的地方,应用程序可以方便的扩展框架来更好的适应用户的实际需求。其中,FilterDispatcher是Struts2的核心控制器,它主要功能是拦截客户端的请求。当客户端请求到达服务器时,核心控制器首先对该请求进行拦截,然后该控制器根据请求内容转发相应的Action,Action是Struts2的业务逻辑控制器,它主要负责具体处理客户端请求并将处理结果输出给客户端。1.2MyBatis介绍。MyBatis是一个优秀的ORM 框架,使用XML文件或者注解方式配置和原始映射,MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis只使用简单的XML和注解来配置和映射基本数据类型Map接口和POJ0到数据库记录。MyBatis是一种“半自动化”的ORM实现,提供了更大的灵活性和性能的可控性使用MyBatis最主要的是对mybatis_config.xml文件配置。
2系统的设计与实现
2.1配置web.xml:该文件负责配置Struts2 的核心控制器,只有加载了FilterDispatcher以后Web应用才能获得整个Struts2 框架所提供的服务。其中WEB.xml文件关键配置如下:
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
2.2视图层构件:本系统主要是以JSP技术实现,在JSP页面中不包含任何JAVA程序,JSP页面只具有数据传送、接收和显示功能。在本系统中,用户角色包括系统管理员、后勤管理人员、部分负责人、部门秘书、财务人员。其中系统管理员负责系统的维护工作,后勤管理人员负责部门的统计分析支出情况,部门负责人负责审核部门支出和签字确认,部门秘书负责支出明细的输入,财务人员负责财务划拨以及记录。在使用本系统时,用户根据自己不同的角色进入该系统,在视图层,用户选择自己的角色,当提交给服务器时,根据strust-config.xml文件中的配置,Struts2控制器根据请求内容转发相应的Action。其中,控制器的构件在struts2应用中,其功能是有Struts2本身所提供,不需要开发人员的开发,其配置在Struts-config.xml文件中完成,配置文件如下:
2.3业务逻辑层构建:当前使用的数据库模型都是关系型数据库,在构建模型中主要是把业务对象映射到数据库。在这层可以完成系统的所有业务的逻辑,业务逻辑的主要功能有:(1)接受用户提交的各种请求,并且根据编码的业务规则处理相应的请求。(2)通过数据访问层与数据库的交互任务。
2.4持久化层构建:主要任务是保持数据的持久化,包括两个部分:一是一般关系型的数据,本系统采用Mysql数据库,其特点是较强的灵活性;另外一种为对象数据。在关系型的数据库中存储对象数据往往存在不匹配,这就要求使用数据访问对象的设计方式。在本系统中,系统采用了MyBatis框架,其摒除了大部分的JDBC代码、手工设置参数和结果集重获,MyBatis 只使用简单的XML和注解来配置和映射基本数据类型、Map接口和POJO到数据库记录,大大节省开发时人工使用SQL和JDBC处理数据的时间,其中文件中配置如下:
3结论
通过采用Struts2 框架以及MyBatis架构开发高性能的、面向事务的Web应用,大大简化了B/S程序的开发过程,提高开发效率,缩短开发周期。MVC开发模式在B/S开发之中已经被广泛应用,所以Struts2和MyBatis架构带来的不单给开发带来便利性,而且从根本上为开发人员构思和构建Web应用程序提供了一种新的方式。
参考文献:
[1]宋少忠,欧阳涛,赵浩宇.动态数据库功能在B/S 结构程序设计中的实现[J].吉林大学学,2011(1).
[2]伍晓莉.基于S2SH架构的商业银行非现场监管系统研究[D].南京:南京航空航天大学,2010.
篇5:Struts 2框架分析
关键词:FreeMarker,Struts2,Web,插件,Web模板
1 引言
当今世界, 信息化在各行业之间可以说随处可见了, 一般信息化包括硬件和软件两大块, 与硬件技术发展的快速和成熟相比, 软件的开发技术和流程还远远不够完善, 虽然软件各方面的技术已经比以前有很大改善, 但现在软件技术和功能还不能很好满足当今软件的规模和要求。最近几年时间, 软件技术不断推陈出新, 尤其是Web方面的技术。本文接下来要讲述的Free Marker和Struts2就是Web表现层的技术, 结合这两个技术开发一个页面信息提示的插件, 可以通过标签引入形式复用到任何需要的页面上, 从而简化页面开发难度和提高程序复用性以及可维护性。
2 Free Marker概述
Free Marker是一个模板引擎, 一个基于模板生成文本输出的通用工具, 使用纯Java编写, 它被设计用来生成HTML Web页面, 特别是基于MVC模式的应用程序, 可以通过它获取所需数据并生成页面, Free Marker更适合作为Model2框架 (如Struts2) 的视图组件。下面图1显示了Free Marker模板引擎的工作机, 其中Template file就是Free Marker的一个模板, Java object是一个为模板提供数据的对象, 最后通过Free Marker引擎输出页面代码。应该说Free Marker功能是比较单一, 就是负责提取底层数据生成文本并输出, 不过它的以下一些特性使得它在Web程序中应用比较广泛, 具体特性如下:
2.1 通用数据模型
Free Marker不是直接反射到Java对象, Java对象通过插件式对象封装, 以变量方式在模板中显示, 可以使用抽象 (接口) 方式表示对象, 告诉模板开发者使用方法, 使其不受技术细节的打扰。
2.2 强大的模板语言
Free Marker有自己的指令, 使得模板有很强的控制能力, 同时还有自己的命名空间避免名字的冲突。
2.3 简单的Web显示
分离可视化设计和应用程序逻辑, 分离页面设计员和程序员。
2.4 强大的XML处理能力
用于递归遍历XML树, 在模板中清楚和直接的访问XML对象模型。
3 Free Marker结合Struts2开发插件的过程
Free Marker是一个功能很强的模板语言, 可以直接通过它获取对象的数据。通过Struts2框架的插件扩展机制可以对模板进行封装制作成一个自己的插件, 这样就可以在整个系统中使用。本文将以一个具体的例子来详细解析插件开发的过程及方法, 同时简单阐述Free Marker的原理机制和Struts2插件的使用方法, 这个例子所要实现的功能是在页面弹出底层发送过来的各种消息, 如:验证错误信息、逻辑错误信息、提示信息。整个插件的开发过程将分为模板编写、模板封装、插件配置、插件应用四步来解析说明。
3.1 模板编写
在这里, 所有服务器抛出的信息将通过模板输出, Free Marker具有很强的指令可以获取到业务模型的数据以及控制业务流程, 比如<#list>命令可以遍历集合中的所有数据, <#if>是一个条件判断命令。下面我们给出了逻辑错误信息中的一段核心代码进行分析说明, 以供理解和参考:
以上就是模板编写的格式, 编写完成以后保存为ftl后缀文件。Free Marker包括指令、表达式、运算符、插补四大知识要点, 详情可以查看相关资料说明。
3.2 模板封装
模板写好以后, 可以通过Struts2框架的插件机制对模板进行封装, 从而使得页面能够以标签形式引用处理。模板封装有两步主要任务要完成, 一是通过Struts2组件提供的UIBean接口实现Free Marker模板所需的数据模型, 二是继承Abstract UITag抽象类实现标签属性映射的接口。
实现UIBean核心代码的说明和参考如下:
3.3 插件配置
前面已经把信息提示插件的主要功能已经完成了, 现在要做就是把前面各部分的功能元素通过配置文件进行关联起来组成为一个可用标签插件。这里主要有两个配置文件要完成:一是通过struts-plugin.xml登记插件, 二是在tld文件中配置标签属性。详细配置如下:
3.4 插件应用
通过前面插件配置生成了一个message信息提示标签插件, 只要把前面相应的mytags.tld标签配置文件引入到页面, 就可以使用信息提示标签, 具体一个实例应用如下:
<%@taglib prefix=“err”uri=“/mytags”%>//通过taglib把信息标签引入到所需页面
从上面代码可以看到, 通过插件的形式显示信息提示, 大大简化了代码的复杂度以及提高了代码的可复用性, 同时也有利于代码的维护。
4 结束语
本文简要的讲述了Free Marker结合Struts2框架开发标签插件的基本过程, 这是软件开发过程中的技巧设计之一, 真正的软件开发是一个很复杂的过程, 它可能需要很多优秀设计技巧才能开发出一个实用稳定的系统。
参考文献
[1]李刚.Struts2权威指南.北京:电子工业出版社, 2007.
篇6:Struts 2框架分析
随着技术的不断发展,越来越多的开发框架不断地进入开发人员的视野中,然而,经过开发人员在实际应用中的检验后,发现每一个框架都有着各自的优势和劣势,那么是否可以将众多的框架进行整合,吸取各自的优势,形成一套更加简洁适用的框架呢?这正是文中内容研究的初衷。
2 SSF框架的三层体系架构
SSF框架是Struts2+Spring+Freemarker 3项技术整合而成的一个自定义框架。Struts2是在Struts1和Web Work的基础上而产生的。Struts2相对于Struts1,它将实现用户业务逻辑(Action)同Servlet API分离开,这种分离机制采用了拦截器或者拦截器栈(拦截器链)的方式,而拦截器正是Struts2的核心内容之一。Struts2的工作流程相对于Struts1要简单,而与Web Work框架基本相同,所以说Struts2是吸取了Struts1和Web Work的优点后的升级版本。
Spring和Struts2一样都是一种轻量级的Java EE应用程序框架,Struts2注重的是降低表现层和逻辑层的耦合程度,主要是把业务逻辑和表现层分开,但是不涉及业务层与持久层的关联。Spring主要是对业务层的细化,也就是更深层次地降低耦合程度。在持久层的封装与整合上,Spring做了很多的努力。Spring的Jdbc Template封装了传统的JDBC程式执行流程,并为用户作了例外处理与资源管理等动作,用户所需要的只是给它一个Data Source,而这只要在Bean定义中完成依赖注入。
Free Marker是一个“模板引擎”。它是使用纯Java编写,是一个可用来生成基于模板的文本的工具。Free Marker在生成页面上面更有实效,尤其是那些遵从MVC模式、基于Servlet的应用程序。MVC模式可以将页面设计人员和程序开发人员分离,从而使个人更加专注在他的专长上面。Free Marker模板不会因为受到复杂的代码片断的影响。即便对于页面设计人员和程序开发人员为同一个人的项目,这样的分离也是有用的,因为这有利于保证代码的整洁和便于维护。
SSF框架采用了Java EE分层体系的思想以及MVC设计模式,定位为3层体系结构,即表现层、业务逻辑层以及数据层,其中表现层又细分为页面资源层和页面模板层,业务逻辑层细分为控制层和业务处理层。SSF框架的体系结构如图1所示。
在Java EE体系里,客户层以及表示逻辑层的一部分被抽象为SSF的表现层,Java EE体系里表示逻辑层的一部分以及业务逻辑层被抽象为SSF的业务逻辑层。这样,从MVC设计模式角度审视SSF,表现层充当了View的角色,业务逻辑层中的控制子层充当了Controller的角色,业务逻辑层中的业务处理层和数据持久层充当了Model的角色。
3 SSF框架核心技术及运作流程
在表现层,SSF的技术亮点在于采用了Free Marker生成最终页面。Free Marker能作为JSP的替代,用于MVC模式的设计时可以分离可视化设计和应用程序逻辑。因此,在SSF框架中由于使用了Free Marker,表现层的设计和实现更加具有层次性。Free Marker中静态部分包含HTML、CSS及Java Script,用HTML设计页面结构,用CSS进行页面风格设定,用Java Script进行验证和动态编程,以及可以使用j Query或Ajax等作为Java Script组件库。
SSF中的业务逻辑层分为控制层、业务处理层以及数据持久层3个子层,3个子层间相互协作,各司其职。在控制子层,采用了Struts2框架。选用Struts2框架的根本原因之一是从SSF的结构性和层次性考虑的,另一方面的考虑就在于Struts2真正的优势是它强调简洁和协作能力的根本理念。使用Struts2将有助于最小化代码并允许开发人员更多的关注业务逻辑和建模而不是诸如编写Servlet之类的事情,并且Struts2支持多种视图技术,其中就支持Free Marker。Struts2在整个体系中具体的作用有以下几点:
(1)将用户的请求封装为一个数据对象。
(2)根据请求的不同,调用相应的逻辑处理单元,并将数据对象作为参数传入。
(3)逻辑处理单元完成后,返回一个结果数据对象。
(4)将结果数据对象中的数据与预先设计的表现层相融合并展现给用户。
在业务处理层,SSF采用了Spring框架。通过Spring的核心容器Io C,将有助于简化代码、可使得业务逻辑与基础架构分离,从而使应用程序更易于维护。在项目中,Spring用于管理整个应用的Service,它是一个非常好的Java Bean工厂,当程序启动加载时,Spring把应用的所有Service放在容器里,通过Bean工厂实例化Service对象,当前端应用调用到Service的时候,它就会把已经通过对象注入的Service提供给应用程序。
与Java EE体系相比,SSF框架在数据持久化方面没有直接使用传统的JDBC,而是引入了第三方组件,即Spring Jdbc Template。Spring Jdbc Template模板是对JDBC的良好封装,通过提供相应的模板和辅助类,在相当程度上降低了JDBC操作的复杂性。
为了能够对SSF框架有一个更加直观的理解,可通过如图2———SSF框架的运作流程图,通过一个使用SSF框架开发的登录功能的流程运作的说明,进一步对SSF框架的核心技术及理念进行理解。
(1)首先用户填写了表单,表单中有用户名、密码,然后提交表单到登录Action,第一步,根据预先写好的web.xml,里面所有的Action都映射到Struts2的Servlet来,于是请求发到了Struts2的控制层。
(2)控制层调用Struts2的分派器类,分派器根据写的配置文件struts.xml,找到login请求应该调用的是Login Action,请求便转发给Login Action。
(3)Login Action调用了由Spring负责管理的Service层,具体负责用户管理的是User Service。
(4)User Service通过和数据库交互,使用Spring Jdbc Template取得了用户的信息。
(5)用户信息存放在一个Map对象中返回给Login Action,在Login Action中判断当前取得的密码是否跟用户的提交密码一致,密码一致后验证通过,返回一个success结果给Struts2分派器。
(6)Struts2分派器根据struts.xml文件中对success结果的映射,调用Free Marker模板引擎解析对应的success.ftl文件。
(7)最终用户获得服务器发回的响应,显示登录成功。
4 SSF框架相对传统Java Web开发的优化
传统的Web开发中,Java EE的逻辑层和业务逻辑层都位于应用服务器上,它们由一些Java EE标准组件JSP(Java Server Page)、Servlet、EJB(Enterprise Java Beans)等来实现。在SSF框架中,虽然也有表现层和业务逻辑层,但实现手段已经进行了改进,图3是SSF框架的技术体系结构图。
从图3中可以看出SSF框架对传统Java Web开发技术的几点改进如下:
(1)更明确的页面分工。SSF框架的页面资源层虽由HTML、CSS、Java Script组成,但是它们分别起到不同的作用,分工上更加明确了。这对于日后项目的修改和代码的重用无疑提供了更可靠的可能性。
(2)页面模版引擎的使用。Free Marker的使用大大改善了JSP造成的页面代码、数据对象以及Java代码混乱的问题。
(3)使用Struts2替代了Java EE里面纯Servlet的功能。Struts2不但可以使用Servlet的处理功能,它本身还有独特的处理功能,起到了MVC框架中核心中枢的功能。
(4)在业务处理上,由于Spring的介入,SSF框架较Java EE更加简便、更加轻量级。SSF框架充分利用了Spring的Io C,使得业务处理时更加简单方便。
(5)与Java EE相比,SSF框架在数据持久层引入了第三方组件JDBC Template,这样节省了许多重复的代码,更好地避免了可能出现的诸如数据库连接泄露等异常,还提高了开发效率。
5 结语
通过对Java EE、Struts2、Spring框架和Freemarker模板技术的研究,提出了集成Struts2和Spring等轻量级框架技术,以及Freemarker模板技术的自定义框架的架构设计方案,并在基于现有的流行框架技术的基础上的某些方面进行创新及改进,拓展出一些新的特性,希望能够在实际的应用中,为开发高效、灵活的Web应用系统提供一种新的思路及方案。
参考文献
[1]罗时飞.精通Spring——深入JavaEE开发核心技术[M].北京:电子工业出版社,2008.
[2]温涛.东软Java软件工程师实例参考手册[M].大连:大连理工大学出版社,2011.
[3]闫术卓,等.Struts2技术详解:基于WebWork核心的MVC开发与实践[M].北京:电子工业出版社,2008.
篇7:Struts 2框架分析
基于MVC模式的Struts1框架是Web应用开发最为流行的框架,但是它由于采用侵入式的代码设计,代码与JSP/Servlet耦合紧密,代码重用低、测试难,表现层技术只支持JSP。新的MVC框架Struts2框架诞生克服了Struts1一些缺点,通过与其他框架整合,充分发挥它的良好特性。本文拟整合Struts2和Spring框架来进行Web应用开发。
1 Struts2框架
Struts2框架由3部分组成:核心控制器、业务控制器和业务逻辑组件[1]。核心控制器由Filter Dispatcher充当,负责拦截用户以.action结尾的请求,该其转入框架处理。业务控制器Action类的实例,包含了execute()方法,返回值是字符串如SUCCESS,与此对应跳转到相应视图。处理请求的Action实例并不是业务控制器,而是Action代理。框架提通过拦截器将Http Servlet Request请求的参数解,传入到Action中,执行相应方法处理请求。关于业务逻辑组件方面,在实际的开发中一般通过工厂模式或者其他Io C(控制反转)容器来获得业务逻辑组件的实例。Struts2具体的框架结构如图1。
2 Spring框架
Spring是简化企业级应用开发的开源框架,使得用简单的Java Bean能够实现EJB的功能,是一个轻量级的Io C(控制反转)和AOP(面向切面编程)容器框架[2]。Io C容器就是框架的核心机制,用以实现松散藕合,由容器控制对象间依赖关系,减轻了组件间依赖关系,提高组件的可移植性。Io C又称为依赖注入,基本概念是不创建对象,只描述创建方式,在代码中不直接与对象和服务连接,但在配置文件中描述组件所需要服务项。控制反转模式的本质是将程序之间关系的控制权由程序代码转移到外部容器[3]。
3 整合Struts2和Spring框架
通过分析两者框架特性可知,Struts2核心是控制功能。用户开发的控制器要实现业务逻辑处理要通过其它途径来获得业务逻辑组件实例,比如Io C容器。Spring正好具有容器的特性,将两者整合具体策略如下:将Spring以插件的形式与Strut2框架整合,用户把创建的Action实例交给Spring容器来负责生成和管理,Spring插件提供了一种伪Action的机制,当用户在struts.xml文件中配置Action时,指定class属性值为创建Action实例的实现类,利用Spring插件后允许开发者在指定class属性时,不指向Action实现类,而是指向Spring容器的Bean ID。当Action类需要获得业务逻辑组件时,Spring容器通过依赖注入机制,为Action注入业务逻辑组件。通过这种整合方式,将控制器与业务逻辑组件相分离,业务逻辑组件与DAO组件相分离。Struts2和Spring框架整合后的运作流程图如图2所示。
4 整合开发案例
笔者采用了Struts2和Spring框架来整合开发自行设计和开发了一个小型的图书管理系统,现以其中添加图书的模块为例,介绍整合框架进行Web开发的流程。
4.1 为当前Web应用增加Struts2支持
(1)将Struts2的核心类库(struts2-core-xxx.jar等)复制到当前Web应用的lib目录下;(2)修改Web应用的web.xml配置文件,配置Struts2的核心Filter用以加载Struts2框架。对Filter中<filter>的<filter-class>属性设置为org.apache.struts2.dispatcher.Filter Dispatcher和<filter-mapping>的<urlpattern>属性设置为/*。
4.2 整合Spring框架
首先将Spring的核心类库、依赖库还有插件Struts2-spring-plugin-xxx.jar复制到当前Web应用中;其次初始化Spring容器,将Spring提供的监听器类作为Web应用的Listener,当Web应用启动时,自动查找WEB-INF目录下的application Context.xml文件,根据此文件来创建Spring容器。为此在web.xml文件中listener节点添加org.springframework.web.context.Context Loader Listener。
4.3 DAO层的实现
DAO层专门用于数据库的访问,包括对数据库查询、插入、修改、删除等操作。DAO接口中定义了业务逻辑所需要的方法,DAO接口的实现类则借助于Spring框架的Jdbc Template来实现其方法。Jdbc Template将JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等。设计一个Book DAOImp类实现Book DAO接口,属性为DAO组件依赖的数据源和定义Jdbc模板,通过save()方法实现添加图书到数据库。
4.4 业务逻辑层的实现
业务逻辑层实现系统业务逻辑,每个业务逻辑组件对应两部分:业务逻辑接口和业务逻辑组件实现类。业务逻辑组件所定义的业务逻辑方法为Struts2控制器提供服务、提供用户响应。控制器与业务逻辑接口耦合,使用Io C容器注入管理,避免了控制器主动定位业务逻辑组件,控制器与业务逻辑组件高度解耦。以添加图书模块为例,其业务逻辑层实现类Book Manager Impl实现Book Manager接口,属性Book DAO的实例,通过set Book Dao()接受容器注入DAO组件来调用DAO接口方法。
4.5 控制层的实现
控制层核心控制器是由Struts2提供,开发人员重点负责实现具体业务处理的Action类。每个Action类负责处理一项具体业务,包括接收用户请求、根据请求调用模型组件、获取业务逻辑执行结果,根据当前状态和执行结果选择视图返回。处理添加新书控制器Add Book Action类封装用户请求参数和Book Manager实现类,在execute()方法中,将属性封装成BOOK实例,调用业务逻辑组件add New Book()实现添加图书信息,然后返回逻辑视图名。
4.6 完成配置工作
整合框架开发系统有三个关键配置文件:一是应用的配置文件web.xml,负责加载Struts2框架、初始化Spring容器等;二是Struts2框架的配置文件struts.xml,负责拦截器、控制器、异常处理配置等,三是Spring容器的配置文件application Context.xml,管理容器中所有的Bean、依赖注入等工作。这些配置文件以一种松耦合的方式整合系统的各个框架、功能模块。
5 小结
能否构建一个好的开发框架将关系到整个系统的开发效果、后期维护扩展。文章分析了当前两种流行Struts2和Spring框架,根据各自特点将两种框架进行整合,并使用在实际应用系统中,实践证明此整合框架是可行的,项目开发简洁、结构清晰,并且具备了更好的可扩展性和可维护性。
参考文献
[1]李刚.Struts2权威指南[M].北京:电子工业出版社,2008:71-83.
[2]Rod Johnson.Expert One-on-One J2EE Design and Development[M].Wrox,2002:18-66.
[3]魏学松,张教平.IoC框架的研究与设计[J].计算机技术与发展,2006,16(3):214-216.
[4]袁冷梅,黄烟波,黄家林等.J2EE应用模型中MVC软件体系结构的研究与应用[J].计算机应用研究,2003,20(3):147-149.
[5]冯相忠,王萍.基于J2EE平台的MVC模式的办公日志系统的实现[J].计算机应用,2005,25(12).2964-2965.
相关文章:
观察日记植物迎春花01-13
阿里巴巴的精神文化与核心价值观01-13
阿里跨境电商培训心得01-13
阿里巴巴精神控制术01-13
道德模范学习范文01-13
任小艾老师发言稿六01-13
雨污排水管道施工合同01-13
感动中国演说词范文01-13
感动中国的人物范文01-13
感动中国人物范文01-13