JavaWeb servlet过滤器

  一.Filter简介:

***************************************************************************************

    Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件

或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

它主要用于对用户请求进行预处理,也可以对HttpServletResponse 进行后处理。使用Filter 的完整流程:Filter 对用户请求进行预处理,接着将请求交给Servlet 进行处

理并生成响应,最后Filter 再对服务器响应进行后处理。

  二、Servlet过滤器的特点:

  ***************************************************************************************

    1.Servlet过滤器可以检查和修改ServletRequest和ServletResponse对象

    2.Servlet过滤器可以被指定和特定的URL关联,只有当客户请求访问该URL时,才会触发过滤器

    3.Servlet过滤器可以被串联在一起,形成管道效应,协同修改请求和响应对象

  三、Servlet过滤器的适用场合:
  ***************************************************************************************
    1.认证过滤

    2.登录和审核过滤

    3.图像转换过滤

    4.数据压缩过滤

    5.加密过滤

    6.令牌过滤

    7.资源访问触发事件过滤

    8.XSL/T过滤

    9.Mime-type过滤

  四、Servlet过滤器接口的构成:

  ***************************************************************************************

     所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。这个接口含有3个过滤器类必须实现的方法:

    1.init(FilterConfig):

     这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数

    2.doFilter(ServletRequest,ServletResponse,FilterChain):

     这个方法完成实际的过滤操作,当客户请求访问于过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器

    3.destroy():

     Servlet容器在销毁过滤器实例前调用该方法,这个方法中可以释放Servlet过滤器占用的资源

  五、Servlet过滤器的创建步骤:
  ***************************************************************************************
    1.实现javax.servlet.Filter接口

    2.实现init方法,读取过滤器的初始化函数

    3.实现doFilter方法,完成对请求或过滤的响应

    4.调用FilterChain接口对象的doFilter方法,向后续的过滤器传递请求或响应

    5.销毁过滤器

  六、Servlet过滤器的发布:
  ***************************************************************************************

    1.发布Servlet过滤器时,必须在web.xml文件中加入<filter>元素和<filter-mapping>元素。

    2.<filter>元素用来定义一个过滤器:

    属性                   含义

      filter-name    指定过滤器的名字

      filter-class    指定过滤器的类名

      init-param    为过滤器实例提供初始化参数,可以有多个

    3.<filter-mapping>元素用于将过滤器和URL关联:

      属性                     含义

      filter-name    指定过滤器的名字

      url-pattern    指定和过滤器关联的URL,为”/*”表示所有URL

public class LoginFilter implements Filter {

    private String urlPath;// 用来存放不需要判断的页面路径

    public LoginFilter() {
    }

    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;

        String[] urls = urlPath.split(",");
        for (String s : urls) {
            String reqPath = request.getRequestURI();
            if (reqPath.indexOf(s) != -1) {
                chain.doFilter(request, response);
                return;
            }
        }
        Object obj = request.getSession().getAttribute("currentUser");
        if (obj == null) {
            response.sendRedirect("login.jsp");
        } else {
            chain.doFilter(request, response);
        }
    }

    public void init(FilterConfig fConfig) throws ServletException {
        urlPath = fConfig.getInitParameter("initPath");
    }

}
时间: 2024-08-03 16:18:22

JavaWeb servlet过滤器的相关文章

JavaWeb学习篇之----Servlet过滤器Filter和监听器

JavaWeb学习篇之----Servlet过滤器Filter和监听器 首先来看一下Servlet的过滤器内容: 一.Servlet过滤器的概念: *************************************************************************************** Servlet过滤器是在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改. Servlet过滤器本身并不产生请求和响应对象,

Servlet过滤器和监听器知识总结(转)

 Servlet过滤器是 Servlet 程序的一种特殊用法,主要用来完成一些通用的操作,如编码的过滤.判断用户的登录状态.过滤器使得Servlet开发者能够在客户端请求到达 Servlet资源之前被截获,在处理之后再发送给被请求的Servlet资源,并且还可以截获响应,修改之后再发送给用户.而Servlet监听器可以  监听客户端发出的请求.服务器端的操作,通过监听器,可以自动激发一些操作,如监听在线人数.  Servlet过滤器简介绍      Servlet过滤器是在Java Servle

java基础篇---Servlet过滤器

Servlet过滤器从字面上的字意理解为景观一层次的过滤处理才达到使用的要求,而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件,在实际项目开发中Servlet过滤器主要用于对浏览器的请求进行过滤处理,将过滤后的请求再转给下一个资源. 过滤器的基本概念 Filter是在Servlet 2.3之后增加的新功能,当需要限制用户访问某些资源或者在处理请求时提前处理某些资源的时候,就可以使用过滤器完成. 过滤器是以一种组件的形式绑定到WEB应用程序当中的,与其他的WEB应用程序组件不同的

Servlet过滤器介绍之原理分析

zhangjunhd 的BLOG   写留言去学院学习发消息 加友情链接进家园 加好友 博客统计信息 51CTO博客之星 用户名:zhangjunhd文章数:110 评论数:858访问量:1923464无忧币:6720博客积分:6145博客等级:8注册日期:2007-02-03 热门专题更多>> Linux系统基础之菜鸟进阶 阅读量:2359 ARM驱动之Linux驱动程序设计入门 阅读量:2252 HTML5入门教程 阅读量:1392 深入浅出学MySQL 阅读量:1558 热门文章 基于T

JSP详细篇——Servlet过滤器和监听器

过滤器和监听器 Servlet过滤器是从Servlet2.3规范开始新增的功能,并在Servlet2.4规范中得到增强,监听器可以监听到Web应用程序启动和关闭.创建监听器需要实现响应的接口,并对其进行配置. Servlet过滤器 1.什么是过滤器 Servlet过滤器与Servlet十分相似,但是它具有拦截客户端请求的功能.Servlet过滤器可以改变请求中的内容,来满足实际开发中的需要.对于程序开发人员来说,过滤器实质上就是在Web应用服务器上的一个Web应用组件,用于拦截客户端与目标资源之

Servlet过滤器Filter用法

1 Servlet 过滤器方法 过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法:public void doFilter (ServletRequest, ServletResponse, FilterChain)该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法.FilterChain用户访问后续过滤器. public vo

Servlet过滤器Filter

Filter与Listener是Servlet规范里的两个高级特性.不用于处理客户端请求,只用于对request,response进行修改或者对context,session,request事件进行监听.善于处理一些特殊问题. sun公司在Servlet2.3规范中添加了Filter功能,并在Servlet2.4中对Filter进行了细节的补充.ServletFilter提现的是设计模式中的Filter模式. 实例参考: http://book.51cto.com/art/201004/1934

代理Servlet过滤器

Spring Security借助一些列Servlet 过滤器 来提供 各种 安全性功能. 我们只需要在应用中的 web.xml 中配置 一个过滤器. <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </

Servlet过滤器---基础

过滤器的基本概念 Servlet过滤器从字面上的字意理解为经过一层次的过滤处理才达到使用的要求,而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件,在实际项目开发中Servlet过滤器主要用于对浏览器的请求进行过滤处理,将过滤后的请求再转给下一个资源. Filter是在Servlet 2.3之后增加的新功能,当需要限制用户访问某些资源或者在处理请求时提前处理某些资源的时候,就可以使用过滤器完成. 过滤器是以一种组件的形式绑定到WEB应用程序当中的,与其他的WEB应用程序组件不同的