struts.xml文件:
strust.xml的根元素为:<struts></struts>,在它内部有些子元素,分析一下:
1.package元素:
struts在设计时已经考虑到了模块化的问题,所以把一些action进行了组织分类,可以放到不同的package中,所以一个struts.xml文件中可以有一个或多个package:
<struts>
<package name="" namespace="" extends="struts-default">
<action name="">
<action name="">
</package>
<package name="" namespace="" extends="struts-default">
<action name="">
<action name="">
</package>
....
</struts>
每个package都必须要有一个name属性,namespace是可选的,默认是"/",如果非默认,要想调用这个包里的动作,就必须把这个属性所定义的命名空间添加到有关的URI字符串中,如
/context/angus.action
有了命名空间,访问就得是/context/[i]namespace[/i]/angus.action
package元素通常要对在struts-default.xml文件里定义的struts-default包进行扩展,如果package扩展了,那struts-default.xml文件里注册的结果类型与拦截器就可以使用了.
扩展的拦截器,以后再说(....)
2.include 元素
为了方便团队开发,且利于管理大型应用程序的struts.xml,可以把几个模块或者几个功能块的小的类struts.xml配置文件集合到一个文件里.我们可以用include引入进来.
...
<struts>
<include file="file1.xml">
<include file="file2.xml">
...
<include file="filen.xml">
</struts>
这里的类file1.xml,file2.xml,...filen.xml,结构应该相似,有相同的DOCTYPE各struts根元素
3.constant 元素
...
<struts>
<constant name="struts.devMode" value="true">
<constant name="..." value="...">
</struts>
这个元素的作用是利用这里的配置来覆盖default.properties中的设置值(Struts2配置说起I内有详解)
4.action元素
action 顾名思义这表示一个动作,一个动作应该有一个action,你可以为它取个名字,
action可以很简单如<action name="testAction"/>,它没有指定处理这个动作的类,而struts2中,默认的动作处理类为ActionSupport类.
如果不是默认的处理类,就必须设置class属性,此外还有它的动作方法
<action name="testAction" class="com.angus.TestAction" method="add">
如果没有method,那么动作方法就会被 默认为execute方法.
5 result元素
<result>是action的子元素,在struts处理完后,控制把控制权转交到哪,如果处理action处理类完成后,可能会有不同返回值,所以可用 会有多个result元素.
<action name="testAction" class="com.angus.TestAction" method="add">
<result type="dispatcher" name="success">/test/addSuccess.jsp</result>
<result type="dispatcher" name="error">/test/addError.jsp</result>
</action>
处理类默认返回的是"success",所有默认的result内的属性可以不写.
这里的type有很多种:(见result结果类型)
6.grobal-results元素
一个package可以有一个grobal-results元素,其中 包含的结果是一些通用 的结果,如果一个动作完成后在对应的action中找不相应的result,它将会搜索grobal-results元素.
如:
<grobal-results>
<result type="dispatcher" name="success">/test/addSuccess.jsp</result>
<result type="dispatcher" name="error">/test/addError.jsp</result>
</grobal-results>
7.拦截器有关
有5个与拦截器相关的元素可能会出现在struts.xml文件里:interceptors,interceptor,interceptor-ref.interceptor-stack,
default-interceptor-ref
对动作处理的拦截器,如果要使用,必须在<interceptor>内注册,
如: <package name="all" extends="struts-default">
<interceptors>
<interceptor name="validate" class="">
<interceptor name="logger" class="">
</interceptors>
</package>
如果一个action处理前要经过一系列相同的拦截器进行处理 ,那么可以将这相同的一系列拦截器定义成一个 interceptor-stack;
如
<interceptors>
<interceptor name="validate" class="">
<interceptor name="logger" class="">
<interceptor name="exception" class="">
<interceptor name="servlet-config" class="">
<interceptor name="i18n" class="">
</interceptors>
<interceptor-stack name="baseStack">
<interceptor-ref name="exception">
<interceptor-ref name="servlet-config">
<interceptor-ref name="logger">
<interceptor-ref name="i18n">
</interceptor-statck>
所以使用的时候,只要写这个stack的名字就行了
<action name="" class="">
<interceptor-stack name="baseStack">
<result >/test/addSuccessjsp</result>
</action>
当然在struts-deault包已经定义好了几个拦截器stack,而且还有定义了一个default-interceptor-ref,如果一个动作没有定义任何拦截器,就将使用这个元素定义的默认拦截器或拦截器栈.
<default-interceptor-ref name="defaultStack"/>
如果action元素中有interceptor元素,那么default-interceptor-ref元素将被忽略.
8.param元素
<param>它可以嵌套在另一个元素中如:action,result-type,interceptor里,它的作用就是传值.
<param name="key">value</param>
strust.xml的根元素为:<struts></struts>,在它内部有些子元素,分析一下:
1.package元素:
struts在设计时已经考虑到了模块化的问题,所以把一些action进行了组织分类,可以放到不同的package中,所以一个struts.xml文件中可以有一个或多个package:
<struts>
<package name="" namespace="" extends="struts-default">
<action name="">
<action name="">
</package>
<package name="" namespace="" extends="struts-default">
<action name="">
<action name="">
</package>
....
</struts>
每个package都必须要有一个name属性,namespace是可选的,默认是"/",如果非默认,要想调用这个包里的动作,就必须把这个属性所定义的命名空间添加到有关的URI字符串中,如
/context/angus.action
有了命名空间,访问就得是/context/[i]namespace[/i]/angus.action
package元素通常要对在struts-default.xml文件里定义的struts-default包进行扩展,如果package扩展了,那struts-default.xml文件里注册的结果类型与拦截器就可以使用了.
扩展的拦截器,以后再说(....)
2.include 元素
为了方便团队开发,且利于管理大型应用程序的struts.xml,可以把几个模块或者几个功能块的小的类struts.xml配置文件集合到一个文件里.我们可以用include引入进来.
...
<struts>
<include file="file1.xml">
<include file="file2.xml">
...
<include file="filen.xml">
</struts>
这里的类file1.xml,file2.xml,...filen.xml,结构应该相似,有相同的DOCTYPE各struts根元素
3.constant 元素
...
<struts>
<constant name="struts.devMode" value="true">
<constant name="..." value="...">
</struts>
这个元素的作用是利用这里的配置来覆盖default.properties中的设置值(Struts2配置说起I内有详解)
4.action元素
action 顾名思义这表示一个动作,一个动作应该有一个action,你可以为它取个名字,
action可以很简单如<action name="testAction"/>,它没有指定处理这个动作的类,而struts2中,默认的动作处理类为ActionSupport类.
如果不是默认的处理类,就必须设置class属性,此外还有它的动作方法
<action name="testAction" class="com.angus.TestAction" method="add">
如果没有method,那么动作方法就会被 默认为execute方法.
5 result元素
<result>是action的子元素,在struts处理完后,控制把控制权转交到哪,如果处理action处理类完成后,可能会有不同返回值,所以可用 会有多个result元素.
<action name="testAction" class="com.angus.TestAction" method="add">
<result type="dispatcher" name="success">/test/addSuccess.jsp</result>
<result type="dispatcher" name="error">/test/addError.jsp</result>
</action>
处理类默认返回的是"success",所有默认的result内的属性可以不写.
这里的type有很多种:(见result结果类型)
6.grobal-results元素
一个package可以有一个grobal-results元素,其中 包含的结果是一些通用 的结果,如果一个动作完成后在对应的action中找不相应的result,它将会搜索grobal-results元素.
如:
<grobal-results>
<result type="dispatcher" name="success">/test/addSuccess.jsp</result>
<result type="dispatcher" name="error">/test/addError.jsp</result>
</grobal-results>
7.拦截器有关
有5个与拦截器相关的元素可能会出现在struts.xml文件里:interceptors,interceptor,interceptor-ref.interceptor-stack,
default-interceptor-ref
对动作处理的拦截器,如果要使用,必须在<interceptor>内注册,
如: <package name="all" extends="struts-default">
<interceptors>
<interceptor name="validate" class="">
<interceptor name="logger" class="">
</interceptors>
</package>
如果一个action处理前要经过一系列相同的拦截器进行处理 ,那么可以将这相同的一系列拦截器定义成一个 interceptor-stack;
如
<interceptors>
<interceptor name="validate" class="">
<interceptor name="logger" class="">
<interceptor name="exception" class="">
<interceptor name="servlet-config" class="">
<interceptor name="i18n" class="">
</interceptors>
<interceptor-stack name="baseStack">
<interceptor-ref name="exception">
<interceptor-ref name="servlet-config">
<interceptor-ref name="logger">
<interceptor-ref name="i18n">
</interceptor-statck>
所以使用的时候,只要写这个stack的名字就行了
<action name="" class="">
<interceptor-stack name="baseStack">
<result >/test/addSuccessjsp</result>
</action>
当然在struts-deault包已经定义好了几个拦截器stack,而且还有定义了一个default-interceptor-ref,如果一个动作没有定义任何拦截器,就将使用这个元素定义的默认拦截器或拦截器栈.
<default-interceptor-ref name="defaultStack"/>
如果action元素中有interceptor元素,那么default-interceptor-ref元素将被忽略.
8.param元素
<param>它可以嵌套在另一个元素中如:action,result-type,interceptor里,它的作用就是传值.
<param name="key">value</param>