Struts2 拦截器
来源:互联网 发布:2016淘宝运营推广方案 编辑:程序博客网 时间:2024/06/16 12:49
拦截器:它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行
前阻止其执行,strut2核心功能都是通过拦截器来实现的。
拦截器栈:由多个拦截器组成。
作用:对于action的一些公共处理代码可以放到拦截器中来实现。如权限控制等。
一、Struts2拦截器定义
Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.
拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。
Struts 2自带拦截器
params拦截器
负责将请求参数设置为Action属性
servletConfig拦截器
将源于Servlet API的各种对象注入到Action
fileUpload拦截器
对文件上传提供支持
exception拦截器
捕获异常,并且将异常映射到用户自定义的错误页面
validation拦截器
调用验证框架进行数据验证
workflow拦截器
调用Action类的validate(),执行数据验证
二、自定义一个拦截器的步骤:
1 .自定义一个实现Interceptor接口(或者继承自AbstractInterceptor)的类。
2 .在struts.xml中注册上一步中定义的拦截器。
3 .在需要使用的Action中引用上述定义的拦截器,为了方便也可将拦截器定义为默认
的拦截器,这样在不加特殊声明的情况下所有的Action都被这个拦截器拦截
注意: 如果某个action配置里面写入了interceptor的配置,那么该action就不会再有struts框架提供的默认拦截器。
编写一个计时器拦截器
第一步:创建类MyTimeInterceptor
public class MyTimeInterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation arg0) throws Exception {
//预处理工作
System.out.println(“thi is i1 start”);
long startTime=System.currentTimeMillis();
//执行后续拦截器或Action
String result=arg0.invoke();
//后续处理工作
long execTime=System.currentTimeMillis()-startTime;
System.out.println(“The interval time is “+execTime+” ms”);
return result;
}
}
第二步:在struts.xml文件中定义拦截器
注:拦截器的定义需要放在package标签的最上边
第三步:在需要添加拦截器的action中配置
/regsuccess.jsp
/reg.jsp
/reg.jsp
注意:如果使用上述拦截器,那么reg中之前struts提供的数据校验,数据自动封装等功能将无法使用,不过我们可以加再次加入默认的拦截器
struts-default.xml中定义一个defaultStack拦截器栈,并将其指定为默认拦截器
只要在定义包的过程中继承struts-default包,那么defaultStack将是默认的拦截器
/regsuccess.jsp
/reg.jsp
/reg.jsp
修改为上边代码后strtus默认提供的功能就又可以使用了
- 【Struts2】Struts2中拦截器
- struts2拦截器
- Struts2拦截器
- struts2.0拦截器
- struts2.0 拦截器
- struts2拦截器学习
- struts2 拦截器
- Struts2拦截器(Interceptor)
- struts2.0拦截器
- 用上struts2拦截器
- struts2拦截器简介
- Struts2:拦截器概述
- Struts2拦截器(Interceptor)
- struts2 拦截器
- 关于struts2拦截器
- Struts2的拦截器
- struts2拦截器
- Struts2拦截器总结
- 2.3 URL 快捷方式
- 实验四
- 深度学习辅助工具tensorboard可视化实现训练过程的动态监视
- 递归实现十进制到2(其他)进制的转换
- 架构设计(3)--架构模式
- Struts2 拦截器
- MFC VS2013 在静态库中使用MFC 和在共享DLL中使用MFC 切换
- java上传文件实例
- ASSERT(FromHandlePermanent(hWndNew) == NULL)
- 从控制台读取多字符输入
- 高性能Vs性价比,总有一款适合你,阿里云NAS家族深度解析
- 常用单词
- tortoisesvn安装
- 非root查看手机数据库和SharedPreferences的方法