import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 用于的使 Browser 不缓存页面的过滤器
*/
public class ForceNoCacheFilter
implements Filter
{
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException
{
((HttpServletResponse) response).setHeader("Cache-Control","no-cache");
((HttpServletResponse) response).setHeader("Pragma","no-cache");
((HttpServletResponse) response).setDateHeader ("Expires", -1);
filterChain.doFilter(request, response);
}
public void destroy()
{
}
public void init(FilterConfig filterConfig) throws ServletException
{
}
}
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());
}
}
}
}
import javax.servlet.*;
import java.io.IOException;
/**
* 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题
*/
public class CharacterEncodingFilter
implements Filter
{
protected FilterConfig filterConfig = null;
protected String encoding = "";
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
{
if(encoding != null)
servletRequest.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest, servletResponse);
}
public void destroy()
{
filterConfig = null;
encoding = null;
}
public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
}
分享到:
相关推荐
过滤器是一种服务器端的组件,它能够对请求和响应进行拦截,执行一些预处理或者后处理操作。它常用于进行登录验证、权限检查、字符编码转换等。 在本例中,要实现一个简单的登录验证过滤器,可以阻止未登录用户访问...
Servlet过滤器是一种在请求到达目标资源(如Servlet或JSP页面)之前,对请求进行预处理的组件。它可以用于执行各种任务,包括但不限于:身份验证、授权、编码转换、压缩、日志记录等。通过在`web.xml`配置文件中定义...
过滤器则在Servlet处理请求之前和之后进行预处理和后处理,用于实现诸如字符编码转换、权限验证等功能。在这个主题中,我们将深入探讨如何制作Servlet验证码以及如何利用过滤器来优化Web应用的安全性和功能。 ...
Servlet 过滤器 Filter 是 Servlet API 中一个非常重要的功能,它提供了一种标准化的方法来定义过滤器,能够检查进入资源的请求信息,并作出相应的选择。下面是 Servlet 过滤器 Filter 的详细知识点: 1. 过滤器的...
以上三种过滤器分别解决了字符编码问题、禁止浏览器缓存以及登录状态检测等常见问题。通过合理的使用这些过滤器,可以有效地提高Web应用的功能性和安全性。在实际项目中,还可以根据具体需求定制更多类型的过滤器,...
在学习Java技术的过程中,Servlet过滤器是一种重要的概念。过滤器是一种特殊的Java类,它可以拦截进入或离开Servlet或JSP页面的请求和响应。它能够检查和修改请求头信息、请求内容、响应头信息以及响应内容。Servlet...
在这个"Servlet的几种实例"中,我们将深入探讨六个不同的示例,每个示例都代表了Servlet在实际应用中的不同用法。 1. **servlet-test1:基础Servlet实例** 这个例子展示了如何创建一个最基本的Servlet。在`doGet`...
本文将详细介绍标题提及的五种常用过滤器,并提供相关实现代码,帮助理解它们的工作原理和用途。 一、使浏览器不缓存页面的过滤器 在Web开发中,有时我们需要确保每次请求都能获取最新的页面内容,防止浏览器缓存...
本文将深入探讨Java中过滤器的几种使用方法及其应用场景,以帮助开发者更好地理解和应用这一特性。 ### 一、过滤器的基本概念 过滤器在Java Web应用中扮演着“守门人”的角色,它通过`javax.servlet.Filter`接口...
管道过滤器模式是一种设计模式,它在软件工程中被广泛应用于数据处理,特别是在Java编程语言中。这种模式通过连接一系列的处理组件(过滤器),每个组件执行特定的任务,来实现复杂的数据转换。在这个场景中,"管道...
这意味着,开发者可以在`doFilter`方法内部编写代码来实现以下几种常见的场景: 1. **调用目标资源之前执行的操作**:开发者可以在访问实际资源之前执行某些预处理任务,比如设置请求的编码方式等。 2. **控制是否...
在Java Web开发中,过滤器(Filter)和监听器(Listener)是两种非常重要的组件,它们主要用于增强应用程序的功能和管理应用程序的状态。本篇文章将详细解释这两种技术的使用、配置及其区别。 首先,我们来了解过滤...
### Java几个过滤器学习技巧 #### 一、概述 在Java Web开发中,过滤器(Filter)是一种非常实用的功能组件,它可以对用户的请求或...掌握这两种过滤器的使用方法,能够帮助开发者更好地构建健壮、安全的Web应用程序。
6. **过滤器(Filter)**:在Servlet应用中,过滤器可以拦截请求和响应,进行预处理或后处理。例如,我们可以使用登录过滤器来确保只有已登录的用户才能访问某些页面。 7. **监听器(Listener)**:监听器可以监听...
8. **过滤器Filter**:Servlet API还提供了Filter机制,允许在请求到达Servlet之前或离开Servlet之后进行拦截处理,如数据转换、安全检查等。Filter通过实现javax.servlet.Filter接口并配置在web.xml中。 9. **监听...
Servlet可以通过以下几种方式创建: 1. **实现Servlet接口**:实现`javax.servlet.Servlet`接口,该接口包含`init()`、`service()`和`destroy()`等方法。 2. **继承GenericServlet类**:这是一个抽象类,实现了...
过滤器(Filter)在Java Web开发中的作用主要体现在以下几个方面: 1. **权限控制**:在请求到达目标Servlet之前,过滤器可以检查用户是否已登录,未登录的用户会被重定向到登录页面。 2. **数据转换**:可以对...
博客中给出的例子很可能是如何创建和配置一个简单的过滤器,包括以下几个步骤: 1. **创建Filter类**:你需要创建一个类实现Filter接口,并覆盖doFilter()、init()和destroy()方法。 2. **配置Filter**:在web.xml...
通常,一个权限控制过滤器会包含以下几个核心部分: 1. **身份验证**:首先,过滤器需要识别用户身份,这通常通过验证用户的登录凭据(如用户名和密码)来实现。常见的身份验证方法包括基于表单的认证和基于令牌的...
JAVA Web 过滤器 Filter 是一种强大且灵活的工具,用于在服务器上过滤与 servlet 或 JSP 页面相关的请求信息。它提供了多种选择,包括以常规方式调用资源、利用修改后的请求信息调用资源、调用资源并对其进行修改、...