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


    源码:

    自定义的拦截器类:

    //自定义拦截器类: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;
    }

  • 相关阅读:
    nginx中的location匹配规则介绍
    有关博客更新的说明
    nginx配置不同路径下的转发代理
    laravel-admin使editormd支持粘贴截图并自动生成简介
    ERROR [HY000][1822]: Failed to add the foreign key constraint.
    MySQL如何只获得查询结果的前n条数据
    Java常用日期操作
    网络工具_nc
    kali安装工具
    有趣的小东西--打印彩色系统信息
  • 原文地址:https://www.cnblogs.com/moly/p/6830020.html
Copyright © 2020-2023  润新知