Struts.xml作为struts2的一个非常重要的一个配置文件,掌握他对于灵活使用struts来说有很大好处。
这篇文章我准备将struts2中对于该文件的配置详详细细地剖析一遍。
一、从最简单开始
<?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> </struts>
这是最简单的struts配置文件,该文件内容应该是任何一个struts2的配置文件里面都应该包含的内容,因此放在这里,在任何需要的时候,直接复制粘贴到自己的工程里面就可以了。
struts.xml的配置文件应该被放置在src目录底下,这样就可以被web工程找到,该文件才能生效。
二、struts标签中可以直接包含的内容
在struts.xml定义文件中有如下定义
<!ELEMENT struts (package|include|bean|constant)*>
说明了该标签中可以包含package、include、bean以及contant标签
2.1、package标签
package是非常重要的标签,这个标签在任何一个sturts配置文件中似乎都是必不可少的,因为他是包含着action的标签,他管理着对应的一组Action、Result、Interceptor。Package有些像对象,可以继承其他的Package,也可以被其他package继承,甚至可以定义抽象的Package。
先请看Package的一个定义
<package name="default" namespace="/" extends="struts-default"></package>
Package标签里面有以下几个属性,各个属性的说明先参考以下再来细细说明:
属性 | 是否必须 | 说明 |
name | 是 | Package的表示,为了让其他的package引用,一个唯一性id类似的变量 |
extends | 否 | 表示继承哪个package,该处如果有值的话就是另外一个Package的name |
namespace | 否 | namespace是表示一个访问路径相关的配置![]() |
abstract | 否 | 表示该Package是抽象的。可以不包含Action的配置![]() |
2.1.1、name除了在package里面被引用的时候被用到以外,没有更多的需要了解的地方了。
2.2.2、由于struts.xml文件时自上而下解析的,因此在这里配置extends的时候需要弄清楚,被extends的package是否已经被定义了。
2.2.3、namespace的作用是将Action分成逻辑上不同的模块,这样同java代码里面包的作用就一致起来了,同样的一个index.action如果namespage不同,就是访问的不同的Action,如果用户在页面的地址栏里面敲入了/blog/index.action和/pic/index.action一看就是在访问博客的首页和相册的首页。
2.2、include标签
在web应用中,struts的配置可能是很多很多的,“一不小心”在一项工程里面可能就会有上千行,因此如果可以将这些配置按照功能对其分类,写到不同的文件中就可以使得每一个配置文件都变得相对简单得多,容易维护。include标签的作用也在于此。下面是一个例子:
<struts>
<include file="security.xml"/>
<include file="mainpages.xml"/>
</struts>
2.3、bean标签
该标签先暂缓介绍,如果有人急需的话可以留言,我尽快补充起来
2.4、contant标签
我们先来看下它所存在的形式
<constant name="struts.devMode" value="true" />
contant标签是对于struts中的一些常量进行配置,以name和value的形式来配置,这些常量都可以在struts的另外一个配置文件中(struts.properties)找到。
最经常见到的配置项目以及他们的含义:
<!--允许动态方法调用 称为DMI 这种模式下可以用actionname!methodname.action的方式来访问--> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- 这种模式就是可以动态加载,动态修改struts的配置项 --> <constant name="struts.devMode" value="true" />
当然可以添加更多的配置项,更详细的配置用法说明请参见《struts2的struts.properties配置文件详解》
(写这篇文档是在我个人使用和对struts2的认知以及查看了一些相关文档后做的,里面一定有一些不尽完美的地方,但是我会不断地修正,希望如果大家看了对我这里有什么意见请给我提醒,谢谢)