博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
servlet过滤器配置白名单、黑名单
阅读量:7251 次
发布时间:2019-06-29

本文共 3427 字,大约阅读时间需要 11 分钟。

1、web.xml配置

1 
2
过滤是否登陆
3
encodingFilter
4
com.stxx.manager.filter.EncodingFilter
5
6
配置白名单
7
noCheck
8
9 /login.jsp,10 /register.jsp11
12
13
14
过滤不成功转向地址
15
redirectPath
16
/login.jsp
17
18
19
20
encodingFilter
21
*.jsp
22

 

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 zxf18  *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
noCheckList = new ArrayList
();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 }

 

转载地址:http://xeqbm.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
paramiko在windows上的安装和使用
查看>>
xshll登录脚本
查看>>
让“云”无处不在-Citrix Xenserver之一 环境搭建
查看>>
IT 工具软件集合
查看>>
KVM虚拟化原理与实践
查看>>
WSFC 来宾群集架构
查看>>
快速寻找某IP地址所在的网络交换机端口 - Netdisco
查看>>
51CTO广东线下聚会-技术达人之夜总结篇
查看>>
Git 之——常用命令集合
查看>>
DNS服务器bind的架设笔记
查看>>
CentOS启动提示unexpected inconsistency;RUN fsck MANUALLY解决方法
查看>>
一个问题看系统数据库设计
查看>>
镜像仓库Harbor私服高可用策略分析及部署
查看>>
重写cnodejs学习整理
查看>>
从浏览器渲染的角度谈谈html标签的语义化
查看>>
文件权限及特殊权限管理SUID、SGID和Sticky
查看>>
iis 7 asp.net ajax post 请求字节过大报错问题解决办法
查看>>
高仿腾讯QQ即时通讯IM项目
查看>>
winform 中xml简单的创建和读取
查看>>