加载配置文件顺序
default.properties 核心属性配置加载 struts2-core-2.3.7.jar 中 org.apache.struts2包
struts-default.xml 该文件保存在 struts2-core-2.3.7.jar
struts-plugin.xml 该文件保存在struts-Xxx-2.3.7.jar ,在每个插件各自jar包里
struts.xml 该文件是web应用默认的struts配置文件
struts.properties 该文件是Struts的默认配置文件
web.xml 该文件是Web应用的配置文件
****** 常用用户编写配置文件 struts.xml
1. Action配置
Action需要Package进行管理
struts-default.xml中 内置默认package "struts-default"
用户自定义package 需要继承 struts-default 包 (使用struts-default包中 定义拦截器和结果集 )
每个package都可以定义 namespace属性,如果不写 默认值就是 "/"
Action的访问路径 = 包名称空间 namespace + Action name属性
nsmespace 作用:管理不同package下面有着相同Action name
<package namespace="/aaa">
<action name="hello" ... 访问该Action 路径 /aaa/hello.action
<package namespace="/bbb">
<action name="hello" ... 访问该Action 路径 /bbb/hello.action
http://server/struts2/path1/path2/path3/test.action
搜索规则 :
去名称空间 /path1/path2/path3/ 找 test.action
去名称空间 /path1/path2 找 test.action
去名称空间 /path1 找 test.action
去名称空间 / 找 test.action
Action默认值
<package> 不写 namespace 默认 /
<result> 不写name 默认 success
<action> 不写class 执行默认 class处理类 在struts-default.xml 定义 <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
<action> 存在method属性,不写method 执行Action中execute方法
2、struts2 常量配置
配置常量三个位置
1)src/struts.xml
<constant name="struts.devMode" value="true" />
2)src/struts.properties
struts.devMode = true
3) web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>struts.devMode</param-name>
<param-value>true</param-value>
</init-param>
</filter>
** 请记住第一种
** 配置常量时,后加载配置文件 会覆盖之前加载配置文件 同名常量
struts.i18n.encoding=UTF-8 设置请求默认编码集,等价于request.setCharacterEncoding
struts.action.extension=action,, 该配置可以将以xxx结尾请求,分发到对应Action
// 访问 ..../hello.action 等价于 .... /hello 不加扩展名也行
struts.serve.static.browserCache=true 设置静态内容可以缓存
struts.devMode = false 关闭开发模式,如果设置true ,会 struts.i18n.reload = true 、struts.configuration.xml.reload = true
# struts.objectFactory = spring 默认注释,Action没有交给Spring 创建,打开注释,用来和Spring框架进行整合
struts.enable.DynamicMethodInvocation = true 动态方法调用默认开启
*** 当配置过多时 通过<include> 将struts2配置文件分离 <include file="struts-constants.xml"></include>