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(面向切面编程)思想 拦截器 采用 责任链 模式 * 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链. * 责任链每一个节 ...
随机推荐
- Winform - 全屏显示
//全屏显示 this.WindowState = FormWindowState.Maximized;
- 14.18.1 The InnoDB Recovery Process InnoDB 恢复进程:
14.18.1 The InnoDB Recovery Process InnoDB 恢复进程: InnoDB crash recovery 有几个步骤组成: 1.应用redo log,Redo lo ...
- MySQL filesort优化案例一则
今天遇到一个filesort优化的案例,感觉不错,分享出来. MySQL中filesort是什么意思?官方手册定义: MySQL must do an extra pass to find out h ...
- Android用surface直接显示yuv数据(二)
上一篇文章主要是參照AwesomePlayer直接用SoftwareRenderer类来显示yuv,为了能用到这个类,不惜依赖了libstagefright.libstagefright_color_ ...
- 如何在一个jpg图片上面叠加文字
1.将jpg转为bmp格式 2.在bmp文件上写上所需文字 3.将写入文字的bmp文件重新转为jpg格式 http://dev.csdn.net/develop/article/22/22948.sh ...
- Shell 文件包含
和其他语言一样,Shell 也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件. Shell 文件包含的语法格式如下: . filename # 注意点号(.)和文件名中间有一空 ...
- 记录路径dp-4713-Permutation
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4713 题目大意: 题意同HDU 3092这不过这题要输出路径. 解题思路: 思路同HDU 3092. ...
- Xamarin.forms 自定义tabview控件
一 问题描述 forms本身ui代码是翻译为平台原生代码,forms按照xaml技术进行对android和ios两种ui模型进行公共抽象出了几种page和view,在空杯博客已经有详细介绍 http: ...
- 在VC下显示JPEG、GIF格式图像的一种简便方法
在VC下显示JPEG.GIF格式图像的一种简便方法 一. 引言 JPEG图像压缩标准随然是一种有损图像压缩标准,但由于人眼视觉的不敏感,经压缩后的画质基本没有发生变化,很快便以较高的压缩率得到了广泛 ...
- Find命令, find用法,
Find命令 用法示例:查找HOME目录下大于1M小于10M的文件$ find ~ -size +1M -size -10M 15个小时这一时刻修改的文件:find . -mmin 900 | xar ...