`

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

 
阅读更多

1、web.xml配置

<filter>
		<description>过滤是否登陆</description>
		<filter-name>encodingFilter</filter-name>
		<filter-class>com.stxx.manager.filter.EncodingFilter</filter-class>
		<init-param>
			<description>配置白名单</description>
			<param-name>noCheck</param-name>
			<param-value>
				/login.jsp,
				/register.jsp
			</param-value>
		</init-param>
		<init-param>
			<description>过滤不成功转向地址</description>
			<param-name>redirectPath</param-name>
			<param-value>/login.jsp</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>

 2、创建过滤器

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

/**
 * 登陆过滤 配置白名单、黑名单
 * @author zxf
 *
 */
public class EncodingFilter implements Filter {
	
	Logger log = Logger.getLogger(EncodingFilter.class);
	
	private static final String NO_CHECK = "noCheck";
	private static final String REDIRECT_PATH = "redirectPath";
	private List<String> noCheckList = new ArrayList<String>();
	private String redirectPath = "/login.jsp";

	public void init(FilterConfig init) throws ServletException {
		log.info("初始化filter....");
		String noChecks = init.getInitParameter(NO_CHECK);
		if(StringUtils.isNotBlank(noChecks)){
			if(StringUtils.indexOf(noChecks,",")!=-1){
				for(String no : noChecks.split(",")){
					noCheckList.add(StringUtils.trimToEmpty(no));
				}
			}else{
				noCheckList.add(noChecks);
			}
		}
		String path = init.getInitParameter(REDIRECT_PATH);
		if(StringUtils.isNotBlank(path)){
			redirectPath = path;
		}
	}
	
	private boolean check(String path) {
		if (noCheckList == null || noCheckList.size() <= 0)
			return false;
		for (String s : noCheckList) {
			if (path.indexOf(s) > -1) {
				return true;
			}
		}
		return false;
	}

	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) arg0;
		HttpServletResponse response = (HttpServletResponse) arg1;
		log.info("被filter过滤.......");
		String contextpath = request.getContextPath();
		if("/".equals(contextpath)){contextpath="";}
		if(check(request.getRequestURI())){
			log.info("白名单");
			arg2.doFilter(request, response);
		}else{
			log.info("黑名单");
			response.sendRedirect(response.encodeURL(contextpath+redirectPath));
		}
	}

	public void destroy() {
		log.info("销毁filter....");
	}

}
 
分享到:
评论

相关推荐

    Servlet过滤器的简单使用源码+文档

    在标题"Servlet过滤器的简单使用源码+文档"中,我们可以理解为这个压缩包包含了一个关于Servlet过滤器的基础应用示例,以及相关的源代码和文档资料。描述中提到的"实现一个登陆界面",表明了过滤器可能被用作验证...

    servlet过滤器配置及运行过程.doc

    servlet过滤器配置及运行过程,servlet实例用法。

    servlet过滤器实例经典过滤器

    本教程将深入讲解如何配置和使用Servlet过滤器,以及介绍五个经典的过滤器实例。 首先,让我们理解Servlet过滤器的基本概念。根据Java Servlet规范,过滤器(Filter)是一个实现了javax.servlet.Filter接口的类,它...

    Java servlet过滤器配置详解

    本篇将深入讲解Java Servlet过滤器的配置,包括`EncodingFilter`类的使用、jsp页面配置以及`web.xml`文件的配置。 首先,`EncodingFilter`是一个常见的过滤器,主要用于解决HTTP请求和响应中的编码问题。在处理中文...

    servlet 过滤器做的简单登陆demo

    Servlet过滤器遵循`Filter`接口,通过在web.xml配置文件中声明过滤器,可以指定哪些请求需要经过过滤。当用户发起请求时,过滤器会先于目标Servlet执行,可以用来进行预处理,如认证、编码转换、日志记录等。 2. *...

    servlet过滤器配置,解决JSP的所有乱码

    在标题“servlet过滤器配置,解决JSP的所有乱码”和描述“JSP页面获得servlet是不是经常出现乱码呢?很烦人哦,那就试试这个吧,可以解决所有的乱码,里面有说明教你怎么配”中,主要涉及的知识点是通过配置Servlet...

    servlet过滤器详解

    #### 六、Servlet过滤器的部署与配置 在`web.xml`文件中配置过滤器及其映射规则,包括: - `&lt;filter&gt;`:定义过滤器类名和初始化参数。 - `&lt;filter-mapping&gt;`:指定过滤器与URL的关联,使用通配符`/*`表示所有URL。...

    servlet过滤器实现(Eclipse工程)

    Servlet过滤器是Java Web开发中的强大工具,通过简单的配置,即可实现对请求和响应的灵活控制。在Eclipse中创建并实现Servlet过滤器,可以让你更好地理解和应用这一特性,提升Web应用的功能和安全性。本教程提供的...

    servlet过滤器验证用户登录

    本文将深入探讨如何利用Servlet过滤器来验证用户是否已登录,以及如何配置过滤器以针对特定的JSP页面或目录进行权限控制。 ### Servlet过滤器简介 Servlet过滤器是一种在请求到达目标资源(如Servlet或JSP页面)...

    Servlet过滤器使用

    Servlet过滤器,主要配置了中文乱码及未登陆验证过滤器。 代码简单明了,易学。 过滤器实现类 1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 a、init(FilterConfig): 这是Servlet...

    Servlet过滤器小实例

    ### Servlet过滤器小实例 #### 实例背景与需求分析 在Web开发中,为了保障系统的安全性和稳定性,经常需要对接收到的HTTP请求进行预处理,比如验证用户身份、过滤恶意请求等。通常情况下,这些预处理操作可以在...

    servlet过滤器技术实例,

    Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达Servlet之前或者Servlet...在学习和使用servlet过滤器时,理解其工作原理和生命周期,以及如何在`web.xml`或Spring框架中配置,都是非常关键的。

    servlet过滤器解决乱码问题

    ### Servlet过滤器解决乱码问题 在Web应用开发过程中,字符编码问题经常出现,尤其是在处理中文等多字节字符时。如果不正确地设置字符编码,可能会导致页面显示乱码。本文将详细介绍如何通过Servlet过滤器来解决这...

    JAVA WEB中的Servlet过滤器

    Servlet过滤器是按照指定的配置顺序进行调用的,能够实现数据的预处理、后处理、权限控制、字符编码转换等多种功能,极大地增强了Web应用程序的功能性和灵活性。 Servlet过滤器的实现基于Java Servlet API中的...

    基于servlet的过滤器

    5. 可以在`init()`方法中设置一些初始配置,例如过滤器的配置信息。 6. 在`destroy()`方法中,如果使用了临时存储,可以在此清理相关资源。 标签"过滤器"表明这个项目涉及到了Servlet的过滤器链,这是Servlet容器...

    Servlet过滤器机制分析及应用

    ### Servlet过滤器机制分析及应用 #### 一、概述 Servlet过滤器是Java Web应用程序中的一个重要组成部分,它提供了一种灵活的方式来对客户端的请求和服务器的响应进行预处理和后处理。这种机制允许开发者在不改变...

    jsp servlet过滤器,登陆验证 获取session

    而`过滤器(Filter)`是Servlet API的一部分,它提供了一种机制来拦截请求和响应,实现诸如登录验证、字符编码转换、性能监控等功能。在这个场景中,我们关注的是使用过滤器进行登录验证,以及如何利用`session`来...

    servlet 过滤器例子 filter

    这可以通过在web.xml文件中配置`&lt;filter-mapping&gt;`元素来实现,指定过滤器应该拦截哪些Servlet或URL模式。 例如,下面是一个简单的过滤器配置: ```xml &lt;filter-name&gt;MyFilter &lt;filter-class&gt;...

    servlet过滤器和监听器PPT课件.ppt

    servlet过滤器和监听器,servlet过滤器和监听器课件,servlet过滤器和监听器PPT

Global site tag (gtag.js) - Google Analytics