众所周知,struts.xml是整个Struts2框架的核心!下面提供一个struts.xml文件示范(无任何实际意义,struts版本2.3),方便以后使用!
废话不多说,直接上代码,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!--指定了Struts2.3配置文件的DTD(DTD文件位置:WEB-INF\lib\struts2-core-2.3.31.jar\struts-2.3.dtd)信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!--struts是Struts2配置文件的根元素 -->
<!-- 属性解释:order指定加载struts2配置文件的优先顺序 -->
<struts order="">
<!--content元素可出现0或者无数次 用于设置一些struts2的常量-->
<constant name="" value=""/>
<!--bean元素可出现0或者无数次 struts2框架内置bean位置(WEB-INF\lib\struts2-core-2.3.31.jar\struts-default.xml)
bean作用:--重新定义struts2框架的核心组件,很少使用!
1.创建Bean的实例(实现了接口的类的实例),将实例作为Struts框架的核心组件使用
2.Bean包含的静态方法需要注入一个值(允许不出案件某个类的实例 通常设置static="true")
-->
<!-- 属性解释:
type:可选属性,属性值通常是一个struts2接口
name:可选属性,指定了bean实例的名字,若type值相同,name名不能相同
scope:可选属性,bean实例的作用域 属性值:default singleton request session 或 thread
static:指定bean是否使用静态方法注入 指定了type属性 该属性不能指定为true
optional:可选属性 指定bean是否是一个可选bean-->
<bean type="" name="" class="" scope="" optional="" static=""></bean>
<!-- include元素可出现0或者无数次
作用:包含其他配置文件
属性解释:
file:必填属性 制定了被包含配置文件(是标准的struts2配置文件)的文件名
-->
<include file="" />
<!-- package元素是Struts配置问价的核心,可出现0或者无数次
作用:管理action和拦截器(拦截器 拦截器引用)
每个包是多个action 多个拦截器 多个拦截器引用组成-->
<!-- 属性解释:
name:必填属性 指定该包的名字 此名字是该包被其他包引用的key
extends:可选属性 指定该包继承其他包 (继承内容action定义和拦截器定义)
父包应该在子包前面定义(因为struts2配置文件从上到下处理,可通过order来指定加载顺序)
namespace:可选属性 该属性定义该包的命名空间
关于命名空间:考虑到一个web应用中可能会出现相同的action,所以struts2以命名空间
来管理action 同一个命名空间不能有同名action 不同命名空间可以有相同action
若没有指定namespace则使用默认命名空间""(默认命名空间可处理任何模块下的action请求);
若指定以后namespace后 action处理类的URL为命名空间+action名
关于根命名空间(namespace="/")
假设请求为/login.action
系统先去根命名空间("/")中找login的action,若找到该action处理用户请求,若找不到就进入
默认命名空间("")中找login的action,若找到该action处理用户请求,若找不到,提示出错!
abstract:可选属性 指定该包是不是抽象包(抽象包不能有action) -->
<package name="包名" extends="" namespace="" abstract="" externalReferenceResolver="" strict-method-invocation="">
<!-- result-types元素可有可无 最多出现一次 -->
<result-types>
<!-- result-type元素必须出现 可出现无数次 -->
<result-type name="" class="" default="false|true">
<!-- param元素可出现0或者无数次 -->
<param name="参数名">参数值</param>
</result-type>
</result-types>
<!-- interceptors元素可有可无,最多出现一次 包含拦截器和拦截器栈-->
<interceptors>
<!-- interveptors元素的interceptor元素和interceptor-stack元素至少出现其中之一 也可以同时出现 -->
<!-- interceptor(拦截器)元素可以出现0或者无数次
拦截器执行时间:Action处理之前,或者Action处理之后
拦截器作用:
权限控制(检查用户是否登录)
跟踪日志(记录每个浏览者所请求的每个action)
性能优化(记录每个action的开始处理时间和结束处理时间)-->
<!-- 属性解释:
name:拦截器的名字
class:拦截器的处理类 -->
<interceptor name="" class="">
<!-- param可以出现0或者无数次 -->
<param name="参数名">参数值</param>
</interceptor>
<!-- interceptor-stack(拦截器栈(多个拦截器形成一个拦截器栈,是一个大的拦截器,定义拦截器栈之前,必须先定义拦截器))可以出现0或者无数次 -->
<!-- 属性解释:
name:拦截器栈的名字 -->
<interceptor-stack name="">
<!-- interceptor-ref元素必须出现 可出现无数次
作用:定义拦截器栈包含哪个拦截器-->
<!-- 属性解释:
name:已经定义好的拦截器的名字 -->
<interceptor-ref name="">
<!-- param可以出现0或者无数次 -->
<param name="参数名">参数值</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- default-class-ref元素可以出现0或者无数次
作用:改变action的默认处理类(action的默认处理类是ActionSupport)-->
<!-- 属性解释:
class:action的处理类 -->
<default-class-ref class="">
<!-- param元素可以出现0次或者无数次 -->
<param name="参数名">参数值</param>
</default-class-ref>
<!-- default-interceptor-ref元素可以出现0或者无数次 -->
<default-interceptor-ref name="">
<!-- param元素可以出现0次或者无数次 -->
<param name="参数名">参数值</param>
</default-interceptor-ref>
<!-- default-action-ref元素可以出现0或者无数次
作用:当用户请求的URL在容器中找不到对应的action时,系统使用默认的action来处理用户请求 需要和action元素结合使用-->
<!-- 属性解释
name:事先定义好的action的名字 -->
<default-action-ref name="">
<!-- param元素可以出现0次或者无数次 -->
<param name="参数名">参数值</param>
</default-action-ref>
<!-- global-results(全局结果)元素可以出现0或者无数次
作用:对所有的action都有效
若全局结果里包含了和局部结果同名的结果,局部会覆盖全局(以局部结果为准)-->
<global-results>
<!-- result元素必须出现 可以出现无数次 -->
<result name="" type="">
<!-- param元素可以出现0次或者多次 -->
<param name="参数名">参数值</param>
</result>
</global-results>
<!-- global-exception-mappings元素可以出现0或者无数次 -->
<global-exception-mappings>
<!-- exception-mapping(全局异常映射,对所有action都有效,当和局部异常一样时,以局部异常为准)元素必须出现 可以出现无数次
作用:struts2框架的异常捕捉机制-->
<!--属性解释:
exception:此属性指定该异常映射所设置的异常类型
result:指定action出现该异常时,系统转入reslut属性所指向的结果 -->
<exception-mapping result="" exception="">
<!-- param元素可以出现0次或者多次 -->
<param name="参数名">参数值</param>
</exception-mapping>
</global-exception-mappings>
<!-- struts2的核心,配置action的作用就是让容器知道该Action存在 -->
<!-- 属性解释:
name:action的名字
命名规范: 通常由字母和数字组成
若name=""时,可处理列出web应用根路径下的所有文件请求
class:可选属性 指定了该action的实现类(若没有指定,使用系统默认的ActionSupport)
method:可以让action类调用指定方法,而不是execute方法来处理用户请求 默认值execute-->
<action name="" class="" converter="" method="">
<!-- param元素可以出现0次或者多次 -->
<param name="参数名">参数值</param>
<!-- result(局部结果)元素可以出现0次或者多次
作用:配置逻辑视图(普通的字符串)和物理视图(JSP Velocity FreeMarker等)之间的关系 -->
<!-- 属性解释:
name:可选属性 默认值是success(不写name属性,默认为success)
type:可选属性 默认值是dispatcher(不写type属性,默认为dispatcher)
type的值(struts2內建支持的结果类型):
chain:action链式处理的结果类型
不想转发到视图资源,希望另一个action进行下一步处理,将请求转发到另一个action
dispatcher:与jsp整合的结果类型
将请求转发(Forward)到指定的视图资源
freemarker:与FreeMarker整合的结果类型
httpheader:用于控制特殊HTTP行为的结果类型
redirect:直接跳转到其他URL的结果类型
将请求Redirect(重定向)到指定视图资源,丢失所有的请求参数,请求属性,action的处理结果
redirectAction:直接跳转到其他action的结果类型
直接将请求重定向到另外一个action,丢失所有的请求参数,请求属性,action的处理结果
stream:向浏览器返回一个InputStream的结果类型(用于文件下载)
velocity:与Velocity整合的结果
xslt:用于与XML/XSLT整合的结果类型
plainText:用于显示某个页面的原始代码的结果类型(不常用)-->
<result name="" type="">
<!-- param元素可以出现0次或者多次 -->
<!-- 属性解释:
name:参数的值
location:指定了该逻辑视图对应的实际的视图资源
parse:指定是否允许在实际视图名字中使用OGNL表达式 默认为可以使用(true)
charSet(type="plainText"时使用):指定字符集,使用特定的字符集来处理页面
actionName(type="redirectAction"时使用):指定重定向的actionName
nameSpace(type="redirectAction"时使用):指定重定向的Action所在的命名空间
-->
<param name="参数名">参数值</param>
</result>
<!-- interceptor-ref元素可以出现0次或者多次
作用:使用拦截器或者拦截器栈-->
<!-- 属性解释:
name:已经定义好的拦截器栈或者拦截器的名字 -->
<interceptor-ref name="" >
<!-- param元素可以出现0次或者多次 -->
<param name="参数名">参数值</param>
</interceptor-ref>
<!-- exception-mapping(局部异常映射)元素可以出现0次或者多次
作用:struts2的异常机制-->
<!--属性解释:
exception:此属性指定该异常映射所设置的异常类型
result:指定action出现该异常时,系统转入reslut属性所指向的结果 -->
<exception-mapping result="" exception="" name="">
<!-- param元素可以出现0次或者多次 -->
<param name=""></param>
</exception-mapping>
<!-- allowed-methods元素可以出现0次或者多次 -->
<allowed-methods></allowed-methods>
</action>
</package>
<!-- unknown-handler-stack可以出现0或者无数次
作用:用于配置Struts2的未知处理器(从Struts2.1开始)
未知处理器的起作用的时刻 :用户请求未知action 指定action的未知方法 action处理结束返回未知result时-->
<unknown-handler-stack>
<!-- unknown-handler-ref可以出现0或者无数次 -->
<!-- 属性解释:
name:bean的name(这个Bean定义了一个UnknowHandler) -->
<unknown-handler-ref name="" ></unknown-handler-ref>
</unknown-handler-stack>
</struts>
不足之处,望指点!