Struts2的配置文件
最重要的是Struts.xml和Struts.propertes
主要介绍struts.xml
在struts.xml中,定义了包括action,每个action调用的拦截器,以及每个action的可能结果
struts2的配置文件支持继承,struts2-core-VERSION.jar文件中包含了默认的配置文件。struts-default.xml就是一个默认配置文件,可通过继承来调用
以下为Struts.xml的主要框架
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
。。。。。。
</struts>
例如:<package name="testStruts2" namespace="/" extends="struts-default">
package元素必须有name属性。
namespace默认值是“/”,存在非默认值时调用该action必须加上
如:默认命名:/context/actionName.action
非默认命名:/context/namespace/actionName.action
package几乎总是继承struts-default.xml中定义的 struts-default包,这样包中所有action都可以使用struts-default.xml中注册的结果类型和拦截器
include元素
例如:<include file="module-1.xml"></include>
引入其他struts.xml文件
每个module.xml文件都有相同的DOCTYPE元素和一个struts根元素,如
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
action元素
嵌套在package元素中,每个action必须有一个name,用于反映该action的功能,如:Product-input
action如果没有指定action类,将会调用默认的action类(ActionSupport类)
例如: <action name="login" class="strut2.LoginAction" method="login">
method为action类中调用的方法,如果没有指出,则调用默认方法execute
result元素
它收到action方法的返回值,根据不同的返回值调用不同的视图
</action>
<action name="login" class="strut2.LoginAction" method="login">
<result name="success">/WEB-INF/page/manage.jsp</result>
<result name="error">/login.jsp</result>
</action>
如果一个方法返回一个没有匹配的result元素的值,Struts将会尽量在global-results元素中查找一个匹配的结果,如果还没有,将抛出异常
result元素的type属性用于指定结果类型。type属性必须在外围包或者外围包继承的父包中注册过的一个结果类型
name属性默认时success,type属性默认是Dispatcher
与拦截器interceptor相关的元素
注册拦截器:
<interceptors>
<interceptor name="logger" class="..."></interceptor>
<interceptor name="validation" class="... "></interceptor>
</interceptors>
应用在action中:
<action name="auth">
<interceptor-ref name="logger"></interceptor-ref>
<result name="success">/WEB-INF/page/manage.jsp</result>
<result name="login">/login.jsp</result>
调用的顺序按照注册的顺序来
创建拦截器栈:
<interceptor-stack name="myStack">
<interceptor-ref name="auth"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
调用拦截器栈:
<action name="auth">
<interceptor-ref name="myStack"></interceptor-ref>
<result name="success">/WEB-INF/page/manage.jsp</result>
<result name="login">/login.jsp</result>