`

servlet过滤器过滤所有,只放行登录相关模块

阅读更多
最近做项目用到了servlet的过滤器,发现如果仅仅只是从web.xml文件上配置不够灵活,很难达到项目要求,用户体验度也不好,故在配置文件中加上过滤应用全局:
 <filter>
	<filter-name>Limit</filter-name>
	<filter-class>com.spditir.filter.LimitFilter</filter-class>
	</filter>
<filter-mapping>
	<filter-name>Limit</filter-name>
	<url-pattern>/*</url-pattern>
	</filter-mapping>


只放行和登录模块相关的资源,如下:
package com.speed.filter;

import java.io.IOException;
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;

/*
 * 安全过滤器修正v1版本
 * 功能:只允许登录过的用户访问资源
 */
public class LimitFilter implements Filter {

	FilterConfig filterconfig;

	public void init(FilterConfig arg0) throws ServletException {
		filterconfig = arg0;
	}

	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) arg0;
		HttpServletResponse response = (HttpServletResponse) arg1;
		String   request_uri   =   request.getRequestURI(); 		
		String   ctx_path   =   request.getContextPath(); 
		
		
		if(request_uri.substring(ctx_path.length()).equals("/loginFailure.jsp")
				|| request_uri.substring(ctx_path.length()).equals("/")
				|| request_uri.substring(ctx_path.length()).equals("/validateCode.action")
				|| request_uri.substring(ctx_path.length()).equals("/loginByForm.jsp")				
				|| request_uri.substring(ctx_path.length()).equals("/userMgr.action"))   
		{	
			System.out.println("------filter输出------安全验证登录通过uri:"+request_uri);
                           	arg2.doFilter(arg0, arg1);
		}else if(request_uri.substring(ctx_path.length()).equals("/images/login2.jpg")
				||request_uri.substring(ctx_path.length()).equals("/images/enter.gif")
				||request_uri.substring(ctx_path.length()).equals("/images/reset.gif")
				||request_uri.substring(ctx_path.length()).equals("/images/shutdown.jpg")){
			arg2.doFilter(arg0, arg1);
		}else{
			if (request.getSession().getAttribute("USER_INFO") == null) {
				response.setCharacterEncoding("utf-8");
				System.out.println(ctx_path+"/loginFailure.jsp");
				response.sendRedirect(ctx_path+"/loginFailure.jsp");
				return;
			} else {
				arg2.doFilter(arg0, arg1);
			}
		}
				
	}

	public void destroy() {     
	}
}


分享到:
评论

相关推荐

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

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

    servlet 过滤器做的简单登陆demo

    例如,所有需要登录才能访问的资源路径都会被配置在这个过滤器下。 6. **实践步骤**: - 编写Filter实现类,实现Filter接口的方法,如`doFilter()`。 - 在web.xml中配置Filter,包括设置过滤器的类名和需要拦截的...

    servlet过滤器实例经典过滤器

    Servlet过滤器是Java Web开发中的一个重要组件,它允许开发者在请求到达Servlet之前或者响应离开Servlet之后进行拦截处理。本教程将深入讲解如何配置和使用Servlet过滤器,以及介绍五个经典的过滤器实例。 首先,让...

    servlet过滤器验证用户登录

    在IT领域,特别是Java Web开发中,Servlet过滤器(Filter)是实现用户权限管理、登录状态验证等关键功能的重要机制之一。本文将深入探讨如何利用Servlet过滤器来验证用户是否已登录,以及如何配置过滤器以针对特定的...

    servlet过滤器详解

    使用Servlet过滤器时应注意,尽管`Filter`、`FilterConfig`和`FilterChain`位于`javax.servlet`包下,但实际操作中涉及的请求和响应对象通常需转换为HTTP特定类型,即`HttpServletRequest`和`HttpServletResponse`,...

    servlet过滤器实现(Eclipse工程)

    Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达Servlet之前或者响应离开Servlet之后进行拦截处理。本教程将详细介绍如何在Eclipse环境中创建并实现一个Servlet过滤器。 一、Servlet过滤器...

    Servlet过滤器小实例

    后续所有的请求都将经过此过滤器进行检查,若未找到"User"对象,则认为用户未登录或登录状态已失效,并将请求重定向到错误页面。 #### 实例环境与技术栈 - **Java版本**:本示例使用标准Java语言实现。 - **...

    jsp+servlet登录验证过滤器

    在这个项目中,“jsp+servlet登录验证过滤器”涉及了用户登录验证的过程,以及使用过滤器(Filter)来实现这一功能。下面将详细介绍这个主题中的相关知识点。 1. **JSP**:JSP是一种服务器端的技术,允许开发者在...

    servlet+jsp实现过滤器 防止用户未登录访问

    综上所述,使用servlet+jsp实现过滤器,可以有效地防止未登录用户访问受保护页面。开发者可以灵活地定义过滤器的行为,并且通过配置文件将过滤器与具体的URL模式关联起来,实现复杂的权限控制逻辑。

    servlet过滤器技术实例,

    Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达Servlet之前或者Servlet响应返回客户端之前进行拦截处理。在本实例中,我们将深入探讨Servlet过滤器(Filter)的使用和实现,以及它在实际应用...

    Servlet过滤器使用

    1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 a、init(FilterConfig): 这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取...

    servlet过滤器解决乱码问题

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

    Java servlet过滤器配置详解

    同时,也可以根据需要配置多个`filter-mapping`,指定过滤器只对特定的URL或Servlet生效。 总结来说,Java Servlet过滤器是Web应用中的重要工具,它们允许我们在请求处理流程中插入自定义逻辑,比如处理编码、进行...

    基于servlet的过滤器

    在这个小型的基于Servlet的过滤器项目中,我们主要关注如何利用过滤器来实现对网站访问用户的计数功能。这个功能在很多网站统计分析中都非常常见,可以帮助我们了解网站的流量情况。 首先,我们要理解Servlet过滤器...

    servlet过滤器实例代码

    在上述配置中,名为`MyFilter`的过滤器将拦截所有以`/servlet/`开头的URL。 接下来,我们来看一下过滤器的核心接口`javax.servlet.Filter`。这个接口包含三个方法: 1. `void doFilter(ServletRequest request, ...

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

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

    JAVA WEB中的Servlet过滤器

    在Java Web开发中,Servlet过滤器(Filter)是不可或缺的一部分,它允许开发者在请求到达Servlet之前或响应离开Servlet之后对其进行处理。Servlet过滤器是按照指定的配置顺序进行调用的,能够实现数据的预处理、后...

    servlet过滤器Filter入门

    过滤器只在与 servlet 规范 2.3 版兼容的服务器上有作用。如果你的 Web 应用需要支持旧版服务器,就不能使用过滤器。 通过本文,我们可以了解到 Servlet 过滤器 Filter 是一个非常强大且标准的机制,能够提供一种...

    Servlet过滤器机制分析及应用

    所有Servlet过滤器都需要实现`javax.servlet.Filter`接口。该接口定义了以下三个方法: - **init(FilterConfig filterConfig)**:初始化过滤器。 - **doFilter(ServletRequest request, ServletResponse response, ...

Global site tag (gtag.js) - Google Analytics