关于 struts2 中 struts.xml 文件的解析

Posted abelkeith

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 struts2 中 struts.xml 文件的解析相关的知识,希望对你有一定的参考价值。

本文总结自实验楼,实验楼是个好地方

先看个概览

技术分享图片
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7 
 8     <constant name="struts.enable.DynamicMethodInvocation" value="false" />
 9     <constant name="struts.devMode" value="true" />
10 
11     <package name="default" namespace="/" extends="struts-default">
12 
13         <default-action-ref name="index" />
14 
15         <global-results>
16             <result name="error">/WEB-INF/jsp/error.jsp</result>
17         </global-results>
18 
19         <global-exception-mappings>
20             <exception-mapping exception="java.lang.Exception" result="error"/>
21         </global-exception-mappings>
22 
23         <action name="index">
24             <result type="redirectAction">
25                 <param name="actionName">HelloWorld</param>
26                 <param name="namespace">/example</param>
27             </result>
28         </action>
29     </package>
30 
31     <include file="example.xml"/>
32 
33     <!-- Add packages here -->
34 
35 </struts>
View Code

constant

其中包含了一些属性设置,它可以改变 struts 框架的一些行为。struts.enable.DynamicMethodInvocation 设置为 true 时,表示设置动态方法调用为真,而 struts.devMode 表示是否启用开发者模式。

package

在 struts 中,package 用来管理 action、result 、interceptor、interceptor-stack 的配置信息

属性 是否必须 含义
name 包名,唯一标记,其他 package 可以利用 name 来引用
extends 设置继承其它package
namespace package 的命名空间,会改变 url 访问地址
abstract 是否设置为抽象包

 

 

 

 

 

name : 必须唯一,这样其它 package 如果引用本 package 的话,才能找的到。

extends :当本 package 继承其它的 package 的时候,会继承父 package 的所有配置属性(action、result等等)。package中的信息获取是按照按照 struts.xml 文件中的先后顺序进行的,因此父 package 必须在子 package 之前先定义。通常情况下,继承一个"struts-default.xml"的package,这是 struts2 默认的 package。

namespace : namespace 的配置会改变项目的url访问地址,主要是针对比较大型的项目以方便管理 action,因为不同 namespace 中的 action 可以同名,从而解决 action 重名的问题。如果没有指定 namespace,则默认为 ""。

action

属性 是否必须 含义
name action的名称
class action对应的java类
method 类中的具体方法
converter 类型转换器

 

 

 

 

 

class : 就是配置文件中的 action 和 Java 代码中的某个类是对应的。

method : 在该 class 中对应执行 Action 的函数方法,默认是 execute()。

result

属性 是否必须 含义
name Action 对应返回的逻辑响应视图
type 返回结果的类型

 

 

name : 具体来说,就是根据某个返回结果,指定响应逻辑,默认是 success

type : 返回结果的类型,默认为 dispatcher

default-action-ref

当项目找不到对应的 action ,时就会默认执行这个 action

global-results

设置 package 范围内的全局响应结果。在多个 action 都返回同一个逻辑视图(通常为某个jsp页面)的情况下,可以通过该标签来统一配置。

global-exception-mapping

配置发生异常时的视图信息。 exception-mapping 是控制 action 范围内的,而 global-exception-mapp 是控制 package 范围内的。两个都配置时, exception-mapping 的优先级更高。

属性 是否必须 含义
name exception
result 设置异常相应的视图信息
exception 设置异常类型

 

 

 

 

include

主要来引用外部配置文件,直接给出 url

<include file="**/**/***.xml" />  

  

以上是关于关于 struts2 中 struts.xml 文件的解析的主要内容,如果未能解决你的问题,请参考以下文章

关于Struts2中DMI(动态调用)错误问题

Struts2 关于2.5的通配符问题

Struts2框架基本使用

Struts.xml文件详解

基于struts2的文件上传下载

Struts2项目搭建之struts.xml配置