在struts中如果使用到其他拦截器,一定要放在核心拦截器之前,否则不起作用。
在struts中可以使用servlet。
<?xml
version="1.0"encoding="UTF-8"
?>
<!DOCTYPE
struts PUBLIC
"-//Apache Software Foundation//DTD StrutsConfiguration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- struts在运行时候会加载这个总配置文件:
src/struts.xml -->
<!--
一个Struts文件中可以包含多个struts文件的导入
-->
<!-- Struts2
把各种 Action
分门别类地组织成不同的包.
可以把包想象为一个模块.
一个典型的 struts.xml
文件可以有一个或多个包
package
元素通常要对 struts-default.xml
文件里定义的 struts-default
包进行扩展.
这么做了以后,
包里的所有动作就可以使用在 struts-default.xml
文件里的结果类型和拦截器了.
package中extends必须写struts-default
每个 package
元素都必须有一个 name
属性
name:包名
配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,
如果其他包要继承该包,必须通过该属性进行引用.
包的namespace属性用于定义该包的命名空间,命名空间作用为访问该包下的action路径的一部分.即名称空间作为访问路径的一部分。
namespace
属性是可选的, 如果它没有给出,
则以 “/”
为默认值.
若
namespace
有一个非默认值, 则要想调用这个包里的Action,
就必须把这个属性所定义的命名空间添加到有关的 URI
字符串里
package还有一个abstract=”true”属性,指定此包为抽象包,和抽象类的概念差不多,
说明此包只能被其他包继承,它里面不允许包含action元素的定义,否则运行时期报错.
访问路径=http://localhost:8080/项目名称/名称空间/action的名字
-->
<package
name="aaa"
extends="struts-default">
<!-- action
元素嵌套在 package
元素内部,
它表示一个 Struts请求.
每个 action
都必须有一个 name
属性,
该属性和用户请求 servletPath
之间存在着一一对应关系
一个Action可以被多次映射(只要action配置中的name不同)
name:action名称
class: 对应的类的路径
action 元素的 class
属性是可选的.
如果没有配置 class
属性,
Struts将把 com.opensymphony.xwork2.ActionSupport
作为其默认值.
如果配置了 class
属性,
还可以使用 method
属性配置该类的一个动作方法. method
属性的默认值为 execute
converter:指定Action使用的类型转换器
-->
<action
name="login"class="cn.test.action.HelloAction"
method="execute">
<!--
result
元素:<action>的一个子元素,
它告诉 struts
在完成动作后把控制权转交到哪里.
标签中指定页面跳转的位置
result
元素的 name 属性建立 <result>
和 Action
方法返回值之间的映射关系。
name
属性是action的返回值,默认值为 "success"
result
元素(的name
属性)对应着 Action
方法的返回值.
因为动作方法在不同情况下可能返回不同的值,
所以同一个 action
元素可能会有多个 result
元素。
result
中name 对应Action返回逻辑视图名称,默认为success
result
元素的 type 属性负责指定结果类型. type
属性的值必须是在包含当前包或者是当前包的父包里注册过的结果类型.
type
属性的默认值为 dispatcher
-->
<result
name="success"></result>
</action>
</package>
<!--
在总配置文件中引入其他配置文件 -->
<include
file="cn/test/action/hello.xml"></include>
<!-- struts中的常量 -->
<!-- 指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法和freemarker、velocity的输出-->
<constant
name="struts.i18n.encoding"value="UTF-8"/>
<!--
自定义后缀修改常量 -->
<constant
name="struts.action.extension"value="do"/>
<!--
设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭
-->
<constant
name="struts.serve.static.browserCache"value="false"/>
<!--
当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开
-->
<constant
name="struts.configuration.xml.reload"value="true"/>
<!--
开发模式下使用,这样可以打印出更详细的错误信息
-->
<constant
name="struts.devMode"value="true"
/>
<!--
默认的视图主题
-->
<constant
name="struts.ui.theme"value="simple"
/>
<!--
与spring集成时,指定由spring负责action对象的创建 -->
<constant
name="struts.objectFactory"value="spring"
/>
<!--
该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性
为 false -->
<constant
name="struts.enable.DynamicMethodInvocation"value="false"/>
<!--
上传文件的大小限制 -->
<constant
name="struts.multipart.maxSize"value=“155555"/>
<!--
定义拦截器
name:拦截器名称
class:拦截器类路径
<interceptorname="timer" class="cn.test.timer"></interceptor>
定义默认的拦截器每个Action都会自动引用
如果Action中引用了其它的拦截器默认的拦截器将无效
<default-interceptor-refname="mystack"></default-interceptor-ref>
也可以配置全局result
<global-results>
<resultname="input">/error.jsp</result>
</global-results>
-->
</struts>