目 录
一、Struts 2前奏 .................... 2
1. MVC模式.............................................................................. 2 2. Struts简介 ....................................................................... 2 二、Struts 2基础 .................... 3 1. Struts 2简介 ..................................................................... 3 2. 下载Struts 2框架 ........................................................... 3 3. 在Eclipse中开发Struts 2 ........................................... 4 三、Struts 2输入校验.................. 5 1. Struts 2的标签库 ............................................................ 5 2. 继承ActionSupport完成输入校验。 ........................... 6 3. 正则表达式 .......................................................................... 6 四、Struts 2 ................... 6 五、结束语 ........................ 7 参考文献 ......................... 7
基于Struts 2技术开发应用论文
——JAVA EE相关技术
摘要:Struts框架是全世界第一个MVC框架,发展至今有多年的历史,一直备受开发人员
热捧。但是随着时间的流逝,Struts框架暴露出许多缺陷,这些缺陷一直困扰着大量的开发人员,许多开发人员不得不选择其他MVC框架。所幸的是,Struts 2横空问世了。Struts 2框架整合了两个非常优秀的MVC框架:Struts和WebWork。
关键词:MVC模式、Struts、Struts 2、框架
引言:完成了两周的JSP实训,终于对Struts 2有了一个比较系统的了解,现在将Struts
2技术的相关应用详细的罗列出来,希望通过这篇论文,我能有更深一层的了解。
一、Struts 2前奏
1. MVC模式
首先介绍MVC架构。MVC包含3个基本部分,分别是Model(模型)、View(视图)和Controller(控制器)。JSP只负责显示,而控制器则由Servlet充当,模型由JavaBean充当。Servlet的作用是:收集数据、调用业务逻辑和转发。
MVC模式的结构如图所示:
Struts 12. Struts简介
Struts 1是第一个发布的MVC框架。Struts 1通过核心控制器Action Servlet来接受用户所有的请求,并将请求转发给业务逻辑控制器。由业务逻辑控制器处
理用户请求,用户请求处理完成后,业务逻辑控制器会根据业务逻辑将处理结果通过JSP的方式返回给用户。
二、Struts 2基础
1. Struts 2简介
Struts 2是Struts 1的换代产品,Struts 2吸收了大量WebWork的设计思想,同时也吸收了部分Struts 1的特点。Struts 2是以WebWork为核心,采用的机制来处理用户请求的,这样的设计使得业务逻辑控制器能够与Servlet API完全的脱离,弥补了Struts 1的缺陷。
下图为Struts MVC体系结构 客户端客户请求Request控制器类ActionServletFormBeanstruts-config.xml 浏览器 返回响应Response视图(JSP)Action业务逻辑处理(Model)2. 下载Struts 2框架
Struts的官方站点:http://struts.apache.org
在Struts官方站点中,下载Struts 2.0.11.1,该页面下的Full Distribution为完整版的下载,建议下载这个。 下载完成后,解压“Struts-2.0.11.1-all.zip”,文件结构说明如下:
apps:该文件夹中存放Struts 2的示例程序。docs:存放Struts 2的相关文档。backport:存放Struts 2的JDK1.4支持JAR。lib:存放Struts 2的核心类库以及第三方的JAR文件。src:存放Struts 2框架的全部源代码。
3. 在Eclipse中开发Struts 2
(1)首先为项目添加Struts 2支持,即Struts 2的安装: 将
struts-2.0.11.1
中
的
lib
文
件
夹
下
的
“common-logging-1.0.4.jar”、“freemarker-2.3.8.jar”、“
struts2-core-2.0.11.1.jar”
、“
xwork-2.0.4.jar”
和
“ognl-2.6.11.jar”类库复制到Web项目的WEB-INF/lib目录下。 编辑Web项目中的“web.xml”配置文件。在排至文件中增加Struts 2
核心Filter的配置。代码如下:
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2 /*
(2)然后添加控制器Action
创建class文件“xx.action”,实现Action接口,添加属性,用来封装用户请求的参数,增加get和set方法,添加execute()方法并抛出异常。
(3)添加并配置struts.xml
在src目录下创建struts.xml文件,文件中配置Action,其中包括指定Action的实现类,以及Action处理结果(返回字符串)与视图资源文件之间的映射。代码如下:
/output_news.jsp /input_news.jsp /err.jsp
(4)增加视图资源,在WebRoot目录下创建JSP文件,用来显示。添加业务逻辑组件到src目录。
三、Struts 2输入校验
输入校验分为客户端校验和服务器端校验。客户端校验可以过滤掉用户的错误操作,是第一道防线,一般使用JavaScript代码实现。仅有客户端验证还是不够的。攻击者还可以绕过客户端校验直接进行非法输入,这样可能会引起系统的异常,所以必须加上服务器端的验证。但仅有服务器端验证也是不行的,客户的错误操作总是提交到服务器,由服务器端进行验证返回错误信息,这样会加重服务器的负担。所以客户端验证和服务器端验证缺一不可,两者结合起来才可以构建健壮的系统。图为Struts 2输入校验流程:
1. Struts 2的标签库
介绍输入校验之前,首先了解一下Struts 2的标签库。Struts 2框架提供了一些能进行控制流程、输出数据等操作的标签库。使用标签库,能大量地减少代码的编写,只需简单的输入一些参数就可以实现复杂的代码功能。如果在JSP页面中使用Struts 2提供的标签,首先必须在页面的taglib编译指令导入标签库,添加代码如下:
<%@taglib prefix=“s” uri=“/Struts-tags”%>
使用时加上标签的名字就可以了,如:.只有使用Struts 2标签,才能进行输入校验。2. 继承ActionSupport完成输入校验。
ActionSupport类已经实现了Action接口和Validatable等接口。通过重写validata()方法。可以非常方便地实现校验功能。
3. 正则表达式
客户端校验一般都使用JavaScript来进行输入的校验。JavaScript对输入判断都会使用到正则表达式。正则表达式是字符串处理的利器,功能非常强大。 正则表达式的功能非常强大,通过它可以进行字符串匹配、字符串查找、字符串替换。
四、Struts 2
Struts 2是Struts 2的一个重要组成部分,通过大量的内建完成Struts 2框架的大部分操作。Struts 2通过一种可插拔式的设计来添加和删除使用,从而提供了非常好的可扩展性。
自定义一个需要三步:
自定义一个实现Interceptor接口的类,代码如下:
public abstract class AbstractInterceptor implements Interceptor{
public void init(){
}
public void destory(){
}
public abstract String intercept(ActionInvocation invocation)
throws Exception; }
在Struts.xml中注册上一步定义的,代码如下: 在需要使用的Action中引用引用上述上述的,为了方便也可以将此
设为默认,这样在不加特殊说明的情况下所有的Action都被这个拦截。
使用时,只需在struts.xml文件的Action元素中添加interceptor-ref元素来指定使用哪个即可。
五、结束语
经过了两年的编程学习,我觉得掌握一门实用且方便的框架是必不可少的,经过长期实践,我选择了Struts 2。在老师的指导下,我对Struts 2有了一个初步的了解。经过这次实训后,对Struts 2的使用更是得心应手(说的有点大了)。 为了学好Struts 2,在大量阅读有关文献的基础上,我还及时做总结,分析其他人的观点,找出不同之处,亲身实践,提出自己的见解,希望能够有所提升。
最后,感谢我的陈老师,这篇论文的每个实验细节和每个数据,都离不开您的细心指导。而您开朗的个性和宽容的态度,帮助我能够很快的融入编程这门相对枯燥的课程学习中去。谢谢!
参考文献
【1】卜炟 《零基础学Struts》 2009年3月出版 第二章 【2】王家骐《基于MVC设计模式的WEB应用框架研究》
【3】Struts与MVC框架介绍