使用拦截器的方法过滤特性

如果我们希望对Action中的部分方法实现拦截,Struts2为了实现方法过滤的功能,定义了一个名为MethodFilterInterceptor的类,该类继承了AbstractInterceptor。若想自定义的拦截器能够实现方法过滤的功能可以继承MethodFilterInterceptor类,该类重写了父类AbstractInterceptor的intercept方法,又提供了一个doIntercept的抽象方法,在此方法中用户可以自定义拦截器。

MethodFilterInterceptor提供了两个非常重要的方法,用于方法的过滤:

setIncludeMethods(String includeMethods)

setExcludeMethods(String excludeMethods),

setExcludeMethods的主要的作用是排除要过滤的方法,例如setExcludeMethods("execute"),这样Action的execute方法将不会被拦截,

setIncludeMethods方法正好相反,setIncludeMethods("execute"),这样execute方法将被拦截。

以硬编码的形式设置要过滤的方法的灵活性不够,因袭可以通过struts.xml配置文件来设置方法是否过滤是不错的选择:

<interceptor name="FilterhelloInterceptor">

<param name="excludeMethods">execute</param>

</interceptor>

struts.xml是通过属性来设置的,name="excludeMethods"表示要添加排除过滤的方法,当前配置的拦截过滤的方法时execute方法。若要排除多个方法,则使用都好分开

<interceptor name="FilterhelloInterceptor">

<param name="excludeMethods">execute,aa,bb,cc,dd</param>

</interceptor>

以上的配置过滤掉了execute,aa,bb,cc,dd方法,这些方法不会被拦截器所拦截。

也可以使用includeMethods参数指定要拦截的方法名。

<interceptor name="FilterhelloInterceptor">

<param name="includeMethods">execute,aa,bb,cc,dd</param>

</interceptor>

下面给出一段继承自MethodsFilterInterceptor类的自定义拦截器

package com.inter;

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class FilterhelloInterceptor extends MethodFilterInterceptor {

private static final long serialVersionUID = 1L;

@Override

protected String doIntercept(ActionInvocation invocation) throws Exception {

System.out.println("using the MethodFilterInterceptor...");

String result = invocation.invoke();

return result;

}

public void setExcludeMethods(String excludeMethods){

super.setExcludeMethods(excludeMethods);

}

@Override

public void setIncludeMethods(String includeMethods) {

super.setIncludeMethods(includeMethods);

}

}

时间: 2024-10-10 14:29:21

使用拦截器的方法过滤特性的相关文章

Struts2拦截器、拦截器栈(Interceptor Stack)、全局拦截器与方法拦截器

Struts2拦截器原理 Struts2拦截器是在访问某个Action或Action的方法之前或之后实施拦截.在请求Struts2的Action时,Struts2会查找配置文件,并根据配置文件实例化相应的拦截器对象. Struts2拦截器配置 struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Found

拦截器getmodel方法什么时候被调用(没搞懂有什么鸟用,自己搭的项目中用到了这个)

拦截器是Struts2最强大的特性之一,它是一种可以让用户在Action执行之前和Result执行之后进行一些功能处理的机制.Struts2 的预定义拦截器 modelDriven 如果action实现了ModelDriven接口,它将getModel方法取得的模型对象存入OgnlValueStack中.

axios拦截器使用方法

vue中axios获取后端接口数据有时候需要在请求开始时显示loading,请求结束后隐藏loading,这时候到每次调接口时都写上有点繁琐,有时候还会漏写. 这时候axios的拦截器就起了作用,我们可以在发送所有请求之前和操作服务器响应数据之前对这种情况过滤.定义拦截器如下: import Vue from 'vue' import axios from 'axios' import { Indicator } from 'mint-ui' import { Toast } from 'min

SpringCloud使用Feign拦截器实现URL过滤和RequestParam加密

一.FeignInterceptor.class拦截器 package com.xiaohang.socialcard.pre.intercepter; import com.xiaohang.socialcard.pre.utils.SM4Util; import feign.RequestInterceptor; import feign.RequestTemplate; import lombok.extern.slf4j.Slf4j; import org.springframework

springmvc 拦截器 得到方法和参数

if(handler instanceof HandlerMethod){ HandlerMethod handlerMethod = (HandlerMethod)handler; MethodParameter[] methodParameters = handlerMethod.getMethodParameters(); for(MethodParameter methodParameter : methodParameters){ System.out.println(methodPa

Struts2拦截指定方法的拦截器

作者:禅楼望月 默认情况下,我们为一个Action配置一个拦截器,该拦截器会拦截该Action中的所有方法,但是有时候我们只想拦截指定的方法.为此,需要使用struts2拦截器的方法过滤特性. 要使用struts2拦截器的方法过滤特性其实也很简单,只需让拦截器的实现类继承com.opensymphony.xwork2.interceptor.MethodFilterInterceptor类.该类是AbstractInterceptor的子类.它重写了AbstractInterceptor类的in

笔记:Struts2 拦截器

配置拦截器 Struts.xml 配置文件中,使用<interceptor-/>来定义拦截器,有属性 name 表示拦截器的名称,class 表示拦截器的具体首先类,可以使用<param-/>子元素来配置拦截器的参数,配置示例: <package name="包名称" extends="抽象包名称"> <interceptors> <interceptor name="拦截器名称" class

Struts2入门(二)——配置拦截器

一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自动帮我们跳转到指定的处理类中去处理用户的请求,基本流程如下: 该流程笔者理解是基本流程,.如果有不对的地方,请下方留言.我会改正.谢谢: 好,接着往下讲: 注意:在struts.xml中,配置文件必须有该请求的处理类才能正常跳转,同时,返回SUCCESS字符串的类,必须继承ActionSupport

struts2中拦截器的简介与配置使用

拦截器是struts2框架的核心,struts2很多的功能都是构建在拦截器基础之上的,它是动态拦截Action调用的对象,提供了一种机制,使得开发者能够在一个Action前后执行需要的代码,可以在一个Action执行前组织他的执行,也能在Action执行后做一些相应的工作.同时他也提供了一种可以提取Action中可重用部分的方式. 拦截器 struts2拦截器是在访问某个Action或它的某个方法 .字段之前或之后实施拦截,struts2拦截器是可插拔的,是AOP的一种实现(AOP是OOP(Ob