• servlet过滤器配置白名单、黑名单


    1、web.xml配置

     1 <filter>
     2         <description>过滤是否登陆</description>
     3         <filter-name>encodingFilter</filter-name>
     4         <filter-class>com.stxx.manager.filter.EncodingFilter</filter-class>
     5         <init-param>
     6             <description>配置白名单</description>
     7             <param-name>noCheck</param-name>
     8             <param-value>
     9                 /login.jsp,
    10                 /register.jsp
    11             </param-value>
    12         </init-param>
    13         <init-param>
    14             <description>过滤不成功转向地址</description>
    15             <param-name>redirectPath</param-name>
    16             <param-value>/login.jsp</param-value>
    17         </init-param>
    18     </filter>
    19     <filter-mapping>
    20         <filter-name>encodingFilter</filter-name>
    21         <url-pattern>*.jsp</url-pattern>
    22     </filter-mapping>

    2、创建过滤器

     1 import java.io.IOException;
     2 import java.util.ArrayList;
     3 import java.util.List;
     4 import javax.servlet.Filter;
     5 import javax.servlet.FilterChain;
     6 import javax.servlet.FilterConfig;
     7 import javax.servlet.ServletException;
     8 import javax.servlet.ServletRequest;
     9 import javax.servlet.ServletResponse;
    10 import javax.servlet.http.HttpServletRequest;
    11 import javax.servlet.http.HttpServletResponse;
    12 import org.apache.commons.lang.StringUtils;
    13 import org.apache.log4j.Logger;
    14 
    15 /**
    16  * 登陆过滤 配置白名单、黑名单
    17  * @author zxf
    18  *
    19  */
    20 public class EncodingFilter implements Filter {
    21     
    22     Logger log = Logger.getLogger(EncodingFilter.class);
    23     
    24     private static final String NO_CHECK = "noCheck";
    25     private static final String REDIRECT_PATH = "redirectPath";
    26     private List<String> noCheckList = new ArrayList<String>();
    27     private String redirectPath = "/login.jsp";
    28 
    29     public void init(FilterConfig init) throws ServletException {
    30         log.info("初始化filter....");
    31         String noChecks = init.getInitParameter(NO_CHECK);
    32         if(StringUtils.isNotBlank(noChecks)){
    33             if(StringUtils.indexOf(noChecks,",")!=-1){
    34                 for(String no : noChecks.split(",")){
    35                     noCheckList.add(StringUtils.trimToEmpty(no));
    36                 }
    37             }else{
    38                 noCheckList.add(noChecks);
    39             }
    40         }
    41         String path = init.getInitParameter(REDIRECT_PATH);
    42         if(StringUtils.isNotBlank(path)){
    43             redirectPath = path;
    44         }
    45     }
    46     
    47     private boolean check(String path) {
    48         if (noCheckList == null || noCheckList.size() <= 0)
    49             return false;
    50         for (String s : noCheckList) {
    51             if (path.indexOf(s) > -1) {
    52                 return true;
    53             }
    54         }
    55         return false;
    56     }
    57 
    58     public void doFilter(ServletRequest arg0, ServletResponse arg1,
    59             FilterChain arg2) throws IOException, ServletException {
    60         HttpServletRequest request = (HttpServletRequest) arg0;
    61         HttpServletResponse response = (HttpServletResponse) arg1;
    62         log.info("被filter过滤.......");
    63         String contextpath = request.getContextPath();
    64         if("/".equals(contextpath)){contextpath="";}
    65         if(check(request.getRequestURI())){
    66             log.info("白名单");
    67             arg2.doFilter(request, response);
    68         }else{
    69             log.info("黑名单");
    70             response.sendRedirect(response.encodeURL(contextpath+redirectPath));
    71         }
    72     }
    73 
    74     public void destroy() {
    75         log.info("销毁filter....");
    76     }
    77 
    78 }
  • 相关阅读:
    关于devDependencies和dependencies报错提示及区别 --save 和--save-dev 的区别
    git 创建分支并提交到远程
    静态类中,静态方法和静态变量的执行顺序按出现执行
    Java和C#语法对比
    大数据时遇到的问题
    Javascript技巧笔记
    Javascript特性笔记
    Javascript 之《函数传参到底是值传递还是引用传递》
    Javascript之《创建对象》
    IE之诡异行为
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/5743036.html
Copyright © 2020-2023  润新知