struts.xml是Struts 2的核心配置文件,它主要负责管理应用中的Action映射,以及该Action包含的Result定义等。
下面我们先来看下struts.xml最简化的一个基本配置:
参数值
附注:struts2加载配置文件的顺序:
struts-default.xml(struts2-core-2.x.x.x.jar中) -> struts-plugin.xml(各插件中) -> struts.xml(自定义)
注意:如果在多个配置中配置同一信息,则后一个配置中的配置会覆盖前面的配置。
下面对struts.xml文件中常用的元素标签进行简要的介绍:
该标签是struts.xml文件的根标签,它包含以下子元素:
一、
该标签使用包机制来解决同名action的兼容问题,该标签支持多继承,例如
标签属性 |
是否必需 | 功能描述 |
name | 是 | 包名,作为其它包应用本包的标记 |
extends | 否 | 设置本包继承其它包,必须继承struts-defalut.xml包 |
namespace | 否 | 设置包的命名空间,更重要的是解决Action重名问题 |
abstact | 否 | 设置为抽象包 |
附注:namespace属性详解:
(1)默认命名空间:
/success.jsp
该包未指定命名空间,则采用默认的命名空间""(相当于namespace="").
则此配置下的Action的URL为http://localhost:8080/projectName/login.action
如果在指定路径下搜索不到action资源,就会到默认命名空间下搜索,效果同根命名空间。
eg:我们访问:http://localhost:8080/projectName/test/login.action,在/test的命名空间中搜索不到login的action资源,就会直接到默认命名空间中搜索。
/success.jsp
则此配置下的Action的URL为http://localhost:8080/projectName/user/login.action
/success.jsp
该包的命名空间为根命名空间,此时所有根路径下的Action请求都会去这个包中查找对应的资源信息。
则此配置下所有http://localhost:8080/projectName/*.action都会到设置为根命名空间的包中寻找资源。
说明:namespace的搜索顺序:
自定义命名空间 -> 根命名空间 -> 默认命名空间
1.
该标签用于配置action映射,以确定如何处理客户端请求。它包含以下的子元素:
标签属性 | 是否必须 | 功能描述 | 默认值 |
name | 是 | 请求的Action名称 | |
class | 否 | Action处理类对应具体路径 | ActionSupport |
method | 否 | 指定Action中的方法名 | execute |
converter | 否 | 指定Action使用的类型转换器 |
附注:通配符的使用:
*表示通用的内容,{0}表示所有通配符*所表示的内容,{i}表示第i个通配符*所表示的内容。示例如下:
public class TestAction {
public String test1(){
return "result1";
}
public String test2(){
return "result2";
}
public String test3(){
return "result3";
}
}
struts.xml中配置为:
/result{1}.jsp
我们访问:http://localhost:8080/projectName/test1.action 跳转到result1.jsp
http://localhost:8080/projectName/test2.action 跳转到result2.jsp
http://localhost:8080/projectName/test3.action 跳转到result3.jsp
1.1
该标签用于设置结果视图。
标签属性 | 是否必须 | 功能描述 | 默认值 |
name | 否 | 对应Action返回逻辑视图名称 | success |
type | 否 | 返回结果类型 | dispatcher |
附注:type属性的几个主要值:
(1)redirect:重定位到URL/index.jsp?username=${username}
(2)redirectAction:重定向Action
//重定向某个命名空间下的action
xxx
/test
(3)plainText:用于显示实际视图资源的代码
/index.jsp //该参数指定了该逻辑视图对应的实际资源
UTF-8 //该参数指定了采用的编码方案
2.
通过该标签可以向Struts2框架中注册拦截器或者拦截器栈,一般多用于自定义拦截器或拦截器栈的注册
<1-- 同一包内最多只能出现一次 -->
3.
该标签用来设置整个包范围内所有Action所要应用的默认拦截器信息,即该拦截器作用于该包的所有action。
注意:当为某个Action单独添加拦截器功能后,
3.1
通过该标签可以为其所在的Action添加拦截器功能。
4.
该标签用来标识包范围内的全局结果集,即用于共享结果集。示例如下:
/error.jsp
noSession">/login.jsp
/index.jsp
/loginError.jsp
/unKnownAction.jsp
/index.jsp
测试访问:http://localhost:8080/projectName/user/login.action
测试结果:跳转到了index.jsp视图。
7.
该标签用于配置全局(包范围)的异常视图映射。它只有一个子元素:
7.1
该标签用于配置action范围的异常视图映射。
/unKnown.jso
/sqlException.jso
8.
该标签用于定义结果类型所对应的实现方式。以下是struts-default默认配置的结果类型:
二、
该标签用来配置常量。
附注:
struts2加载常量的搜索顺序:
struts-default.xml --> struts-plugin.xml --> struts.xml --> struts.properties --> web.xml
注意:如果在多个配置中定义了同一常量,则后一个配置中的常量值会覆盖前面配置的常量值。
三、
该标签主要用来将一个struts.xml配置文件分割成多个配置文件,方便阅读和管理。
四、