继承方法拦截器的自定义拦截器配置

struts2 拦截器的使用(继承抽象拦截器) NULL 博文链接:https://johnson2132.iteye.com/blog/720398 立即下载

技术要点
本节代码介绍方法拦截器配置并对缺省拦截器栈对整个Web项目的Action影响进行介绍。

继承方法拦截器类的自定义拦截器类编写方式。
 配置文件struts.xml中如何定义方法拦截器和其属性。
 对所有Action配置拦截器和拦截器栈。
演示代码
Java代码
<!-------------------文件名:ExampleInterceptor.java----------------->  
import com.opensymphony.xwork2.ActionInvocation;  
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;  
 
public class ExampleInterceptor extends MethodFilterInterceptor {  
    //重写方法拦截器拦截方法  
    @Override  
    protected String doIntercept(ActionInvocation arg0) throws Exception {  
        System.out.println("start invoking3...");  
        String result = arg0.invoke();  
        System.out.println("end invoking3...");  
        return result;  
    } 

LoginAction中增加了method方法
Java代码
<!------------------------文件名:LoginAction.java------------------->  
public String method()throws Exception {  
        FORWARD = "success";  
        return FORWARD;  
    } 

拦截器映射配置。
Java代码
<!--------------------文件名:struts.xml-------------->  
<struts>  
    <!-- Action所在包定义 -->  
    <package name="C04.3" extends="struts-default">  
    <!-- 拦截器配置定义 -->  
        <interceptors>  
            <interceptor name="example"  
                class="com.example.struts.interceptor.ExampleInterceptor">  
            </interceptor>  
        </interceptors>  
        <!--    
            缺省拦截器栈配置定义  
            <default-interceptor-ref name="example"></default-interceptor-ref>  
        -->  
        <!-- Action名字,类以及导航页面定义 -->  
        <!-- 通过Action类处理才导航的的Action定义 -->  
        <action name="Login"  
            class="com.example.struts.action.LoginAction" method="method">  
            <result name="input">/jsp/login.jsp</result>  
            <result name="success">/jsp/success.jsp</result>  
            <!-- Action方法拦截器配置定义 -->  
            <interceptor-ref name="example">  
                <!-- 被拦截方法配置定义 -->  
                <param name="includeMethods">method</param>  
                <!-- 不被拦截方法配置定义 -->  
                <param name="excludeMethods">method,execute</param>  
            </interceptor-ref>  
        </action>  
    </package>  
</struts> 

“includeMethods”配置后的拦截器执行效果如图4.6所示。

图4.6  执行方法拦截器后效果
“includeMethods”和“excludeMethods”同时配置后的拦截器执行效果如图.7所示。

图4.7  method方法还是被拦截器拦截
代码解释
(1)ExampleInterceptor类中,继承MethodFilterInterceptor抽象类。读者也可以查看struts2的源代码,在MethodFilterInterceptor中也只有一个抽象方法,但该抽象方法名为“doIntercept”。也对这个方法进行重写。重写内容和4.3.1小节类似。
(2)LoginAction.java中又定义了一个名为“method”方法,在struts.xml配置文件中,因为LoginAction中有execute方法,又有method方法,因此在<Action>中,请读者注意struts.xml中黑体部分,该部分代码表示现在LoginAction只执行method方法,而execute方法不被执行。笔者在<Action>中增加了一个“method”属性,该属性中“=”后面的内容是Action中具体方法名,如果不写“method”属性,Action是缺省执行execute方法。如果写了“method”属性,Action就执行“=”后写的具体方法。而不会执行execute方法。“example”拦截器还是如之前在<Action>前定义。在<Action>中配置“example”拦截器,笔者增加了“includeMethods”和“excludeMethods”两个param属性定义。“includeMethods”表示的是被拦截器拦截的方法。方法名写在<param>和</param>之间,如果有多个方法开发人员需要拦截器拦截,则方法名之间以“,”相隔。“excludeMethods”表示的是不被拦截器拦截的方法。如果有多个方法,也是以“,”相隔。
注意:如struts.xml配置文件中代码所示。假设
<param name="excludeMethods">method,execute</param>
这行代码被注释,则运行后在MyEclipse的控制台中看见是如图4.6的运行后效果。这说明method方法被拦截。如果
<param name="includeMethods">method</param>
这行代码被注释,则MyEclipse的控制台中是没有任何拦截器拦截信息显示。说明method没有被拦截器拦截即拦截器没有执行。
但是如struts.xml配置文件中代码显示,上述两行代码都没有被注释,读者有时候会不知道method方法到底是被拦截器拦截还是不被拦截。其实运行后的效果如图4.7所示。这说明method方法在两个属性中都被定义,Struts2认为method方法还是被拦截的。
(3)请读者注意struts.xml配置文件中,<Action>前被注释的<default-interceptor-ref >定义。该标签表示的是所有Action都会执行的拦截器或拦截器栈的定义。之前的代码中对于拦截器的定义是在<Action>前,拦截器的配置都是在<Action>中,比如“example”拦截器只有在LoginAction执行时候才会去拦截。如果是配置<default-interceptor-ref >中,则不管是LoginAction还是其他struts.xml配置文件中定义的Action都会被“example”拦截。在<default-interceptor-ref >中,也可以配置拦截器栈。如4.3.2小节中的“exampleStack”拦截器栈如果在<default-interceptor-ref >中配置,则所有Action执行时候,“exampleStack”拦截器栈都会执行该栈中包含的拦截器。
注意:struts.xml配置文件中要么没有<default-interceptor-ref >定义,如果定义了也只能定义一次。该标签在struts.xml配置文件中只能写在<Action>前,而且只能写一次。不能重复定义它。

PyTorch实战:用FGSM攻击MNIST分类器(附可视化对比) 本文通过PyTorch实战演示了如何使用FGSM对抗攻击方法攻击MNIST手写数字分类器。文章详细解析了FGSM攻击原理,提供了从环境搭建、模型准备到攻击实施、可视化对比的完整代码实战流程,并探讨了对抗样本的生成与模型鲁棒性评估。 阅读详情

相关推荐

uniapp 基于单选框多选框实现上拉触底多选/单选、回显

showPickerCheckbox弹层显示 label和value 类似下拉框的label和value一个意思 键和值。结果:可以传接口(接口只能post请求) 可以搜索 下面是结果图片展示 单选多选都可以。fieldValue回显传的值 传的是字符串 数组的话[1,2]转为1,2格式传入。mode是控制的单选还是多选 true为多选默认值 其余参数 单选多选一样。fieldName字段名 确定后会返回该字段名 根据字段名找对应的传入值。问题:在uniapp上 实现分页多选的操作。下面是组件的完整代码。

2301_76607997的博客 2936

Struts2讲义9

[size=xx-large]继承方法拦截器的自定义拦截器配置[/size] 技术要点 本节代码介绍方法拦截器配置并对缺省拦截器栈对整个Web项目的Action影响进行介绍。  [align=left]继承方法拦截器类的自定义拦截器类编写方式。  配置文件struts.xml中如何定义方法拦截器和其属性。  对所有Action配置拦截器和拦截器栈。[/align]演示代码 [co...

250

量化爬虫实战:手把手教你搞定同花顺问财的hexin-v参数(附JS逆向思路与Cookie Hook技巧)

本文详细解析了如何通过JS逆向技术获取同花顺问财平台的`hexin-v`参数,包括Cookie Hook技巧和完整解决方案架构。从环境搭建到参数定位,再到生成逻辑逆向,手把手教你突破数据获取限制,为量化交易提供可靠数据支持。

weixin_42557803的博客 398

java拦截器继承类_struts2的拦截器(5):继承MethodFilterInterceptor抽象类实现拦截方法的拦截器 | 学步园...

在默认情况下,如果我们为某个Action定义了拦截器,则这个拦截器会拦截该Action内的所有方法。但在某些情况下,我们不想拦截所有的方法,我们只需要拦截某些特定方法,此时就需要使用struts2拦截器的方法过滤特性。为了实现方法过滤的特性,struts2提供了一个MethodFilterInterceptor抽象类,它是AbstractInterceptor的子类,如果用户需要自定义的拦截器支持...

weixin_30750081的博客 715

CMap数据库学习及结果可视化

CMap是一个生物信息学数据库和工具,旨在通过比较基因表达谱来揭示药物、基因和疾病之间的潜在关联。CMap数据库主要用于寻找药物、化合物和生物过程之间的关系,并用于药物重定位(drug repurposing)和疾病机制研究。

zfyyzhys的博客 5599

ESP32 Arduino 学习篇(五)TFT_eSPI库

该库有User_Setup.h和 User_Setup_Select.h两个配置文件,支持 ①自定义参数或 ②使用已有配置 驱动TFT屏幕。优点是: 1. 占用空间非常小 2. 动画清晰,充分利用每个像素点 3. 可以非常灵动. 4. 方便进行微调。首先在Libraries里面搜索安装TFT_eSPI库到你的工程文件里面。初始化屏幕, 如果是ST7735,可以往里面传一个参数, 具体用到时再看。缺点是: 1. 容易闪屏 2. 一般不会太复杂 3.需要大量的计算。特别注意: 字库7是仿7段数码屏的样式。

DOF526570的博客 2万+

Struts2拦截器详解

Struts2拦截器详解 基本概述      拦截器,在 AOP(Aspect-Oriented Programming)中用于在某个方法或宇段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。      在 Webwork 的中文文档的解释为一一拦截器是动态拦截Action调用的对象。它提供了一种机制,可以使开发者能够定义在一个action执行的前后执行的代码,

Switch的博客 1602

揭秘Synopsys EDA中的AI黑科技:DSO.ai如何改变传统芯片设计流程

本文深入探讨了Synopsys EDA中的AI黑科技DSO.ai如何革新传统芯片设计流程。通过数据驱动的方法论、功耗优化革命和时序收敛智能加速,DSO.ai显著提升了设计效率和质量,实现了从经验驱动到AI驱动的范式转变。文章还提供了实战指南,帮助团队跨越AI EDA的实施鸿沟。

weixin_29296241的博客 523

struts2 拦截器的使用(继承方法拦截器)

import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; public class ExampleInterceptor extends MethodFilterInterceptor { //重写方法拦截器拦截...

johnson2132的专栏 266

第一届“龙信杯”电子数据取证竞赛Writeup

第一届“龙信杯”电子数据取证竞赛Writeup

toto的博客 1万+

Win11下Python脚本不执行?5分钟搞定PATH环境变量配置(VSCode终端实测)

本文针对Win11系统下VSCode终端中Python脚本执行无响应的问题,提供了详细的诊断与解决方案。核心在于正确配置PATH环境变量,通过图形化界面调整Python路径优先级,并分享了VSCode终端环境变量的刷新技巧,帮助开发者在5分钟内快速解决环境配置难题。

weixin_28358083的博客 384

Struts2 继承方法拦截器的自定义拦截器配置

MyJavaBlog的专栏 186

备战2025数学建模国赛(算法65):Fisher判别分析

在数学建模竞赛中,我们常常会遇到需要对研究对象进行分类或判断的问题。例如,根据西瓜的各类指标判断其好坏,根据经济数据判断一个国家的发展程度,或根据病人的医学影像特征判断其是否患病。这类“分类判别”问题,是建模竞赛中最常见的题型之一。Fisher判别分析(或称线性判别分析,LDA)作为一种经典的、有监督的降维与分类方法,因其模型简洁、可解释性强、计算高效而备受青睐。

YOLO 421

struts自定义拦截器的三种方式

struts自定义拦截器 有三种方式: 方式一、实现Interceptor 接口 public interface Interceptor extends Serializable{ public void init(); public void destroy(); public String intercep

a1659177869的专栏 2353

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

struts2拦截器的使用及作用

作用 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。 拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方...

huanglitai的博客 966

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Struts2 自定义拦截器(方法拦截器)

struts2系统自带了很多拦截器,有时需要我们自己定义,一般有两种方式: 一、实现Interceptor接口 1 public interface Interceptor extends Serializable{ 2 public void init(); 3 public void destroy(); 4 pu

Golden_lion的博客 4031

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SpringBoot如何自定义拦截器呢?

SpringBoot自定义拦截器的定义方法分享,如下所示

qq_25073223的博客 465

struts自定义拦截器配置

配置自己的拦截器可以先参照下系统的拦截器是怎么配置的,首先打开struts-default.xml搜索下interceptor;系统里的拦截器有很多,拦截器都是放在堆栈里的,系统引用的是默认堆栈,<interceptor-stackname="defaultStack">; struts2.3版本下的默认堆栈里放有19个拦截器。我们随便找一个系统拦截器,找到那个类点进去...

136

SpringMVC中自定义拦截器

SpringMVC 中自定义拦截器

Cbuc丶的博客 984

Struts2教程 - 4.3 在Struts2中配置自定义的拦截器

Struts2 中拦截器配置一般都是在 struts.xml 配置文件中。笔者自己编写三个拦截器类,通过在 struts.xml 配置文件中定义,查看运行效果,介绍自定义拦截器的执行顺序和配置文件中遵行的配置原理。 4.3.1    扩展拦截器接 口的自定义拦截器配置 技术要点 本节代码介绍拦截器基础配置以及设置参数功能...

xpp02的专栏 233

拦截器使用

1、使用注解@Configuration配置拦截器 2、继承WebMvcConfigurerAdapter 3、重写addInterceptors添加需要的拦截地址 首先我们自定义Interceptor(继承HandlerInterceptor)对于里面的类做相应的了解 我们可以针对不同业务功能去选择不同的Handle方法,我针对这个Interceptor写了一个Controller层...

weixin_30390075的博客 79

Spring Boot从入门到放弃-自定义拦截器

摘要: 有些时候我们需要自己配置SpringMVC而不是采用默认配置,比如说增加一个拦截器,这个时候就得通过继承WebMvcConfigurerAdapter然后重写父类中的方法进行扩展。 项目结构: 为了验证是否执行了拦截,所以我们除了默认访问8080还增加了http://localhost:8080/interceptor/show路径,拦截interceptor/**。 ...

qq_37857921的博客 6245

struts2自定义拦截器和方法拦截器

一.自定义拦截器 使用Interceptor接口或继承AbstractInterceptor类 Interceptor接口要实现init,intercept,destroy三个方法 AbstractInterceptor类只需要实现intercept方法,init和destroy方法已经在AbstractInterceptor中实现 1.使用Interceptor接口 package

于先森 788

SpringBoot——拦截器

SpringBoot拦截器有两种方式配置: 实现HandlerInterceptor 继承HandlerInterceptorAdapter 推荐第一种,第二种官方不推荐使用,拦截器最常用的场景是做角色权限资源控制,接口请求日志打印。 一、实现HandlerInterceptor 创建拦截器:HandlerInterceptorCommon import org.springframework.web.servlet.HandlerInterceptor; import org.springframew

weixin_43085797的博客 1661
上一篇: Java检查URL是否有效
下一篇: Struts2 继承方法拦截器的自定义拦截器配置
MyJavaBlog
博客等级 码龄16年 11粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值