一、使浏览器不缓存页面的过滤器
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");
}
}
分享到:
相关推荐
本文将详细介绍标题提及的五种常用过滤器,并提供相关实现代码,帮助理解它们的工作原理和用途。 一、使浏览器不缓存页面的过滤器 在Web开发中,有时我们需要确保每次请求都能获取最新的页面内容,防止浏览器缓存...
以上就是关于Java Web开发中几种常用过滤器的详细介绍,包括字符编码过滤器、浏览器不缓存页面的过滤器以及检测用户是否登录的过滤器等。这些过滤器在实际项目中有着广泛的应用场景,掌握它们的使用方法对于提高系统...
《过滤器图形符号(标准图形)》一文介绍了几种常用的过滤器图形符号,这些符号来源于GB/T786.1-1993标准。通过学习这些符号,设计师和技术人员可以更准确地表达系统中的过滤器组件及其特性,从而提高设计图纸的清晰...
以下是几种常见的捕获过滤器示例: 1. **显示目的TCP端口为3128的封包**:`tcp dst port 3128` - 这条命令会过滤出所有目的端口为3128的数据包,通常用于代理服务器的监控。 2. **显示来源IP地址为10.1.1.1的封包...
过滤器是一种服务器端的组件,它能够对请求和响应进行拦截,执行一些预处理或者后处理操作。它常用于进行登录验证、权限检查、字符编码转换等。 在本例中,要实现一个简单的登录验证过滤器,可以阻止未登录用户访问...
这意味着,开发者可以在`doFilter`方法内部编写代码来实现以下几种常见的场景: 1. **调用目标资源之前执行的操作**:开发者可以在访问实际资源之前执行某些预处理任务,比如设置请求的编码方式等。 2. **控制是否...
在Java Web开发中,过滤器(Filter)和监听器(Listener)是两种非常重要的组件,它们主要用于增强应用程序的功能和管理应用程序的状态。本篇文章将详细解释这两种技术的使用、配置及其区别。 首先,我们来了解过滤...
常见的前置过滤器类型有以下几种: 1. **叠片式过滤器**:这种过滤器的滤片刻有微米级沟槽,通过弹簧和水压紧密贴合,形成过滤单元。在过滤过程中,杂质被截留在叠片交叉点,反洗时通过改变水流方向将杂质冲洗出去...
编写这样的过滤器涉及到以下几个步骤: 1. **设计过滤器结构**:你需要定义过滤器的输入和输出pin,以及它们之间的数据流。输入pin接收YUY2数据,输出pin提供YV12或RGB24数据。 2. **实现Filter Graph Manager接口...
过滤器模式,又称为Criteria模式或Specification模式,是一种在软件设计中常见的行为设计模式,它主要用来封装一系列的条件判断,使复杂的查询过程简化。在iOS开发中,过滤器模式可以用于处理数据筛选,比如在App中...
管道过滤器风格是其中一种常见的数据流体系结构,它以数据为中心,通过一系列处理单元(过滤器)对数据进行操作。在这个课件中,我们将深入探讨这种风格的特点、优势和应用场景。 首先,数据流体系结构(Data Flow ...
5. **KWIC11.java**: 关键词在上下文(Key Word in Context)过滤器,可能用于提取关键词并将其置于上下文之中,如显示关键词前后的几个单词,用于文本分析或搜索。 6. **CircularShifter11.java**: 该过滤器可能...
在IT领域,尤其是在Web开发中,过滤器(Filter)是一种常用的技术,用于处理HTTP请求和响应,实现诸如权限控制、日志记录、数据过滤等功能。本案例中的"过滤器--控制不同权限用户访问不同文件夹代码.rar"是一个针对...
在JavaScript开发领域,过滤器(Filter)是一种常见技术,它用于在请求到达目标资源之前进行预处理,或者在响应离开服务器之前进行后处理。在这个"过滤器验证用户登录"项目中,我们关注的是如何利用过滤器来实现用户...
在IT领域,IE浏览器过滤器是一项重要的功能,它允许用户根据特定需求来阻止或限制访问特定的网址或者包含特定关键字的网页。这种技术主要用于提升网络浏览的安全性,防止不适宜内容的显示,以及提高工作效率,比如在...
本示例中的`URLfilter`类就是一个简单的过滤器,它的主要目的是防止SQL注入攻击,这是一种常见的恶意攻击手段,攻击者试图通过输入恶意SQL语句来获取未经授权的数据或者破坏数据库。 SQL注入攻击通常是由于应用程序...
以下是对AngularJS中几种常见过滤器的详细解释和实例: 1. 大小写过滤器: - `uppercase` 过滤器将文本转换为大写,如 `{{ name | uppercase }}`。 - `lowercase` 过滤器则将文本转换为小写,如 `{{ name | ...
文本重行过滤器的实现方式有很多种,常见的有以下几种: 1. **基于哈希表**:将每行的哈希值作为键,出现过的行不再保存,这样可以快速查重并保持原文件的顺序。 2. **排序+合并**:先对文件进行排序,然后通过合并...
Java的IO流系统提供了一种称为过滤器(Filter)的机制,可以用来在数据传输过程中添加额外的处理步骤,比如编码转换。在这个实例中,我们可能会看到一个实现了`FilterInputStream`或`FilterOutputStream`的自定义类...