Struts2-学习笔记系列(14)-拦截器
6.1对action 的拦截
自定义拦截器:
public class MyInterceptor extends AbstractInterceptor {
private String name;
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
//获取被拦截的action实例
LoginAction action = (LoginAction) actionInvocation.getAction();
System.out.print(name + " 拦截器开始执行:" + new Date());
long start = System.currentTimeMillis();
//执行该拦截器的下一个拦截器
//然后调用action 的执行方法
String result = actionInvocation.invoke();
System.out.print(name + " action执行完成后:" + new Date());
long end = System.currentTimeMillis();
System.out.print("执行完该action的时间为:" + (end - start) + "毫秒");
return result;
}
public void setName(String name) {
this.name = name;
}
}
若是需要在拦截器中实现init和destory方法,则需要实现interceptor
引用拦截器:
<package name="lee" extends="struts-default">
<interceptors>
<interceptor name="zcx" class="interceptors.MyInterceptor">
<param name="name"></param>
</interceptor>
</interceptors>
<action name="login" class="zcx.controller.LoginAction">
<!-- 配置名为input的逻辑视图,当转换失败后转入该逻辑视图 -->
<result name="input">/WEB-INF/content/input.jsp</result>
<result>/WEB-INF/content/welcome.jsp</result>
<result name="error">/WEB-INF/content/welcome.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="zcx">
<param name="name">改名后的拦截器</param>
</interceptor-ref>
</action>
<action name="*">
<result>/WEB-INF/content/{1}.jsp</result>
</action>
</package>
需要注意的是,当在struts文件中显示配置了拦截器,则默认的拦截器不生效。因此,需要在struts中先指定默认拦截器。若是遇到后面有同名拦截器,则会将默认的覆盖.
指定默认拦截器
<interceptor-ref
name="defaultStack"></interceptor-ref>
6.2对方法的拦截
public class MyMethondInterceptor extends MethodFilterInterceptor {
private String name;
@Override
protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
//获取被拦截的action实例
LoginAction action = (LoginAction) actionInvocation.getAction();
System.out.print(name + " 拦截器开始执行:" + new Date());
long start = System.currentTimeMillis();
//执行该拦截器的下一个拦截器
//然后调用action 的执行方法
String result = actionInvocation.invoke();
System.out.print(name + " action执行完成后:" + new Date());
long end = System.currentTimeMillis();
System.out.print("执行完该action的时间为:" + (end - start) + "毫秒");
return result;
}
public void setName(String name) {
this.name = name;
}
}
<package name="lee" extends="struts-default">
<interceptors>
<interceptor name="zcx" class="interceptors.MyMethondInterceptor">
<param name="name">嘻嘻</param>
</interceptor>
</interceptors>
<action name="login" class="zcx.controller.LoginAction">
<!-- 配置名为input的逻辑视图,当转换失败后转入该逻辑视图 -->
<result name="input">/WEB-INF/content/input.jsp</result>
<result>/WEB-INF/content/welcome.jsp</result>
<result name="error">/WEB-INF/content/welcome.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="zcx">
<param name="name">改名后的拦截器</param>
<!--指定execute不需要被拦截-->
<param name="excludeMethods">execute</param>
<param name="includeMethods">execute</param>
</interceptor-ref>
</action>
<action name="*">
<result>/WEB-INF/content/{1}.jsp</result>
</action>
</package>
excludeMethonds:不拦截execute方法,后一个相反
<param name="excludeMethods">execute</param>
<param name="includeMethods">execute</param>
6.3拦截器执行顺序
在action控制方法执行之前,拦截器配置在前面那个先起作用;action控制方法执行之后,配置在后面的拦截器先起作用
6.4覆盖拦截器栈的参数
如果需要在使用拦截器栈时直接覆盖某个拦截器的属性值,则在指定需要被覆盖的属性时,不能只指定属性名,必须加上该属性属于的拦截器名:<拦截器>.<属性名>
Struts2-学习笔记系列(14)-拦截器的更多相关文章
- 【Struts2学习笔记-6--】Struts2之拦截器
简单拦截器的使用 拦截器最基本的使用: 拦截方法的拦截器 拦截器的执行顺序 拦截结果的监听器-相当于 后拦截器 执行顺序: 覆盖拦截器栈里特定拦截器的参数 使用拦截器完成-权限控制 主要完成两个功能: ...
- Struts2学习笔记(十)——自定义拦截器
Struts2拦截器是基于AOP思想实现的,而AOP的实现是基于动态代理.Struts2拦截器会在访问某个Action之前或者之后进行拦截,并且Struts2拦截器是可插拔的:Struts2拦截器栈就 ...
- Struts2学习笔记04 之 拦截器
一.创建拦截器组件 1. 创建一个类,实现Interceptor接口,并实现intercept方法 2.注册拦截器 3.引用拦截器 二.拦截器栈 预置拦截器: 默认引用拦截器 拦截器调用顺序: Fil ...
- SpringBoot学习笔记:自定义拦截器
SpringBoot学习笔记:自定义拦截器 快速开始 拦截器类似于过滤器,但是拦截器提供更精细的的控制能力,它可以在一个请求过程中的两个节点进行拦截: 在请求发送到Controller之前 在响应发送 ...
- [原创]java WEB学习笔记74:Struts2 学习之路--自定义拦截器,struts内建的拦截器
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- struts2框架学习笔记6:拦截器
拦截器是Struts2实现功能的核心部分 拦截器的创建: 第一种: package interceptor; import com.opensymphony.xwork2.ActionInvocati ...
- Struts2学习:interceptor(拦截器)的使用
对于需要登陆验证.权限验证等功能的网站,每一次请求,每一个action都写一段验证的代码,未免显得冗余且不易维护.struts2提供了拦截器interceptor,为这些页面提供一个切面,或者说公共组 ...
- Struts2学习第4天--拦截器
第1章 Struts2_day04笔记 1.1 上次课内容回顾 l OGNL表达式 n OGNL的概述 u OGNL:对象图导航语言,是一门功能强大的表达式语言. n OGN ...
- Struts2学习第四天——拦截器及文件上传
1.概述 Struts2的很多核心功能都是由拦截器完成的. 拦截器很好的实现了AOP的编程思想,在动作的执行之前和结果的返回之后,做拦截处理. 2.struts2的默认拦截器栈 3.自定义拦截器 St ...
随机推荐
- 动手建立jdbc连接
工具:Idea Navicat 环境:jdk 1.8 mysql-5.7.27-winx64 创建一个project 打开navicat开启连接. 在idea中导入数据库. 导入好后可以开始连接了 ...
- 关于LaTex的安装
第一次写博客,有点生疏,但是想把具体安装的流程自我的汇总一下,毕竟我总是忘记,万一下一次要用的时候又要弄很久,就当经验吧. 其实是因为这个新型冠状病毒不能出门,也没开学,想找点事情做一做 这个博客不知 ...
- java web 中base64传输的坑
今天在项目中,前端需要向后端发送一张图片,使用toDataURL方法以base64编码的形式传输,在写好程序后,发现报错为base64不是有效的图片,反复排查后发现接口需要一张格式为png的图片,在前 ...
- java-乘法口诀表。(新手)
//创建的一个包名. package qige; //定义一个类. public class KJ { //公共静态的一个主方法. public static void main(String[] a ...
- LeetCode | 707. 设计链表
设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...
- python之路---装饰器函数
阅读目录 楔子 装饰器的形成过程 开放封闭原则 谈装饰器主要功能和装饰器固定结构 带参数的装饰器 多个装饰器装饰一个函数 返回顶部 楔子 作为一个会写函数的python开发,我们从今天开始要去公司上班 ...
- python环境变量忘记配置
Python安装没有勾选配置环境变量安装 解决方法一: 于是,便用安装包卸载后重新安装. 重新安装勾选 安装成功 方法二: 配置环境变量 A.右键点击“我的电脑”,点击“属性”: B.在弹出的界面中点 ...
- JavaWeb----Cookie&Session
## 会话技术 1.会话:一次会话中包含多次请求和响应. * 第一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止. 2.功能:再一次会话的范围内的多次请求间,共享数据 3. ...
- Codeforces Round #567 (Div. 2) B. Split a Number
Split a Number time limit per test 2 seconds memory limit per test 512 megabytes input standard inpu ...
- 简述UDF/UDAF/UDTF是什么,各自解决问题及应用场景
UDF User-Defined-Function 自定义函数 .一进一出: 背景 系统内置函数无法解决实际的业务问题,需要开发者自己编写函数实现自身的业务实现诉求. 应用场景非常多,面临的业务不同导 ...