源码:

自定义的拦截器类:

//自定义拦截器类:LoginInterceptor ;

package com.java.action.interceptor;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class LoginInterceptor extends MethodFilterInterceptor {
private static final long serialVersionUID = -5315714306081057062L;

  @Override
  protected String doIntercept(ActionInvocation invocation) throws Exception {
    //Logger log = LoggerFactory.getLogger(getClass());

    HttpSession session = ServletActionContext.getRequest().getSession();
    Object obj = session.getAttribute("boperator");
    if(null != obj ){
      //log.debug("Skipping Interceptor... Method [" + doIntercept(null) + "] found in exclude list.");
      return invocation.invoke();
     }else{
      //log.debug("Skipping Interceptor... Method [" + doIntercept(null) + "] found in exclude list.");
      return null;
    }
  }

}

在struts2.xml中配置:

<!-- package标签下 -->

<package name="helloactionpkg" extends="struts-default" namespace="/">
<!-- 自定义 拦截器 -->
<interceptors>
<interceptor name="login" class="com.java.action.interceptor.LoginInterceptor"></interceptor>
</interceptors>

<!-- package标签内容  标签尾 -->

<!-- action标签下 -->
<action name="hello_*" class="com.java.action.UserAction" method="{1}" >
<!-- 配置拦截器 -->
<interceptor-ref name="login">

<!-- param 标签下   name="excludeMethods"   放行多个方法   方法名1,方法名2  用逗号隔开即可  -->
<param name="excludeMethods">toLogin,login</param>
</interceptor-ref>
<!-- 由于使用了自定义拦截器,应再次加载使用框架默认拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>

<!-- action标签内容  标签尾 -->

原因--源码(部分):

protected Set<String> excludeMethods = Collections.emptySet();
protected Set<String> includeMethods = Collections.emptySet();

public void setExcludeMethods(String excludeMethods) {
  this.excludeMethods = TextParseUtil.commaDelimitedStringToSet(excludeMethods);
}

public static Set<String> commaDelimitedStringToSet(String s) {
  Set<String> set = new HashSet<String>();
  String[] split = s.split(",");
  for (String aSplit : split) {
    String trimmed = aSplit.trim();
    if (trimmed.length() > 0)
    set.add(trimmed);
  }
  return set;
}

转载于:https://www.cnblogs.com/moly/p/6830020.html

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

  1. 使用struts2中默认的拦截器以及自定义拦截器

    转自:http://blog.sina.com.cn/s/blog_82f01d350101echs.html 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Acti ...

  2. JavaEE开发之SpringMVC中的自定义拦截器及异常处理

    上篇博客我们聊了<JavaEE开发之SpringMVC中的路由配置及参数传递详解>,本篇博客我们就聊一下自定义拦截器的实现.以及使用ModelAndView对象将Controller的值加 ...

  3. springboot中配置了拦截器后,拦截器无效的解决方案之一

    springboot中配置了拦截器后,拦截器无效的解决方案之一 参考文章: (1)springboot中配置了拦截器后,拦截器无效的解决方案之一 (2)https://www.cnblogs.com/ ...

  4. springboot 添加拦截器之后中文乱码_springboot中配置了拦截器后,拦截器无效的解决方案之一...

    springboot的启动类xxxApplication不能扫描到拦截器配置类,可加上@ComponentScan(basePackages={"com.maya.common"} ...

  5. Struts2中过滤器,拦截器,监听器他们之间有什么区别?

    1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器. 3.拦截器只能对Action请求起作用,而过滤器则可以对几乎所 ...

  6. springboot-2.2.5中自定义拦截器、静态资源映射、视图控制器和其他功能

    在spring-boot-2.2.5中对MVC自动配置类进行的更改,之前的WebMvcConfigurerAdapter类声明为过时的,现在进行自定义扩展需要实现WebMvcConfigurer类重写 ...

  7. SpringMVC自定义拦截器与异常处理(自定义异常)

    SpringMVC自定义拦截器与异常处理 拦截器概念 拦截器代码演示 创建maven工程 pom.xml <?xml version="1.0" encoding=" ...

  8. struts2自定义拦截器并配置拦截器使其生效

    首先编写一个struts2的拦截器,要继承 MethodFilterInterceptor 并获取其中的方法 package star.july.d_interceptor;import com.op ...

  9. Struts2第七篇【介绍拦截器、自定义拦截器、执行流程、应用】

    什么是拦截器 拦截器Interceptor-..拦截器是Struts的概念,它与过滤器是类似的-可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Struts为 ...

最新文章

  1. linux modprobe 内核模块加载卸载命令 简介
  2. Pair Poject 1 【新双人贪吃蛇】本组:龚逸 合作者:庞俊
  3. c语言怎么在win7上运行,C语言做的中国象棋,分享,问怎么在WIN7下运行
  4. boost::lower_bound相关的测试程序
  5. 在家做什么能让隔壁报警?| 今日最佳
  6. 2020年的风口来了!传统企业如何做数字化转型?
  7. 【latex】最后一页 参考文献不平衡 左右不对齐
  8. mysql 授权 函数查询_第6篇 MySQL 查询中的数学函数
  9. 为什么招聘高级前端开发这么难?
  10. 考研-数学经验贴(总结)
  11. input 输入框中文,监听的input事件 屏蔽拼音状态
  12. java中的解耦_java-了解如何解耦
  13. 计算机排名2018全国,2018全国90所计算机专业大学排名,分为ABC三个等级
  14. PCF文件管道信息解析
  15. 寻求真心话大冒险之猜数游戏的最佳策略
  16. 风暴孵化:手游代理加盟水很深,如何避免入坑?
  17. hexo 本地图片不显示
  18. 我的2015---找寻真实的自己
  19. 虚拟机装ubuntu的沟壑历程
  20. 如何打造智能、高效的生产管理系统?

热门文章

  1. 初识C++之函数重载
  2. html++标签页+界面,CSS+DIV实现多标签页面。
  3. 局部配置和全局配置_06. 教你零基础搭建小程序(解读全局配置文件-tabBar字段)...
  4. Oracle导入dmp文件报12504,ORA-12504:TNS :监听程序在 CONNECT_DATA 中未获得SERVICE_NAME...
  5. 击鼓传花c语言编程题,c语言-第5章 循环程序设计.ppt
  6. python父亲节祝福_父亲节祝福语精选简短 父亲节祝福语简短独特
  7. 微内核和宏内核的区别(短小、精悍)
  8. IntelliJ IDEA关于logger的live template配置
  9. 猫和老鼠 蓝桥杯/手速/暴力练习赛(暴力搜索)
  10. poj1703Find them, Catch them(并查集以及路径压缩)