收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 


struts2的笔记
状态: 离线
人气:610051
访问用户量:854
笔记经验:
总积分:567
级别:普通会员
搜索本笔记
ta的交流分类
ta的交流主题贴(5)
ta的所有交流贴(5)
ta的全部笔记
全部笔记(89)
未分类笔记(3)
研磨struts2(86)
存档
2012-04(85)
2012-03(4)

2012-04-27 09:56:53
《研磨struts2》附录A Struts2的配置 之 A.1 struts.xml的配置
浏览(6192)|评论(0)   交流分类:Java|笔记分类: 研磨struts2

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://sishuok.com/forum/blogPost/list/0/4191.html

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

相关笔记推荐
精品视频课程推荐

Java数据结构和算法精讲版
本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。 从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。

深入浅出学Shrio视频教程
内容概述:Shiro是目前最热门、最易用、功能超强大的Java权限管理框架,强烈推荐,每个项目都必备的权限管理技术!通过本课程,你将从零开始直到彻底掌握Shiro的相关开发知识,达到可以进行实际项目开发的能力。包括:权限管理基础、Shiro入门、配置、身份认证、授权、Realms、Session管理、和Spring的集成、Web、Cache等众多开发细节技术 技术要点:源码级分析Shiro的授权过程、自定义开发Realm、多个Realms的开发配置、自定义开发AuthenticationStrategy、自定义开发自定义SessionDAO、和Struts2+Spring3的集成(包括修正struts2的bug)、Shiro和SpringMVC+Spring3的集成、包装使用其他的Cache框架、缓存数据同步更新的解决方案等等实际开发中常用的内容

ssh+jbpm项目(某集团OA)视频教程
达到能综合使用Struts2+Spring3+Hibernate3+Jbpm4来进行实际项目开发的能力。 包括:ssh和jbpm的整合;数据字典;通用DAO(Spring+Hibernate+泛型+反射+SpEL+模板方法模式);自动生成UUID的加强版;分层开发、SSH联合的基本开发;翻页的taglib;示范真实值和表现值,数据参照的实现;文件上传下载;主子表操;登录验证码;登录控制的拦截器

Ajax+JSON基础实战视频教程
数据校验、Javascript模拟多线程、下拉列表联动、操作XML、AJAX结合JSON的操作、Json-lib的使用

深入浅出学Spring Web MVC视频教程
系统、完整的学习Spring Web MVC开发的知识。包括:Spring Web MVC入门;理解DispatcherServlet;注解式控制器开发详解;数据类型转换;数据格式化;数据验证; 拦截器;对Ajax的支持;文件上传下载;表单标签等内容;最后以一个综合的CRUD带翻页的应用示例来综合所学的知识

浏览(6192)|评论(0)   交流分类:Java|笔记分类: 研磨struts2

评论(0)
请登录后评论 登录

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网