Struts2--拦截器浅析
来源:互联网 发布:五轴编程用什么软件 编辑:程序博客网 时间:2024/05/09 12:39
一、拦截器工作原理
拦截器的执行过程是一个递归的过程,(intercept1,intercept2,intercept3,intercept3,intercept2,intercept1)。与在Web中过滤器的工作原理是几乎一样的。
二、自定义拦截器(有两种方式)
1、实现(implements) Interceptor接口,则需要实现(可以空实现)以下三个方法:
void init():初始化拦截器所需资源
void destory():释放在init()中分配的资源
String intercept(ActionInvocation ai) throws Exception 在调用拦截器时真正执行的方法,实现拦截器功能,利用ActionInvocation参数获取Action状态,返回result字符串作为逻辑视图
2、继承AbstractInterceptor类,AbstractInterceptor实现了Intercept接口,对init()、destory()方法做出了空实现,则它的子类就不再实现了,
只需要实现intercept()方法。
在拦截器的方法中,若本拦截器的功能执行完毕,要调用后面的拦截器(若是最后一个拦截器,则调用的是目标执行的action),只需要在方法中写上invocation.invoke();即可
-----------------------------------eg:计算执行Action花费的时间------------------------------------------
public class MyInterceptor extends AbstractInterceptor{
//进入拦截器,会自动调用此方法
public String intercept(ActionInvocation invocation) throws Exception{
//执行Action之前
long start=System.currentTimeMills();
//执行下一个拦截器,如果 已是最后一个拦截器,则执行目标Action
String result= invocation.invoke(); / /result为最终的结果视图
long end = System.currentTimeMillis();
System.out.println("执行Action花费的时间:"+(end - start) +"ms");
return result;
}
}
在struts.xml中配置拦截器
<package name="default" namespace="/" extends="struts-default">
<!--声明拦截器-->
<interceptors>
<interceptor name="myInterceptor" class="com.yc.interceptor.MyInterceptor"></interceptor>
<!--自定义拦截器栈-->
<interceptor-stack name="mystack">
<interceptor-ref name="defaultStack></interceptor-ref>
<interceptor-ref name="myInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<action name="timer" class="com.yc.TimerAction">
<result>/success.jsp</result>
<!--引用拦截器-->
<interceptor-ref name="myInterceptor"></interceptor-ref>
<!--引用自定义的拦截器栈-->
<interceptor-ref name="myStack"></interceptor-ref>
</action>
二、Struts2内建拦截器
1、params拦截器:负责将请求参数设置为Action属性
2、staticParams拦截器:可以将struts.xml配置文件中action元素的子元素param参数设置为Action属性
3、servletConfig拦截器:将源于Servlet API的各种对象注入到Action,必须实现对应接口
4、fileUpload拦截器:对文件上传提供支持,将文件和元数据设置对应的Action属性(内部有调用Commons-FileUpload组件,对这个组件做了封装)
5、exception拦截器:捕获异常,并将异常映射到用户自定义的错误页面
6、validation拦截器:调用验证框架进行数据验证
可去struts-core包中的struts-default.xml中查看所有配置的栈,
只要在定义包的过程中,继承struts-default包,那么defaultStack(struts-default.xml中配置的一个拦截器栈)将是默认为拦截器
当为包中的某个action显式指定了某个拦截器,则默认拦截器不会起作用,要用默认的拦截器,还需要显式的引用一次
拦截器栈中的各个拦截器的顺序很重要。
- Struts2--拦截器浅析
- Struts2拦截器浅析
- Struts2之拦截器浅析
- Struts2拦截器浅析(一)
- Struts2拦截器浅析(二)
- 【Struts2】Struts2中拦截器
- struts2拦截器
- Struts2拦截器
- struts2.0拦截器
- struts2.0 拦截器
- struts2拦截器学习
- struts2 拦截器
- Struts2拦截器(Interceptor)
- struts2.0拦截器
- 用上struts2拦截器
- struts2拦截器简介
- Struts2:拦截器概述
- Struts2拦截器(Interceptor)
- HDU 1171 母函数
- Hadoop学习笔记(五)日志系统
- Centos 7 系统安装完毕修改网卡名为eth0
- pat1004Counting Leaves (30)
- Tomcat启动startup.bat闪退和JRE_HOME错误
- Struts2--拦截器浅析
- MySQL中文乱码问题
- Maven构建web项目在Eclipse中部署的几种方法
- 特殊的完全平方数
- 5-v4l2——input and output输入输出
- POJ2752 Seek the Name, Seek the Fame(KMP)
- 运行环境大小端测试
- 归并排序求逆序对的个数
- tomcat启动startup.bat一闪而过 显示错误日志