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

技术要点
本节代码介绍方法拦截器配置并对缺省拦截器栈对整个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>前,而且只能写一次。不能重复定义它。

【OpenClaw从入门到精通】第34篇:医疗AI的“Agent OS”时代:基于WiseClaw构建医院专属智能体平台(2026实测版) 2026年医疗AI迈入实战落地新阶段,全球首个医疗OpenClaw平台WiseClaw正式发布,香港中文大学(深圳)医院完成业内首个私有化部署。本文基于真实医疗场景需求与公开技术资料,系统拆解医疗智能体平台的建设逻辑:从医疗Agent OS的五大核心特性切入,详解门诊病历质控、用药审查、医院运行管理三大临床场景的智能体搭建流程,提供完整的私有化部署代码、安全配置方案与实操演示。文章兼顾新手入门与进阶需求,严格遵循医疗合规要求,强调“只读不写+人工复核”原则,所有方案均经过虚拟实测验证。 阅读详情

相关推荐

架构决策之消息中间件MQ系列六-Pulsar

一、架构

恰恰虎的博客 7252

Struts2讲义9

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

250

【MATLAB+VScode】VScode调试MATLAB代码的终极指南

本文详细介绍了在VScode中调试MATLAB代码的完整方案。通过配置MATLAB Engine for Python作为桥梁,实现在VScode中设置断点、单步执行、查看变量等交互式调试功能,有效结合了VScode的现代化编辑体验与MATLAB的强大计算内核,显著提升开发效率。

weixin_29161719的博客 412

Struts2拦截器详解

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

Switch的博客 1602

手把手教你用Simulink搭建PMSM FOC控制模型(附完整仿真文件下载)

本文手把手教你使用Simulink搭建完整的永磁同步电机(PMSM)磁场定向控制(FOC)仿真模型。内容涵盖从电机与逆变器建模、核心的坐标变换(Clark/Park变换)实现、电流环与速度环PID整定,到SVPWM调制与系统集成调试的全过程,并提供关键参数设置与实用调试技巧,帮助工程师快速掌握FOC的工程实现。

silver的专栏 861

深度学习-176-知识图谱技术之langchain与neo4j的嵌入向量Neo4jVector

使用Neo4jVector将输入的文档向量化,并创建向量索引,然后进行语义检索。

qq_20466211的博客 440

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

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

weixin_30750081的博客 715

政务帮办新范式:基于检索增强与多智能体协同的智能系统实践

本文提出了一种多智能体协同的智能政务系统架构,突破传统方案在状态管理、职责过载和感知闭环方面的局限。系统由中央规划智能体、对话引导智能体、参数提取智能体和执行状态分析智能体组成,通过职责分离与显式状态管理实现高效协同。核心创新在于中央决策引擎的确定性逻辑,采用基于规则的状态机设计,确保系统可靠可控。该架构支持自然语言交互、参数自动提取、业务系统操作和视觉闭环验证,能够真正实现"帮办"功能,显著提升政务服务的智能化水平。

468

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

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

johnson2132的专栏 266

基于Keil软件实现OLED显示(江协科技HAL库)

没有HAL库的OLED驱动文件,可以看过来

2401_82728381的博客 1452

27、自闭症儿童治疗与玩具设计研究

本研究探讨了自闭症儿童的治疗方法与玩具设计之间的关联,分析了游戏疗法、音乐疗法和职业疗法等在治疗中的应用,并介绍了多种针对自闭症儿童的治疗玩具案例。通过用户研究和多学科合作,提出了以Pro-Ability为核心的设计理念,开发了结合音乐疗法和精细运动训练的智能玩具套件。研究总结了当前成果与局限性,并展望了未来发展方向,旨在为自闭症儿童提供更有效的康复支持。

keras9composer的博客 210

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

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

Golden_lion的博客 4031

学Simulink——基于软开关与高频变换的整流器系统场景实例:移相全桥ZVS整流器在轻载条件下的效率优化

本文以Simulink为平台,详细介绍了移相全桥ZVS整流器在轻载条件下的建模与优化方法。通过六个步骤系统讲解了从项目创建到仿真运行的全过程,重点分析了移相全桥拓扑结构、ZVS检测逻辑设计及轻载特性。结果显示,传统移相全桥在轻载时ZVS失效导致效率下降(<88%)。针对此问题,提出了动态频率调整、不对称半桥模式等优化策略。该案例为理解软开关技术、提升电源效率提供了实用建模方法和优化思路。

xiaoheshang_123的博客 116

struts自定义拦截器配置

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

136

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

xpp02的专栏 233

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

struts2使用AbstractInterceptor实现拦截器

2.使用abstractinterceptor抽象类来实现自定义拦截器 完成用户是否登陆判断 1.写个类继承AbstractInterceptor public class Myintercetor extends AbstractInterceptor { } 2.重写interceptor方法 //下列事例是做用户名是否登陆的验证 public String interce

开源大使 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

在struts2中配置自定义拦截器放行多个方法

在struts2中配置自定义拦截器放行多个方法 源码: 自定义的拦截器类: //自定义拦截器类:LoginInterceptor ; package com.java.action.interceptor; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext;

GET知识不迷路,点赞评论加关注! 3122

Struts2的拦截器

关于自定义拦截器的建立

ccb1372098的博客 778

struts2拦截器的使用及作用

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

huanglitai的博客 966

Struts2 拦截器技术笔记

java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式。 在strust2中自定义拦截器可以 1、实现接口Interceptor (implements Interceptor); 2、继承抽象类AbstractI...

152

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

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

于先森 788

struts 修改拦截器修改返回值_Struts2自定义拦截器

自定义拦截器1). 具体步骤I. 定义一个拦截器的类> 可以实现 Interceptor 接口> 继承 AbstractInterceptor 抽象类II然后在拦截器类的interceptor()方法中定义这个拦截器的功能III. 在 struts.xml 文件配置.1注册拦截器2使用拦截器:/success.jsp/token-error.jspIII. 注意: 在自定义的拦截器中可...

weixin_42465051的博客 258

Struts2使用MethodFilterInterceptor来实现方法拦截器

如果要对action类的指定方法进行拦截,拦截器的类需要继承MethodFilterInterceptor 1.继承MethodFilterInterceptor方法重写doInterceptor方法 //实现doIntercept//这样子还是不能去拦截指定方法 public class Myintercetor extends MethodFilterInterceptor

开源大使 4392
上一篇: 继承方法拦截器的自定义拦截器配置
下一篇: URI、URL、URN
MyJavaBlog
博客等级 码龄16年 11粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值