搜索
有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 184|回复: 0
收起左侧

《研磨struts2》struts.xml的配置

[复制链接]

签到天数: 3 天

连续签到: 1 天

[LV.2]偶尔看看I

1126

主题

319

好友

5万

积分

吃货

❤~(`・ω・´) 保【FSC】姆 (´・ω・`)~❤

积分
50565
发表于 2012-6-18 21:06:46 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
A.1  struts.xml的配置A.1.1  概述
前面已经分散学习了Struts2的各部分知识,相应的配置也分散到相关部分去学习了,这里再把这些配置的知识梳理和总结一下,以利于大家更好的掌握。
       Struts2的配置文件主要是struts.xml文件,以前还有一个struts.properties文件,现在struts.properties文件的内容基本上都可以在struts.xml文件进行配置,也就不再重要了。
A.1.2  DOCTYPE和根元素       struts.xml文件必须包含如下的DOCTYPE的定义,如果是struts-2.0的dtd,示例代码如下:

java代码:


查看 复制到剪贴板 打印

  • <?xml version="1.0" encoding="UTF-8" ?>  
  • <!DOCTYPE struts PUBLIC  
  •      "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  •      "http://struts.apache.org/dtds/struts-2.0.dtd">  



如果是struts-2.1的dtd,示例代码如下:

java代码:


查看 复制到剪贴板 打印

  • <?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.xml文件的根元素是<struts>,它的dtd定义是:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT struts ((package|include|bean|constant)*, unknown-handler-stack?)>  



unknown-handler-stack:这个是2.1的dtd加入的,用来配置当找不到某些资源的时候进行处理的处理器的栈。
A.1.3  package元素用来逻辑上组织Struts的配置,这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, default-class-ref?, global-results?, global-exception-mappings?, action*)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <package name="hello" namespace="/javass" extends="struts-default">  



A.1.4  action元素action元素用来配置一个动作,这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT action (param|result|interceptor-ref|exception-mapping)*>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <action name="helloworldAction" class="cn.javass.hello.struts2impl.action.HelloWorldAction" method="create">  



A.1.5  include元素include元素用来引入其他相关模块的struts配置文件。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT include (#PCDATA)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <struts>  
  •      <include file="struts-user.xml"/>  
  •      <include file="struts-dep.xml"/>  
  • ……  
  • </struts>  



A.1.6  bean元素bean元素用来配置一个bean,可以是由Struts来创建这个bean,也可以是使用给定bean的静态方法。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT bean (#PCDATA)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <bean class="com.opensymphony.xwork2.ObjectFactory" name="xwork" />  



A.1.7  constant元素constant元素用来覆盖在default.properties文件里面配置的常量值。有了constant元素就不必再去配置struts.properties文件了,把struts.properties里面的配置,直接使用constant元素配置到struts.xml里面。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT constant (#PCDATA)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <bean name="um" type=”UserEbi” class="cn.javass.vo.UserModel">  



A.1.8  unknown-handler-stack元素unknown-handler-stack元素用来配置当找不到某些资源的时候进行处理的处理器的栈。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT unknown-handler-stack (unknown-handler-ref*)>  



简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <bean type="com.opensymphony.xwork2.UnknownHandler" name="handler1" class="com.opensymphony.xwork2.config.providers.SomeUnknownHandler"/>  
  • <bean type="com.opensymphony.xwork2.UnknownHandler" name="handler2" class="com.opensymphony.xwork2.config.providers.SomeUnknownHandler"/>  
  • <unknown-handler-stack>  
  •     <unknown-handler-ref name="handler1" />  
  •     <unknown-handler-ref name="handler2" />  
  • </unknown-handler-stack>  



A.1.9  unknown-handler-ref元素unknown-handler-ref元素用来参照处理器。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT unknown-handler-ref (#PCDATA)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <bean type="com.opensymphony.xwork2.UnknownHandler" name="handler1" class="com.opensymphony.xwork2.config.providers.SomeUnknownHandler"/>  
  • <unknown-handler-stack>  
  •     <unknown-handler-ref name="handler1" />  
  •   </unknown-handler-stack>  



A.1.10  default-action-ref元素default-action-ref元素用来配置默认的动作,如果在package里面找不到与当前URL对应的多座,那么就调用这个action。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT default-action-ref (#PCDATA)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <default-action-ref name=”helloAction”/>  



A.1.11  default-interceptor-ref元素default-interceptor-ref元素用来配置默认的河蟹或河蟹栈,如果在action里面没有明确的定义或引用河蟹或河蟹栈,那么就调用这里配置的河蟹或河蟹栈。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT default-interceptor-ref (#PCDATA)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <default-interceptor-ref name="defaultStack"/>  



A.1.12  default-class-ref元素default-class-ref元素用来配置默认的类,如果没有为某个Action指定具体的class值时,将自动引用这个默认的类。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT default-class-ref (#PCDATA)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <default-class-ref class="cn.javass.action.DefaultAction"/>  



A.1.13  exception-mapping元素exception-mapping元素用来配置处理动作没有处理的例外。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT exception-mapping (#PCDATA|param)*>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction">  
  •              <exception-mapping result="math-exception" exception="java.lang.ArithmeticException"/>  
  •              <exception-mapping result="math-exception" exception="java.lang.Exception"/>  
  •              <result name="math-exception">/error.jsp</result>  
  •              <result>/s2impl/welcome.jsp</result>  
  •          </action>  



A.1.14  global-exception-mapping元素global-exception-mappings元素用来配置公共的exception-mapping,可以包含1到多个的exception-mapping元素。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT global-exception-mappings (exception-mapping+)>  



A.1.15  global-results元素global-results元素用来配置公共的result,可以包含1到多个的result元素。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT global-results (result+)>  



A.1.16  interceptor元素interceptor元素用来配置河蟹。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT interceptor (param*)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <package name="helloworld"  extends="struts-default">  
  •      <interceptors>  
  •              <interceptor name=“myInterceptor” class="cn.javass.action.action.MyInterceptor"/>  
  •          </interceptors>  
  • ……  
  • </package>  



A.1.17  interceptor-ref元素interceptor-ref元素用来应用河蟹或河蟹栈。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT interceptor-ref (param*)>  



它有如下的属性:

                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction">  
  •              <result name="toWelcome">/s2impl/welcome.jsp</result>  
  •              <interceptor-ref name=“myInterceptor”/>  
  •              <interceptor-ref name="defaultStack"/>  
  • </action>  



       要注意:在Action里面配置了河蟹的引用,会覆盖掉默认的配置,因此通常需要再手动的引用defaultStack。
A.1.18  interceptor-stack元素interceptor-stack元素用来配置河蟹栈。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT interceptor-stack (interceptor-ref*)>  



它有如下的属性:

                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <interceptor-stack name="defaultStack">  
  •                  <interceptor-ref name="exception"/>  
  •                  <interceptor-ref name="alias"/>  
  • ……  
  • </interceptor-stack>  



A.1.19  interceptors元素interceptors元素用来包装多个河蟹。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT interceptors (interceptor|interceptor-stack)+>  



简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <interceptors>  
  •              <interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>  
  •              <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>  
  • ……  
  • <interceptor-stack name="basicStack">  
  •      <interceptor-ref name="exception"/>  
  •      <interceptor-ref name="servletConfig"/>  
  •      <interceptor-ref name="prepare"/>  
  •      <interceptor-ref name="checkbox"/>  
  •      <interceptor-ref name="multiselect"/>  
  •      <interceptor-ref name="actionMappingParams"/>  
  •      <interceptor-ref name="params">  
  •          <param name="excludeParams">dojo\..*,^struts\..*</param>  
  •      </interceptor-ref>  
  •      <interceptor-ref name="conversionError"/>  
  • </interceptor-stack>  
  • ……  
  • </interceptors>  



A.1.20  param元素param元素用来嵌套在其他元素中,为这些元素设置参数,比如:action、result-type、interceptor等等。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT param (#PCDATA)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <result name="toWelcome" type="dispatcher">  
  •                  <param name="location">/s2impl/welcome.jsp</param>  
  •                  <param name="parse">true</param>  
  • </result>  



A.1.21  result元素result元素用来为action指定结果。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT result (#PCDATA|param)*>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <result name="toWelcome" type="dispatcher">/welcome.jsp</result>  



A.1.22  result-type元素result-type元素用来注册结果类型,也就是具体处理结果的类。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT result-type (param*)>  




                               
登录/注册后可看大图

简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>  



A.1.23  result-types元素result-types元素用来包含一个到多个result-type的定义。这个元素的dtd定义如下:

java代码:


查看 复制到剪贴板 打印

  • <!ELEMENT result-types (result-type+)>  



简单的配置示例:

java代码:


查看 复制到剪贴板 打印

  • <result-types>  
  •    <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>  
  •    <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>  
  •    ......  
  • </result-types>  





私塾在线网站原创《 研磨struts2》系列

原帖地址:http://chenyoulu.diandian.com/post/2012-06-02/40027265185





                               
登录/注册后可看大图
屠版组
我们有神一般的手速
刷帖是我们毁灭世界的利器

签章 = ω =


签名被小宅喵吞掉了~~~~(>_<)~~~~
回复

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2025-5-1 10:03 , Processed in 0.075304 second(s), 12 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表