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

Struts2配置解析
本文详细介绍了Struts2框架的配置文件结构与关键元素的作用,包括常量设置、包管理、Action配置及结果映射等内容。

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

先看个概览

 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
namespacepackage 的命名空间,会改变 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

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

 

 

 

 

 

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

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

result

属性是否必须含义
nameAction 对应返回的逻辑响应视图
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 的优先级更高。

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

 

 

 

include

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

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

  

转载于:https://www.cnblogs.com/abelkeith/p/9118558.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值