代码如下:
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 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过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达目标Servlet之前或之后对请求和响应进行处理。在这个“servlet过滤器做的简单登陆demo”中,我们将探讨如何利用过滤器实现一个基础的登录验证...
综上所述,"过滤器例子下载实例"是一个学习Servlet Filter的好资源,它帮助我们理解如何利用Filter实现用户登录检查,从而控制对Web资源的访问。通过实践这个示例,开发者可以更好地掌握Filter的用法,并将其应用到...
在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许我们在数据处理的前后阶段插入自定义逻辑。...通过学习和实践这个"过滤器例子",你将能够更好地掌握这一关键技术,并将其运用到实际的开发工作中。
本示例“servlet过滤器例子filter”将深入讲解如何使用Servlet过滤器以及其在实际应用中的作用。 首先,我们来了解什么是Servlet过滤器。Servlet过滤器(Filter)是Servlet API的一部分,定义在`javax.servlet....
在我们的登录实例中,过滤器会拦截所有请求,检查用户是否已经登录,未登录的用户将被重定向到登录页面。 实现过滤器的步骤通常包括以下几步: 1. **创建过滤器类**:首先,我们需要创建一个实现`Filter`接口的类...
首先,我们需要在过滤器中检查请求是否需要用户身份,如果需要,则检查请求头中的认证信息(如Cookie或Token)。如果用户未登录,可以重定向到登录页面。这种方式虽然不能实现细粒度的权限管理,但可以快速实现基础...
除了字符编码,过滤器还可以用于其他场景,比如登录检查、权限控制、GZIP压缩等。通过组合多个过滤器,我们可以构建出强大的中间件层,提高Web应用程序的灵活性和可维护性。 总的来说,`JSP`中的过滤器是一个强大的...
本文将深入探讨如何利用Servlet过滤器来验证用户是否已登录,以及如何配置过滤器以针对特定的JSP页面或目录进行权限控制。 ### Servlet过滤器简介 Servlet过滤器是一种在请求到达目标资源(如Servlet或JSP页面)...
在Java Web开发中,`Filter`(过滤器)是一个至关重要的组件,它允许开发者在请求被Servlet处理之前或之后执行一些预定义的操作。`Filter`主要用于数据的预处理、安全控制、性能优化等方面。本教程将通过一个具体的`...
同时,你可以尝试修改源码,实现自己的过滤需求,比如添加一个登录检查过滤器,确保只有已登录用户才能访问某些资源。 总结,过滤器是Java Web开发中的强大工具,它们可以增强应用程序的安全性、性能和用户体验。...
例如,我们的自定义过滤器在验证成功后可以创建一个`Authentication`对象并将其设置到`SecurityContextHolder`中。 ```java public class CustomAuthenticationFilter extends GenericFilterBean { private final ...
在DEMO中,你可以尝试改变过滤器的行为,例如检查用户是否已登录、修改请求或响应头,甚至对请求参数进行处理。这样,你可以更深入地理解过滤器的工作机制。 总之,过滤器是Web开发中的强大工具,它允许我们在不...
下面我们就通过分析一个具体的示例代码来详细了解如何使用JSP Filter过滤器来判断用户是否已经登录。 #### 示例代码分析 首先,我们来看一下示例中的过滤器类`RightFilter`: ```java import javax.servlet....
- **登录检查**:在访问受保护的资源之前,过滤器可以检查用户是否已登录,未登录则重定向至登录页面。 - **安全过滤**:过滤非法字符,防止SQL注入或XSS攻击。 - **日志记录**:记录请求和响应的信息,便于分析...
例如,我们可以创建一个JavaBean来保存用户的登录状态,并在过滤器中检查这个状态,决定是否允许用户访问特定的资源。 使用JavaBean在过滤器中的一个常见场景是,当用户登录后,我们可以将登录信息(如用户名、角色...
以下是一个简单的过滤器实现示例,用于检查用户是否登录,如果未登录,则重定向到登录页面。 #### 过滤逻辑 代码片段展示了过滤器如何检查用户是否已经登录,如果没有登录,将重定向到特定的Servlet进行处理,否则...
本项目是一个用Java编程语言实现的垃圾邮件过滤器,旨在帮助用户自动筛选并隔离垃圾邮件。下面我们将深入探讨垃圾邮件过滤器的工作原理,以及如何用Java来实现这一功能。 首先,垃圾邮件过滤器通常基于一系列规则和...