Introduction of Filter in Servlet

Filter,过滤器,顾名思义,即是对数据等的过滤,预处理过程。为什么要引入过滤器呢?在平常访问网站的时候,有时候发一些敏感的信息,发出后显示时 就会将敏感信息用*等字符替代,这就是用过滤器对信息进行了处理。这只是一个简单的例子,当然,过滤器那么强大,它的功能也不可能局限于此,它不仅能预处 理数据,只要是发送过来的请求它都是可以预处理的,同时,它还可以对服务器返回的响应进行预处理,这样,大大减轻了服务器的压力。例如,实现URL级别的 权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。下面来详细介绍一下过滤器。

1.定义:

过滤作用,对从客户端向服务器端发送的请求进行过滤,也可以对服务器端返回的响应进行处理。它使用户可以改变一个request和修改一个 response.。Filter 不是一个servlet,它不能产生一个response,但是它能够在一个request到达servlet之前预处理request,也可以在 response离开servlet时处理response。换句话说,filter其实是客户端与servlet中间的一个传递者,并且它可以对要传递 的东西进行修改。

2.适用场合

实现URL级别的权限访问控制,过滤敏感词汇,压缩响应信息等。

3.过滤器如何实现拦截

当客户端发生请求后,在HttpServletRequest 到达Servlet 之前,过滤器拦截客户的HttpServletRequest 。

根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。

在过滤器中调用doFilter方法,对请求放行。请求到达Servlet后,对请求进行处理并产生HttpServletResponse发送给客户端。

在HttpServletResponse 到达客户端之前,过滤器拦截HttpServletResponse 。

根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据

最后,HttpServletResponse到达客户端。

4.Filter接口

Servlet API提供了一个Filter接口,编写的过滤器必须实现该接口。

原文地址:https://www.cnblogs.com/qqq-65536/p/10835710.html

时间: 2024-08-30 09:13:15

Introduction of Filter in Servlet的相关文章

Filter与Servlet的区别和联系

Filter的执行顺序与实例 Filter介绍 Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链.它与Servlet的区别在于:它不能直接向用户生成响应.完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理. Filter有如下几个用处. 在HttpServletRequest到达Servlet之前,拦截客

filter与servlet的比较

最近在开java的东西,还记得刚开始使用servlet是在调试一个ajax的时候,那时候不知道如何使用,就知道写一个路径去调用,总是提示404错误,以为是相对路径与绝对路径的问题,到最后自己一点点的调通了,知道servlet是需要服务器编译运行,是需要配置web.xml的.到学习filter,发现他们的套路完全是一样的,也需要在web.xml中进行相应的配置.可以说是基本一样的,我不禁要问,他们之间有什么异同呢. 遇到问题的时候也是学习的时候,我就在网上找了点相关的资料,与大家分享一下: 主要从

Filter与Servlet的区别与联系

转自 http://blog.csdn.net/gaibian0823/article/details/51027495 在我们写代码时,在web.xml中总能发现类似下面的代码: <span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="

web容器调用Filter和Servlet顺序学习

web容器调用Filter和Servlet顺序学习   一直对Filter和Servlet在哪里被web容器调用迷惑,后查看tomcat源码,揭开了其面纱.1. 下面是一个简单的时序图: 2. 对上面时序图中用到的主要类进行分析 1)         ApplicationFilterChain类,有两个主要函数,下面是省略过会的代码 public voiddoFilter(request, response) {//暴露在外面的调用接口 if( Globals.IS_SECURITY_ENAB

【转】web.xml 中的listener、 filter、servlet 加载顺序及其详解

web.xml 中的listener. filter.servlet 加载顺序及其详解 原文链接 http://www.cnblogs.com/JesseV/archive/2009/11/17/1605015.html 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filt

web.xml 中的listener、 filter、servlet 加载顺序及其详解

转自:http://zhxing.iteye.com/blog/399668 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter -> servlet 同

Spring 管理Filter和Servlet

本文转载自:http://www.open-open.com/lib/view/open1417248512252.html 在使用spring容器的web应用中,业务对象间的依赖关系都可以用context.xml文件来配置,并且由spring容器来负责依赖对象的创建.如果要在filter或者servlet中使用spring容器管理业务对象,通常需要使用WebApplicationContextUtils.getRequiredWebApplicationContext(getServletCo

Spring管理Filter和Servlet

Spring管理filter和servlet 在使用spring容器的web应用中,业务对象间的依赖关系都可以用context.xml文件来配置,并且由spring容器来负责依赖对象  的创建.如果要在filter或者servlet中使用spring容器管理业务对象,通常需要使用 WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext())来获得WebApplicationContext,然后调用

浅谈Listener、Filter、Servlet初始化顺序

Listener.Filter.Servlet都有一个初始化的过程,对应的方法分别为: contextInitialized(ServletContextEvent arg0); // Listener init(FilterConfig filterConfig); // Filter init(ServletConfig config); // Servlet 那么它们的初始化顺序是什么呢? Listener > Filter > Servlet TestServlet.java: pac