Struts2的配置文件的加载顺序
每次从客户端发送请求到服务器都要先经过核心过滤器StrutsPrepareAndFilter,这个过滤器有两个功能:预处理和执行。
预处理:就是主要是来加载配置文件的,在过滤器中就是init方法
执行:是用来执行一组拦截器完成部分功能,在过滤器中的就是doFilter方法
由于是过滤器服务器启动就会创建 而过滤器中的init方法就会执行
在核心过滤器中的init方法会执行:
- init_DefaultProperties() ----加载default.properties
- init_TraditionalXmlConfigurations(); ----加载struts-default.xml、struts-plugin.xml、struts.xml
- init_LegacyStrutsProperties(); ----加载struts.properties
- init_CustomConfigurationProviders(); ----加载配置提供类
- init_FilterInitParameters() ; // [6] ----加载web.xml中过滤器初始化参数
- init_AliasStandardObjects() ; // [7] ----加载Bean对象
加载顺序
-
default.properties
-
struts-default.xml
-
struts-plugin.xml
-
struts.xml
-
struts.properties
-
web.xml
- 注意:后配置的常量的值会覆盖先配置的常量的值。
package的相关配置
package标签:被称为包,这个包与Java中的包的概念不一致。包为了更好管理action的配置。
package标签的属性
1. name: 包的名称,在一个项目中不可重名。
2. extends:继承哪个包,通常值是struts-default
3. namespace:名称空间,与< action >标签中的name属性共同决定访问路径
4. abstract:抽象的,用于其他包的继承。
- 空间名称的三种写法:
带名称的访问空间:
1. 带名称的名称空间 :namespace=”/aaa”
2. 跟名称空间 :namespance=”/”
3. 默认名称空间 :namespace=””
action相关的配置
action标签是用来配置Action类的。
action标签的属性
- name :与namespace共同决定访问路径
- class :Action类的全路径
- method :执行Action中的哪个方法的方法名,默认值execute
- converter :用于设置类型转换器
例子:
<!-- 配置Struts2的包 -->
<package name="hello" extends="struts-default" namespace="/">
<action name="hello" class="com.ztl.struts.demo1.HelloAction">
<!-- 配置跳转 -->
<result name="success">/demo1/success.jsp</result>
</action>
</package>
Struts2的常量配置
在Struts2的框架中,提供了非常多的常量:(在default.properties)
- struts.i18n.encoding=UTF-8 ----Struts2中所有的post请求的中文乱码不用处理。
- struts.action.extension=action, ----Struts2请求的默认的扩展名。默认扩展名是.action或者什么都不写。
在Struts2中修改一些常量的值: - 修改常量的值,可以有三个位置进行修正
- struts.xml中进行修改
- struts.properties中进行修改
- web.xml中进行修改
- struts.xml中进行修改
模块开发配置
使用include标签可以导入别的配置
<include file="-----------.xml"/>