简介
Struts2 是一个非常优秀的MVC框架,由传统Struts1和WebWork两个经典框架发展而来。
优点
Action的execute 方法不再与ServletAPI耦合,更易测试
支持更多视图技术(JSP、FreeMarker、Velocity)
基于Spring AOP思想的拦截器机制,更易扩展
更强大、更易用输入校验功能
Struts2所处的位置:
struts2目录结构
apps 该文件夹包含了基于struts2 的示例应用,这些示例应用对于学习者是非常有用的
docs 该文件夹下包含了struts2 相关文档,包括struts2快速入门、struts2的文档以及API文档等
lib 该文件夹下包含了Struts2框架和核心类库,以及struts2第三方插件类库
src 该文件夹下包含了Struts2框架的全部源代码
注意:开发时没必要将lib目录下jar文件全部复制到项目中,根据需要即可。
Struts运行的核心jar包
struts2-core-2.3.1.1.jar:Struts 2框架的核心类库
xwork-core-2.3.1.1.jar:Command模式框架,WebWork和Struts2都基于xwork
ognl-3.0.3.jar:对象图导航语言(ObjectGraph Navigation Language),struts2框架通过其读写对象的属性
freemarker-2.3.18.jar:Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar:ASF出品的日志包,Struts2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload-1.2.2.jar: 文件上传组件,2.1.6版本后需要加入此文件
commons-io-2.0.1.jar:传文件依赖的jar包
commons-lang-2.5.jar:对java.lang包的增强
web.xml中配置核心过滤器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
默认配置文件
Struts2的配置文件加载顺序
1、default.properties 该文件保存在struts2-core-2.3.7.jar 中 org.apache.struts2中
2、struts-default.xml 该文件保存在struts2-core-2.3.7.jar
3、struts-plugin.xml 该文件保存在struts-Xxx-2.3.7.jar(struts2的插件jar包中)
4、struts.xml 该文件是web应用默认的struts配置文件
5、struts.properties 该文件是Struts的默认配置文件。构建路径的顶端
6、web.xml应用的配置文件
注意:按照从1到6的顺序加载配置文件。后面的内容会覆盖前面的内容。1和2和3都在框架或插件提供的jar中,不需要我们直接改。我们必须通过编写struts.xml和struts.properties和web.xml来覆盖对应属性。相当于java中的继承。
使用流程
1.解决配置文件无提示
导入dtd
需要编写的文件
1、配置文件:指挥控制器运作
2、动作类:处理逻辑
3、JSP:展现结果
编写struts.xml
拷贝配置文件约束。及配置文件头。
struts.xml配置文件的内容标签
1、package:
作用:分模块化开发。
属性:name:包的名称。必须唯一。必须有
extends:一般都需要直接或间接继承一个叫做struts-default(struts-default.xml中有定义)的包名。因为,struts框架的一些核心功能配置都在此处。
abstract:如果为true,说明是一个抽象包。说明让别人去继承。没有任何action子元素的包就可以定义为抽象包。
namespace:名称空间。一般以"/"开头,和动作名称一起,构成了用户的访问路径。
比如:
2、action:
作用:配置动作。用户什么请求,执行哪个类,及哪个类的方法。
属性:name:动作名称。必须的。包中要唯一。
class:动作类的全名。可以不指定,默认值是com.opensymphony.xwork2.ActionSupport
method:执行的动作类的动作方法。可以不指定,默认值是execute。
说明:可以覆盖掉默认的动作类。
3、constant配置:
推荐覆盖常量办法:在struts.xml中使用constant标签。
作用:配置常量的值。
struts2的常量都在default.properties配置文件中做了定义(struts2-core.jar/ org.apache.struts2包中)
常用的常量:
struts.i18n.reload = true 国际化配置文件更改后,自动加载。
struts.configuration.xml.reload = truestruts配置文件更改后,自动加载
struts.devMode = false 如果为true,开启开发模式 .实际运行应该为false
struts.i18n.encoding=UTF-8 应用使用的编码。
struts.action.extension=action,, struts2框架真正执行的url地址后缀。多个用逗号分隔
struts.serve.static.browserCache=true 静态资源告知浏览器不要缓存。
Expires:-1;Cache-Control:no-cache;Pragma:no-cache
4、包含其他的配置文件
<includefile="user.xml"></include>