Struts2 拦截器具体配置过程
拦截器差点儿遍布每个程序中,所以贴出拦截器配置的具体过程,希望可以帮到大家。
Struts2 拦截器具体配置过程
<interceptors>
<!-- 先定义拦截器 -->
<interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">
<!-- 指定系统初始化给拦截器的參数 -->
<param name="hello">张钊钊</param>
</interceptor>
<!-- 加到自己设置的拦截器栈里边去 -->
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor">
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 改变系统默认的拦截器,改成自己的默认拦截器,而且一个系统仅仅能有一个默认的拦截器,这样这个拦截器栈会默认应用到全部的Action上去 -->
<default-interceptor-ref name="myStack">
</default-interceptor-ref>
也能够在使用拦截器的时候给它设置參数: 就是在一个action 的reslut以下配置上例如以下:
<action name="register" class="com.zzz.struts2.action.RegisterAction">
<result name="success">/success.jsp</result>
<!-- result 它当中另一个信息转发类型 type=""记住,假设不转向JSP,转向图表。能够改
type=""值 -->
<result name="input">/register.jsp</result>
<interceptor-ref name="myInterceptor">
<param name="hello">welcome</param>
</interceptor-ref>
<interceptor-ref name="myStack"></interceptor-ref>
</action>
2.拦截器,拦截器栈和默认的拦截器之间的关系
1:拦截器和拦截器栈是一个级别的,也就是说一个拦截器栈中包含很多拦截器, 一个拦截器栈中还能够包含很多拦截器栈,配置例如以下方式:
<interceptors>
<!-- 先定义拦截器 -->
<interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">
<!-- 指定系统初始化给拦截器的參数 -->
<param name="hello">张钊钊</param>
</interceptor>
<!-- 加到自己设置的拦截器栈里边去 -->
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor">
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
拦截器的使用:1.先定义;2.在引用使用;
<interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">
<interceptor-ref name="myInterceptor">
</interceptor-ref>
2:struts2中有一个系统默认的拦截器栈是 defaultStack,假设你手动引用自己的拦截器,系统默认的拦截器栈将不起作用;这样必需手动引入系统的拦截器栈
<interceptor-ref name="defaultStack"> </interceptor-ref>
假设想改变系统默认的拦截器栈,能够这样配置:
<default-interceptor-ref name="myStack"> </default-interceptor-ref>
当中myStack是自定义的拦截器栈名字; 假设拦截器栈中有多个拦截器,在运行action之前的顺序跟配置拦截器的顺序一致,而在action之后运行的顺序是相反的;
3:抽象的拦截器类AbstractInterceptor
1:Interceptor这个超级拦截器接口,有三方法须要实现,可是假设不想使用init(); 和destroy()
方法,能够去继承这个抽象拦截器类; 它的使用跟上边的没有什么差别;
4:方法过滤拦截器MethodFilterInterceptor
1:上边的拦截器都要是针对整个action的,假设针对某个方法进行拦截能够去继承这个类;
它的使用跟上边的用法差点儿相同,仅仅是须要要配置它对那个方法进行拦截,方法过滤拦截器
好不要配置到自己设置默认的拦截器栈里边,自己手动配置.
<interceptor-ref name="myInterceptor3">
<param name="includeMethods">execute</param>
<param name="excludeMethods">execute</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
当中includeMethods ,excludeMethods是固定写法: includeMethods 包括拦截那些方法,多个方法须要用”,”隔开; excludeMehtods是排除拦截的那些方法;
5:鉴听器PreResultListener接口
1:它的鉴听点在拦截器运行完某个action方法后,在渲染视图之前做一些事情;让某个类去实现这个接口; 然后向须要它的拦截器中注冊进去例如以下代码:
publicclass MyInterceptor3 extends MethodFilterInterceptor {
privatestaticfinallongserialVersionUID = 3756655410194005443L;
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
//
把鉴听器注冊到拦截中去;
invocation.addPreResultListener(new MyListener());
System.out.println("my Interceptor3");
String result=arg0.invoke();
System.out.println("my interceptor3 finshed!");
return result;
}
}
Struts2 拦截器具体配置过程的更多相关文章
- 转载 - Struts2 拦截器详细配置过程
出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Inter ...
- Struts2拦截器的执行过程浅析
在学习Struts2的过程中对拦截器和动作类的执行过程一度陷入误区,特别读了一下Struts2的源码,将自己的收获分享给正在困惑的童鞋... 开始先上图: 从Struts2的图可以看出当浏览器发出请求 ...
- Struts2拦截器的配置
struts2拦截器interceptor的三种配置方法方法1. 普通配置法 <struts> <package name="struts2" extends=& ...
- Struts2拦截器详解
一.Struts2拦截器原理: Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的 拦截器对象,然后串成一个列 ...
- struts2 拦截器配置
CheckLoginInterceptor.java---拦截器具体实现类: package com.sunhoo.hcpms.struts2.action.interceptors; import ...
- Struts2 拦截器配置以及实现
@(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...
- struts2拦截器interceptor的三种配置方法
1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...
- Struts2拦截器配置
1. 理解拦截器 1.1. 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AO ...
- Struts2拦截器配置实例
拦截器介绍 拦截器 的使用 ,源自Spring AOP(面向切面编程)思想 拦截器 采用 责任链 模式 * 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链. * 责任链每一个节 ...
随机推荐
- <转载>DIV+CSS position定位方法总结
如何学习DIV+CSS布局之position属性 如果用position来布局页面,父级元素的position属性必须为relative,而定位于父级内部某个位置的元素,最好用 absolute. 任 ...
- W英语: 紧急, 非紧急
take your time 慢慢来 It is not urgent. Take it easy please. 不急,慢慢来.
- 性能测试之LoardRunner 手动关联一
概述: 1.什么是关联,关联的分类? 2.实例讲解 1.关联 为什么要关联?关联是应用LoadRunner进行性能测试的一项重要技能,那为什么我们要进行关联呢?当利用VuGen录制脚本时,它会拦截Cl ...
- Mac上利用Eclipse编译Cocos2d-x
目前使用较多的Cocos2d-x开发平台是XCode,应该是由于大部分Cocos2d-x开发者都是iOS开发出生.但是当我们将XCode开发的Cocos2d-x工程发布Android版本时,每次都需要 ...
- 定义自己的仪表板DashBoard - -kankanstyle
既然做了奶站软件,需要使用的仪表板,显示质量数据 public class MDashboard extends ImageView { private Bitmap mPointerBitmap; ...
- Servlet的学习(三)
本篇接上一篇<Servlet的学习(二)> ,主要讲诉如何使用MyEclipse来开发Servlet,和导入Servlet所需要的源代码. 现在我们来创建一个web应用,就叫[myserv ...
- 开源力量公开课第三十期- 跟我一起玩转OpenStack
开源力量公开课第三十期- 跟我一起玩转OpenStack 开课时间:2013年9月10日 18:30 - 21:30 形式:现场(北京3W咖啡) + 线上直播, 免费报名:http://www.o ...
- JavaScript移除数组元素
//数组移除长度方法 var array=[]; array[0]="张三"; array[1]="李四"; array[2]="王五"; ...
- android.graphics.Color
该类定义的都是些static常量和函数,这些函数都是为了创建和转化成int型的color.颜色是由int型的数表示,由4个字节组成,分别是A R G B,这个int型的值是确定的,透明度的值只能存 ...
- Android颜色转换工具类ColorUtil
项目中需要根据ScrollView的滚动距离来动态设置Topbar的背景透明度,网上有类似的开源库FadingActionBar,使用的是ActionBar做的.而我的项目中并没有使用ActionBa ...