Struts2拦截器篇(一)
来源:互联网 发布:极光丛林果汁 淘宝 编辑:程序博客网 时间:2024/05/01 23:31
拦截器是struts2框架的重要组成部分,在struts2中的大量工作都是由拦截器(interceptor)来完成
的。如params拦截器可以将HTTP请求中的参数信息解析出来封装在Action的属性中:fileUpload拦截器则负责分析HTTP请求中的文件块信息,并封装在Action相应的属性中……在struts2中像这样的内建拦截器还有很多,下面是struts-default.xml中定义的一些拦截器信息:在我的博客(Struts2拦截器)我们以此为例来说明如何定义和使用拦截器;拦截器中的方法过滤 ;在拦截器中配置结果监听器;struts2中常用内建监听器的使用,最后我们以权限验证拦截器为例说明如何自定义拦截器。来和我一起快乐的学习吧!
struts-default.xml中监听器的配置
<interceptors> <interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/> <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/> <interceptor name="chain" class="com.opensymphony.xwork2.interceptor.ChainingInterceptor"/> <interceptor name="conversionError" class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/> <interceptor name="cookie" class="org.apache.struts2.interceptor.CookieInterceptor"/> <interceptor name="cookieProvider" class="org.apache.struts2.interceptor.CookieProviderInterceptor"/> <interceptor name="clearSession" class="org.apache.struts2.interceptor.ClearSessionInterceptor" /> <interceptor name="createSession" class="org.apache.struts2.interceptor.CreateSessionInterceptor" /> <interceptor name="debugging" class="org.apache.struts2.interceptor.debugging.DebuggingInterceptor" /> <interceptor name="execAndWait" class="org.apache.struts2.interceptor.ExecuteAndWaitInterceptor"/> <interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/> <interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/> <interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor"/> …… <!-- Basic stack --> <interceptor-stack name="basicStack"> <interceptor-ref name="exception"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="prepare"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="datetime"/> <interceptor-ref name="multiselect"/> <interceptor-ref name="actionMappingParams"/> <interceptor-ref name="params"/> <interceptor-ref name="conversionError"/> <interceptor-ref name="deprecation"/> </interceptor-stack> <!-- Sample file upload stack文件上传拦截器栈 --> <interceptor-stack name="fileUploadStack"> <interceptor-ref name="fileUpload"/> <interceptor-ref name="basicStack"/><!--引用basicStack拦截器栈--> </interceptor-stack> <!-- defaultStack默认拦截器栈 --> <interceptor-stack name="defaultStack"> <interceptor-ref name="exception"/> <interceptor-ref name="alias"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="i18n"/> <interceptor-ref name="prepare"/> <interceptor-ref name="chain"/> <interceptor-ref name="scopedModelDriven"/> <interceptor-ref name="modelDriven"/> <interceptor-ref name="fileUpload"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="datetime"/> <interceptor-ref name="multiselect"/> <interceptor-ref name="staticParams"/> <interceptor-ref name="actionMappingParams"/> <interceptor-ref name="params"/> <interceptor-ref name="conversionError"/> <interceptor-ref name="validation"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="debugging"/> <interceptor-ref name="deprecation"/> </interceptor-stack> <!-- defaultStack被struts2设置为了默认拦截器栈,默认情况下所有HTTP请求都会通过这些拦截器 --> <default-interceptor-ref name="defaultStack"/>
从struts-default.xml的拦截器配置中我们知道了struts2的一些内建拦截器以及这些拦截器(拦截器栈)是如何定义的,那么在struts.xml中应该如何使用这些拦截器呢?很简单
<struts> <package name="user" extends="struts-default"> <!--拦截器的定义--> <interceptors> <interceptor name="executeTime" class="interceptor.ExecuteTime2Interceptor"> <param name="name">执行时间</param> </interceptor> <interceptor-stack name="customStack"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="executeTime" /> </interceptor-stack> </interceptors> <!--默认拦截器的设置,每个包只能有一个默认拦截器--> <default-interceptor-ref name="默认调用的拦截器,如权限验证拦截器等"/> <action name="login" class="action.LoginAction"> <result name="success"> /success.jsp </result> <!--拦截器栈的使用--> <interceptor-ref name="customStack"> <!--注意指定拦截器参数值的方法--> <param name="executeTime.name">自定义的计算excute执行时间的拦截器</param> </interceptor-ref> </action> </package></struts>
注意:当在包中显示使用了其他拦截器(栈)时,默认的拦截器(栈)就不起作用了,因此struts-default.xml中一些拦截器都被封装成拦截器栈,引用了basicStack或defaultStack,因此显示调用时应该调用这些封装好的拦截器栈,例如
<interceptor-stack name="fileUploadStack"> <interceptor-ref name="fileUpload"/> <interceptor-ref name="basicStack"/><!--引用basicStack拦截器栈--></interceptor-stack>
如果显示调用时直接调用fileUpload而不是fileUploadStack的话,就会导致basicStack中大多数Action都需要的拦截器都无法使用,直接导致HTTP请求无法解析。
0 0
- Struts2拦截器篇(一)
- struts2-拦截器(一)
- Struts2 拦截器(一)
- Struts2拦截器(一)
- struts2拦截器(一)
- Struts2学习:拦截器篇(一)
- 框架(一)struts2--拦截器
- Struts2拦截器浅析(一)
- Struts2 拦截器详解(一)
- Struts2 拦截器详解(一)
- Struts2 拦截器详解(一)
- Struts2—拦截器(一)
- struts2拦截器篇(二)自定义拦截器
- struts2中拦截器的使用(一)
- Struts2核心(一):执行线路与拦截器
- Struts2 源码学习(一):模拟拦截器
- 008-Struts2框架拦截器一
- Struts2第(三)篇《struts2拦截器源码分析》
- 关于ios注册推送
- 第10章 JSP、JavaBean和Servlet的配合使用
- druid简单教程
- 长连接
- Spring整合JMS——基于ActiveMQ实现
- Struts2拦截器篇(一)
- 【LeetCode】20_Valid Parentheses
- 数组笔记
- hiho一下 第五十九周 Performance Log
- 在windows添加视图
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- poj1599
- [LeetCode] Group Anagrams
- ubuntu 取色软件 Gpick