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 ...
随机推荐
- node.js中http.respone.end方法概述
方法说明: 结束响应,告诉客户端所有消息已经发送.当所有要返回的内容发送完毕时,该函数必须被调用一次. 如果不调用该函数,客户端将永远处于等待状态. 语法: response.end([data], ...
- Java 并发原子操作类(转)
转自:https://www.jianshu.com/p/3632a0f9f083 线程不安全的高并发实现 客户端模拟执行 5000 个任务,线程数量是 200,每个线程执行一次,就将 count 计 ...
- IPv4地址表示法详解
在TCP/IP协议中,IP地址是一个最基本的概念,本文就来参考<计算机网络>谢希仁 这本书,总结一下IPv4地址表示法的发展阶段,做个读书笔记. IP地址的编址方法共经过了三个历史阶段: ...
- img标签src="[object Moudle]"问题解决办法
在写组件的时候,按照如下方式来写,加载不出图片: 打开开发者工具,发现img标签对应位置显示如下: 我之前已经下载过 url-loader 解决方法如下: 加入 esModules:false 即可
- java-FileUtils(读取、判断、获取)-(新手)
实例: lx1: import org.apache.commons.io.*; import java.io.File; import java.io.IOException; public cla ...
- python基于scrapy框架的反爬虫机制破解之User-Agent伪装
user agent是指用户代理,简称 UA. 作用:使服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等. 网站常常通过判断 UA 来给不同 ...
- 全国职业技能大赛信息安全管理与评估-MySQL爆破脚本
DEMO: #coding=utf-8 import MySQLdb class MSSQL: def __init__(self,host,user,pwd): self.host = host s ...
- Partition Array into Disjoint Intervals
2020-02-10 22:16:50 问题描述: 问题求解: 解法一:MultiSet O(nlog) 看了下数据规模,第一个想到的是multiset,肯定可以ac的,就直接敲了出来. public ...
- Linux - 文件的三种时间之atime、ctime、mtime的区别和简单用法
在Linux中,文件或者目录中有三个时间属性 atime ctime mtime 简名 全名 中文 作用 atime Access Time 访问时间 最后一次访问文件(读取或执行)的时间 ctime ...
- adb的连接设备故障分析(三)
一,如果使用adb devices进行检测,发现没有任何设备信息,我们就需要检查是否有手机/模拟器连接上 二,如果是手机进行连接,windows右下角有出来如下提示的话,需要检查你的手机驱动是否有安装 ...