zoukankan      html  css  js  c++  java
  • 自定义struts2的过滤器,释放不需要过滤的类

      我们知道,使用struts2的时候需要设置一些不需要它过滤的请求(诸如我们使用的一些插件需要原生态的servlet),遇到这种情况的解决办法就是扩展struts的过滤器,下面请看web.xml的配置:

     <filter>
      <filter-name>struts2</filter-name>
            <!-- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
       <filter-class>com.hsc.util.UeditFilter</filter-class>
      <init-param>
       <param-name>config</param-name>
       <param-value>struts-default.xml,struts-plugin.xml,../struts.xml</param-value>
      </init-param>
     </filter>

    注释掉的部分就是原来struts2的过滤器,我们这里需要对它进行扩展,写一个自己的过滤器。过滤器的内容如下

    package com.hsc.util;
    
    import java.io.IOException;
    
    import javax.servlet.FilterChain;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
    
    public class UeditFilter extends StrutsPrepareAndExecuteFilter {
        public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest) req;
            //不过滤的url
            String url = request.getRequestURI();
            if (url.indexOf("/resource/ueditor/jsp/imageUp.jsp") >= 0||url.indexOf("/servlet/onLineTakePhotoServlet") >= 0) {
    //            System.out.println("使用自定义的过滤器");
                chain.doFilter(req, res);
            }else{
    //            System.out.println("使用默认的过滤器");
                super.doFilter(req, res, chain);
            }
        }
    }

      由以上的代码可以看出,自定义的过滤器继承StrutsPrepareAndExecuteFilter 这个类,在过滤的逻辑中拦截url对不需要过滤的请求,这里的两个例子为“/resource/ueditor/jsp/imageUp.jsp”和"/servlet/onLineTakePhotoServlet" ,当过滤器检测到该Url的时候放行,否则继续按照struts2的逻辑进行处理。这个小小的自定义过滤器虽然看上去十分简单,但用气来却很方便,于是就在这里整理了。

  • 相关阅读:
    shell 遍历当前目录以及所有子目录下文件
    linux shell 字符串操作(长度,查找,替换)详解
    将自定义结构存入std::set 或者 std::map
    CentOS下搭建SVN服务器
    基于Debian的linux系统软件安装命令
    rm搭配grep删除符合条件的文件
    Centos系统环境
    怎么恢复用mysqldump备份数据和恢复数据
    mac 安装 node.js 的 canvas
    centos 6.5 安装 node.js 的 canvas模块
  • 原文地址:https://www.cnblogs.com/wq123/p/3484067.html
Copyright © 2011-2022 走看看