Struts2简介
Struts2是在WebWork2基础发展而来的。和Struts1一样,Struts2也属于MVC框架。不过有一点大家需要注意的是:尽管Struts2和Struts1在名字上的差别不是很大,但Struts2和Struts1在代码编写风格上几乎是不一样的。那么既然有了Struts1,为何还要推出Struts2? 主要是因为struts2有以下优点:
-
在软件设计上Struts2没有像Struts1那样跟Servlet API和Struts API有着紧密的耦合,Struts2的应用可以不依赖于Servlet API和Struts APl,Struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计。
//和Servlet API 有紧密联系
publiclass OrderListAction extends Action{
public ActionForward execute(AcdionMapping mapping ActionForm form,
HttpSerletRequest request, HttpServletResponse response)throws
Exception{
}
} -
Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。
-
Strut2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在Struts1中,如果我们要实现同样的功能,就必须向Struts1的底层实现BeanUtil注册类型转换器才行。
-
Struts2提供支持多种表现层技术, 如: JSP、 freeMarker, Velocity等
-
Struts2的输入校验可以对指定方法进行校验,解决了struts1长久之痛。
-
提供了全局范围、包范围和Action范围的国际化资源文件管理实现
Struts2开发环境的搭建
搭建Struts2环境时, 我们一般需要做以下几个步骤的工作:
- 找到开发Struts2应用需要使用到的jar文件.
- 编写Struts2的配置文件
- 在web.xml中加入Struts2 MVC框架启动配置
开发Struts 2程序最少需要的JAR:
struts2-core-2 x.x.jar :Struts 2框架的核心类库
xwork-2.x.x jar:XWork类库,Struts 2在其上构建
ognl-2.6.x.jar:对象图导航语言(Objed Graph Navigation Language) ,struts2框架通过其读写对象的属性
freemarker-2.3.x. jar :Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar :ASF出品的日志包,struts2框架使用这个日志包来支持Log4J和JDK1.4+的日志记录。
commons- flupload-1.2.1.jar文件.上传组件,2.1.6版本后必须加入此文件
Struts2应用的配置文件
Struts2默认的配置文件为struts.xml,该文件需要存放在WEB-INF/classes下,该文件的配置模版如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>
Web启动配置
<filter>
<filter-name>struts</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>