Struts2学习——(十一)Struts2拦截器
来源:互联网 发布:人脸三维重建软件 编辑:程序博客网 时间:2024/06/10 20:31
Struts2拦截器和servlet过滤器很相似。在执行Action的execute方法之前,Struts2会首先执行在struts.xml中引用的拦截器。在执行完所有引用的拦截器的intercept方法之后,会执行Action的execute方法。
一般来说,struts2自带的拦截器足够完成我们日常的工作,一般来说不需要创建自己的拦截器。
首先举一个创建自身拦截器的例子:
①写拦截器,继承AbstractInterceptor类或者继承Interceptor接口:
package cn.wqy.interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;public class MyFirstInterceptor implements Interceptor {/** * */private static final long serialVersionUID = 1L;@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void init() {// TODO Auto-generated method stub}@Overridepublic String intercept(ActionInvocation invocation) throws Exception {// TODO Auto-generated method stublong start = System.currentTimeMillis();String s = arg0.invoke();long end = System.currentTimeMillis();System.out.println("Time :" + (end - start));return s;}}invoke的返回值通知了struts2下一步应该执行什么。
②配置struts.xml:
<package name="struts_demo" namespace="/demo" extends="struts-default"><interceptors><interceptor name="timeInterceptor" class="cn.wqy.interceptor.MyFirstInterceptor"></interceptor></interceptors><action name="login" class="cn.wqy.LoginAction"><result name="success">/loginsuc.jsp</result><result name="error">/loginfal.jsp</result><interceptor-ref name="timeInterceptor"></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref><!-- <result name="invalid.token">/index.jsp</result> <interceptor-ref name="token"></interceptor-ref> --></action></package>
<interceptor>标签定义了拦截器,<interceptor-ref>定义了拦截器的引用。需要注意的是,在定义了自己的拦截器之后,通常需要加上defaultStack中
默认拦截器的引用。拦截器一般都是不断累加,如果不加上默认拦截器的话会被省略掉,而产生很多别的问题。在没有定义自定义拦截器时,系统会自
动使用defaultStack里面定义好的拦截器,而定义了自定义拦截器而不加上defaultStack的话会有很多不便。
在每个拦截器中,都会执行invocation.invoke()方法,会自动转向执行下一个interceptor的intercept方法,当没有后面的拦截器时,会自动转向执行
action,随后在逆向执行完原先的拦截器中invoke方法之后的函数内容。
Struts2中内建的拦截器在帮助文档中都有介绍,需要时去读帮助文档即可。
0 0
- Struts2学习——(十一)Struts2拦截器
- Struts2学习(十一)【拦截器】
- Struts2学习笔记(十一)——自定义拦截器
- Struts2—拦截器
- struts2学习笔记(8)——拦截器原理
- struts2学习笔记(9)——自定义拦截器
- Struts2学习笔记(四)——拦截器
- struts2学习(13)——拦截器的配置
- Struts2学习(九)—拦截器之登录权限
- struts2拦截器学习
- Struts2拦截器学习
- Struts2拦截器学习
- Struts2拦截器学习
- 学习 -- Struts2拦截器
- Struts2拦截器学习
- Struts2 拦截器学习
- struts2 18拦截器详解(十一) --- FileUploadInterceptor
- Struts2——拦截器(Interceptor)
- error while loading shared libraries: libreadline.so.5: cannot open shared object file
- centos 6.5 x64编译有python的vim7.4 - yantze
- iOS QQ分享(最新2015.12.25)
- Java我的高效编程之常用函数
- Python的GIL是什么鬼,多线程性能究竟如何
- Struts2学习——(十一)Struts2拦截器
- NDK-JNI
- android开发中的优化及细节
- 2015 ACM-ICPC 上海 EC-Final 总结
- vs解决方案目录结构设置
- 微信开发学习总结-5
- input checkbox checked的数量 选中
- UI之导航栏属性、按钮及样式、属性传值
- jsp指令总结