`

《研磨struts2》附录A Struts2的配置 之 A.1 struts.xml的配置

 
阅读更多

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代码:
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  

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

 

java代码:
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.1.dtd">  

struts.xml文件的根元素是<struts>,它的dtd定义是:

 

java代码:
  1. <!ELEMENT struts ((package|include|bean|constant)*, unknown-handler-stack?)>  

unknown-handler-stack:这个是2.1的dtd加入的,用来配置当找不到某些资源的时候进行处理的处理器的栈。

A.1.3  package元素

用来逻辑上组织Struts的配置,这个元素的dtd定义如下:

 

java代码:
  1. <!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, default-class-ref?, global-results?, global-exception-mappings?, action*)>  

简单的配置示例:

 

java代码:
  1. <package name="hello" namespace="/javass" extends="struts-default">  

A.1.4  action元素

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

 

java代码:
  1. <!ELEMENT action (param|result|interceptor-ref|exception-mapping)*>  

简单的配置示例:

 

java代码:
  1. <action name="helloworldAction" class="cn.javass.hello.struts2impl.action.HelloWorldAction" method="create">  

A.1.5  include元素

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

 

java代码:
  1. <!ELEMENT include (#PCDATA)>  

简单的配置示例:

 

java代码:
  1. <struts>  
  2.     <include file="struts-user.xml"/>  
  3.     <include file="struts-dep.xml"/>  
  4. ……  
  5. </struts>  

A.1.6  bean元素

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

 

java代码:
  1. <!ELEMENT bean (#PCDATA)>  

简单的配置示例:

 

java代码:
  1. <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代码:
  1. <!ELEMENT constant (#PCDATA)>  

简单的配置示例:

 

java代码:
  1. <bean name="um" type=”UserEbi” class="cn.javass.vo.UserModel">  

A.1.8  unknown-handler-stack元素

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

 

java代码:
  1. <!ELEMENT unknown-handler-stack (unknown-handler-ref*)>  

简单的配置示例:

 

java代码:
  1. <bean type="com.opensymphony.xwork2.UnknownHandler" name="handler1" class="com.opensymphony.xwork2.config.providers.SomeUnknownHandler"/>  
  2. <bean type="com.opensymphony.xwork2.UnknownHandler" name="handler2" class="com.opensymphony.xwork2.config.providers.SomeUnknownHandler"/>  
  3. <unknown-handler-stack>  
  4.    <unknown-handler-ref name="handler1" />  
  5.    <unknown-handler-ref name="handler2" />  
  6. </unknown-handler-stack>  

A.1.9  unknown-handler-ref元素

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

 

java代码:
  1. <!ELEMENT unknown-handler-ref (#PCDATA)>  

简单的配置示例:

 

java代码:
  1. <bean type="com.opensymphony.xwork2.UnknownHandler" name="handler1" class="com.opensymphony.xwork2.config.providers.SomeUnknownHandler"/>  
  2. <unknown-handler-stack>  
  3.    <unknown-handler-ref name="handler1" />  
  4.  </unknown-handler-stack>  

A.1.10  default-action-ref元素

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

 

java代码:
  1. <!ELEMENT default-action-ref (#PCDATA)>  

简单的配置示例:

 

java代码:
  1. <default-action-ref name=”helloAction”/>  

A.1.11  default-interceptor-ref元素

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

 

java代码:
  1. <!ELEMENT default-interceptor-ref (#PCDATA)>  

简单的配置示例:

 

java代码:
  1. <default-interceptor-ref name="defaultStack"/>  

A.1.12  default-class-ref元素

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

 

java代码:
  1. <!ELEMENT default-class-ref (#PCDATA)>  

简单的配置示例:

 

java代码:
  1. <default-class-ref class="cn.javass.action.DefaultAction"/>  

A.1.13  exception-mapping元素

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

 

java代码:
  1. <!ELEMENT exception-mapping (#PCDATA|param)*>  

简单的配置示例:

 

java代码:
  1. <action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction">  
  2.             <exception-mapping result="math-exception" exception="java.lang.ArithmeticException"/>  
  3.             <exception-mapping result="math-exception" exception="java.lang.Exception"/>  
  4.             <result name="math-exception">/error.jsp</result>  
  5.             <result>/s2impl/welcome.jsp</result>  
  6.         </action>  

A.1.14  global-exception-mapping元素

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

 

java代码:
  1. <!ELEMENT global-exception-mappings (exception-mapping+)>  

A.1.15  global-results元素

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

 

java代码:
  1. <!ELEMENT global-results (result+)>  

A.1.16  interceptor元素

interceptor元素用来配置拦截器。这个元素的dtd定义如下:

 

java代码:
  1. <!ELEMENT interceptor (param*)>  

简单的配置示例:

 

java代码:
  1. <package name="helloworld"  extends="struts-default">  
  2.     <interceptors>  
  3.             <interceptor name=“myInterceptor” class="cn.javass.action.action.MyInterceptor"/>  
  4.         </interceptors>  
  5. ……  
  6. </package>  

A.1.17  interceptor-ref元素

interceptor-ref元素用来应用拦截器或拦截器栈。这个元素的dtd定义如下:

 

java代码:
  1. <!ELEMENT interceptor-ref (param*)>  

它有如下的属性:

简单的配置示例:

 

java代码:
  1. <action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction">  
  2.             <result name="toWelcome">/s2impl/welcome.jsp</result>  
  3.             <interceptor-ref name=“myInterceptor”/>  
  4.             <interceptor-ref name="defaultStack"/>  
  5. </action>  

       要注意:在Action里面配置了拦截器的引用,会覆盖掉默认的配置,因此通常需要再手动的引用defaultStack。

A.1.18  interceptor-stack元素

interceptor-stack元素用来配置拦截器栈。这个元素的dtd定义如下:

 

java代码:
  1. <!ELEMENT interceptor-stack (interceptor-ref*)>  

它有如下的属性:

简单的配置示例:

 

java代码:
  1. <interceptor-stack name="defaultStack">  
  2.                 <interceptor-ref name="exception"/>  
  3.                 <interceptor-ref name="alias"/>  
  4. ……  
  5. </interceptor-stack>  

A.1.19  interceptors元素

interceptors元素用来包装多个拦截器。这个元素的dtd定义如下:

 

java代码:
  1. <!ELEMENT interceptors (interceptor|interceptor-stack)+>  

简单的配置示例:

 

java代码:
  1. <interceptors>  
  2.             <interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>  
  3.             <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>  
  4. ……  
  5. <interceptor-stack name="basicStack">  
  6.     <interceptor-ref name="exception"/>  
  7.     <interceptor-ref name="servletConfig"/>  
  8.     <interceptor-ref name="prepare"/>  
  9.     <interceptor-ref name="checkbox"/>  
  10.     <interceptor-ref name="multiselect"/>  
  11.     <interceptor-ref name="actionMappingParams"/>  
  12.     <interceptor-ref name="params">  
  13.         <param name="excludeParams">dojo\..*,^struts\..*</param>  
  14.     </interceptor-ref>  
  15.     <interceptor-ref name="conversionError"/>  
  16. </interceptor-stack>  
  17. ……  
  18. </interceptors>  

A.1.20  param元素

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

 

java代码:
  1. <!ELEMENT param (#PCDATA)>  

简单的配置示例:

 

java代码:
  1. <result name="toWelcome" type="dispatcher">  
  2.                 <param name="location">/s2impl/welcome.jsp</param>  
  3.                 <param name="parse">true</param>  
  4. </result>  

A.1.21  result元素

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

 

java代码:
  1. <!ELEMENT result (#PCDATA|param)*>  

简单的配置示例:

 

java代码:
  1. <result name="toWelcome" type="dispatcher">/welcome.jsp</result>  

A.1.22  result-type元素

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

 

java代码:
  1. <!ELEMENT result-type (param*)>  

简单的配置示例:

 

java代码:
  1. <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>  

A.1.23  result-types元素

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

 

java代码:
  1. <!ELEMENT result-types (result-type+)>  

简单的配置示例:

 

java代码:
  1. <result-types>  
  2.   <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>  
  3.   <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>  
  4.   ......  
  5. </result-types>  

 

 

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

转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4191.html

欢迎访问http://sishuok.com获取更多内容

3
4
分享到:
评论

相关推荐

    研磨Struts2配书视频对应的演示源代码

    3. **配置文件**:在Struts2应用中,struts.xml是主要的配置文件,它定义了Action的映射、结果类型、拦截器栈等。通过阅读源代码中的配置文件,你可以了解如何配置Struts2的行为。 4. **结果类型(Result Types)**...

    研磨Struts2

    - **项目搭建**:介绍如何创建一个基本的Struts2项目,包括引入必要的jar包、配置web.xml和struts.xml等。 - **Action类**:Action是Struts2的核心组件之一,负责处理用户的请求。本节将详细讲解Action类的设计原则...

    研磨struts2

    1. **Action**:Struts2 中的核心组件之一,负责处理用户的请求并返回一个结果。Action 类通常继承自 `ActionSupport` 类或者实现 `Action` 接口。 - **实现方式**:可以通过实现 `Action` 接口、继承 `...

    《研磨Struts 2》PDF版本下载.txt

    2. **灵活的配置方式**:除了XML配置文件之外,Struts 2还支持注解配置,使得代码更加简洁。 3. **丰富的拦截器机制**:Struts 2内置了多种拦截器,如文件上传、会话管理等,开发者也可以自定义拦截器以满足特定需求...

    研磨struts2 高清版

    由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。

    研磨struts2_系列文章.pdf

    Struts2是一个基于Java的开源Web应用框架,它继承了Struts1的优点并进行了大量改进,包括更强大的MVC支持、更好的灵活性、更丰富的插件生态等。Struts2通过拦截器(Interceptor)机制实现了对HTTP请求的处理,简化了...

    研磨Struts2配书视频对应的PPT

    《研磨Struts2》这本书是专门针对Struts2框架的学习指南,通过深入浅出的方式讲解了Struts2的核心概念和技术。其配套的PPT和视频旨在帮助读者更直观地理解书中的理论知识,并将其付诸实践。 在研读《研磨Struts2》...

    研磨Struts2 高清完整版.part2

    研磨Struts2 高清完整版,请和第一部分一起下载啊

    研磨struts

    《研磨Struts2》这本书主要介绍了Struts2的基础知识、实践应用以及其核心概念。 1. **MVC模式**:MVC是一种设计模式,用于分离应用程序的业务逻辑、数据和用户界面。在Struts2中,Action类代表Controller,负责处理...

    研磨Struts2_12859679_高清完整版.part2.rar

    研磨Struts2_12859679_高清完整版

    研磨Struts2-高清-完整目录-2011年10月

    研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人

    研磨设计模式.part2.rar

    研磨设计模式.part2.rar 研磨设计模式.part2.rar 研磨设计模式.part2.rar 研磨设计模式.part2.rar

    研磨设计模式.part1.rar

    研磨设计模式.part1.rar 研磨设计模式.part1.rar 研磨设计模式.part1.rar 研磨设计模式.part1.rar

    研磨设计模式.part2

    研磨设计模式.part2 一定要下载5部分

    研磨设计模式.part4.rar

    研磨设计模式.part4.rar研磨设计模式.part4.rar研磨设计模式.part4.rar研磨设计模式.part4.rar研磨设计模式.part4.rar研磨设计模式.part4.rar

    研磨设计模式(完整带书签).part2.pdf

    本电子书一共两个压缩文档,本文件为part2. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、...附录A常见面向对象设计原则 附录BUML简介 参考文献

Global site tag (gtag.js) - Google Analytics