`
xp9802
  • 浏览: 1202750 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个检测是否登录过滤器例子

 
阅读更多

代码如下:

 

import javax.servlet.*; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 
import java.util.List; 
import java.util.ArrayList; 
import java.util.StringTokenizer; 
import java.io.IOException; 

/** 
* 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面<p> 
* 配置参数<p> 
* checkSessionKey 需检查的在 Session 中保存的关键字<br/> 
* redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath<br/> 
* notCheckURLList 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath<br/> 
*/ 
public class CheckLoginFilter implements Filter { 
     protected FilterConfig filterConfig = null; 
     private String redirectURL = null; 
     private List notCheckURLList = new ArrayList(); 
     private String sessionKey = null; 

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException 
{ 
   HttpServletRequest request = (HttpServletRequest) servletRequest; 
   HttpServletResponse response = (HttpServletResponse) servletResponse; 

   HttpSession session = request.getSession(); 
   if(sessionKey == null) 
   { 
    filterChain.doFilter(request, response); 
    return; 
   } 
   if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null) 
   { 
    response.sendRedirect(request.getContextPath() + redirectURL); 
    return; 
   } 
   filterChain.doFilter(servletRequest, servletResponse); 
} 

public void destroy() 
{ 
   notCheckURLList.clear(); 
} 

private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) 
{ 
   String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo()); 
   return notCheckURLList.contains(uri); 
} 

public void init(FilterConfig filterConfig) throws ServletException 
{ 
   this.filterConfig = filterConfig; 
   redirectURL = filterConfig.getInitParameter("redirectURL"); 
   sessionKey = filterConfig.getInitParameter("checkSessionKey"); 

   String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList"); 

   if(notCheckURLListStr != null) 
   { 
    StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";"); 
    notCheckURLList.clear(); 
    while(st.hasMoreTokens()) 
    { 
     notCheckURLList.add(st.nextToken()); 
    } 
   } 
} 
}

 

分享到:
评论

相关推荐

    过滤器例子的代码

    标题"过滤器例子的代码"表明我们将探讨一个关于过滤器的实际应用代码。描述中提到的"filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理",进一步解释了过滤...

    java过滤器例子

    以下是一个简单的登录检查过滤器的示例: ```java import javax.servlet.*; import java.io.IOException; public class LoginCheckFilter implements Filter { @Override public void init(FilterConfig ...

    网络编程 过滤器链例子

    - 在`doFilter()`方法中,开发者可以执行预处理任务,如登录检查、数据校验等,然后通过调用`chain.doFilter(request, response)`传递请求给下一个过滤器,或者直接终止链的执行。 2. **配置过滤器**: - 在Java ...

    servlet 过滤器做的简单登陆demo

    Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达目标Servlet之前或之后对请求和响应进行处理。在这个“servlet过滤器做的简单登陆demo”中,我们将探讨如何利用过滤器实现一个基础的登录验证...

    过滤器例子下载实例

    综上所述,"过滤器例子下载实例"是一个学习Servlet Filter的好资源,它帮助我们理解如何利用Filter实现用户登录检查,从而控制对Web资源的访问。通过实践这个示例,开发者可以更好地掌握Filter的用法,并将其应用到...

    过滤器例子

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许我们在数据处理的前后阶段插入自定义逻辑。...通过学习和实践这个"过滤器例子",你将能够更好地掌握这一关键技术,并将其运用到实际的开发工作中。

    servlet 过滤器例子 filter

    本示例“servlet过滤器例子filter”将深入讲解如何使用Servlet过滤器以及其在实际应用中的作用。 首先,我们来了解什么是Servlet过滤器。Servlet过滤器(Filter)是Servlet API的一部分,定义在`javax.servlet....

    包含过滤器的一个简单登陆实例

    在我们的登录实例中,过滤器会拦截所有请求,检查用户是否已经登录,未登录的用户将被重定向到登录页面。 实现过滤器的步骤通常包括以下几步: 1. **创建过滤器类**:首先,我们需要创建一个实现`Filter`接口的类...

    JavaWeb中过滤器的三个小案例

    首先,我们需要在过滤器中检查请求是否需要用户身份,如果需要,则检查请求头中的认证信息(如Cookie或Token)。如果用户未登录,可以重定向到登录页面。这种方式虽然不能实现细粒度的权限管理,但可以快速实现基础...

    jsp中的过滤器(含例子)

    除了字符编码,过滤器还可以用于其他场景,比如登录检查、权限控制、GZIP压缩等。通过组合多个过滤器,我们可以构建出强大的中间件层,提高Web应用程序的灵活性和可维护性。 总的来说,`JSP`中的过滤器是一个强大的...

    servlet过滤器验证用户登录

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

    filter过滤器例子

    在Java Web开发中,`Filter`(过滤器)是一个至关重要的组件,它允许开发者在请求被Servlet处理之前或之后执行一些预定义的操作。`Filter`主要用于数据的预处理、安全控制、性能优化等方面。本教程将通过一个具体的`...

    过滤器(filter) 例子源码

    同时,你可以尝试修改源码,实现自己的过滤需求,比如添加一个登录检查过滤器,确保只有已登录用户才能访问某些资源。 总结,过滤器是Java Web开发中的强大工具,它们可以增强应用程序的安全性、性能和用户体验。...

    spring security 4 小例子带自定义过滤器

    例如,我们的自定义过滤器在验证成功后可以创建一个`Authentication`对象并将其设置到`SecurityContextHolder`中。 ```java public class CustomAuthenticationFilter extends GenericFilterBean { private final ...

    一个很简单的过滤器一看就会

    在DEMO中,你可以尝试改变过滤器的行为,例如检查用户是否已登录、修改请求或响应头,甚至对请求参数进行处理。这样,你可以更深入地理解过滤器的工作机制。 总之,过滤器是Web开发中的强大工具,它允许我们在不...

    jsp filter 过滤器判断用户是否登录

    下面我们就通过分析一个具体的示例代码来详细了解如何使用JSP Filter过滤器来判断用户是否已经登录。 #### 示例代码分析 首先,我们来看一下示例中的过滤器类`RightFilter`: ```java import javax.servlet....

    JAVA Web中过滤器

    - **登录检查**:在访问受保护的资源之前,过滤器可以检查用户是否已登录,未登录则重定向至登录页面。 - **安全过滤**:过滤非法字符,防止SQL注入或XSS攻击。 - **日志记录**:记录请求和响应的信息,便于分析...

    过滤器的使用了javabean

    例如,我们可以创建一个JavaBean来保存用户的登录状态,并在过滤器中检查这个状态,决定是否允许用户访问特定的资源。 使用JavaBean在过滤器中的一个常见场景是,当用户登录后,我们可以将登录信息(如用户名、角色...

    过滤器详细讲解及代码

    以下是一个简单的过滤器实现示例,用于检查用户是否登录,如果未登录,则重定向到登录页面。 #### 过滤逻辑 代码片段展示了过滤器如何检查用户是否已经登录,如果没有登录,将重定向到特定的Servlet进行处理,否则...

    垃圾邮件过滤器

    本项目是一个用Java编程语言实现的垃圾邮件过滤器,旨在帮助用户自动筛选并隔离垃圾邮件。下面我们将深入探讨垃圾邮件过滤器的工作原理,以及如何用Java来实现这一功能。 首先,垃圾邮件过滤器通常基于一系列规则和...

Global site tag (gtag.js) - Google Analytics