Java Web学习总结(12)Filter过滤器

一,Filter简介

Filter也称之为过滤器,Filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理。

二,Filter开发步骤

1)编写一个过滤器的类实现Filter接口

2)实现接口中尚未实现的方法(着重实现doFilter方法)

3)在web.xml中进行配置(主要是配置要对哪些资源进行过滤)

例如:

FilterDemo.java

import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
 
public class FilterDemo implements Filter{
 
    @Override
    public void destroy() {
        System.out.println("----过滤器销毁----");
    }
 
    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
            throws IOException, ServletException {
        System.out.println("----过滤器处理----");
        //放行
        arg2.doFilter(arg0, arg1);
    }
 
    @Override
    public void init(FilterConfig arg0) throws ServletException {
        System.out.println("----过滤器初始化----");
    }
}

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>Filter</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!--配置过滤器 -->
    <filter>
        <filter-name>FilterDemo</filter-name>
        <filter-class>com.zender.FilterDemo</filter-class>
    </filter>
 
    <!--映射过滤器 -->
    <filter-mapping>
        <filter-name>FilterDemo</filter-name>
        <!--“/*”表示拦截所有的请求 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <dispatcher>REQUEST</dispatcher>
</web-app

三,Filter的生命周期

Filter的创建和销毁由WEB服务器负责。 web应用程序启动时,web服务器将创建Filter 的实例对象,并调用其init方法,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作,filter对象只会创建一次,init方法也只会执行一次。通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。web服务器调用destroy方法销毁Filter。destroy方法在Filter的生命周期中仅执行一次。

web服务器启动时:

访问时:

web服务器关闭时:

Filter接口有三个方法,并且这个三个都是与Filter的生命相关的方法:


init(Filter config)


代表filter对象初始化方法 filter对象创建时执行。

参数:

config代表该Filter对象的配置信息的对象,内部封装是该filter的配置信息。


doFilter(ServletRequest request, ServletResponse response,FilterChain chain)


代表filter执行过滤的核心方法,如果某资源在已经被配置到这个filter进行过滤的话,那么每次访问这个资源都会执行doFilter方法。

参数:

ServletRequest/ServletResponse:

每次在执行doFilter方法时web容器负责创建一个request和一个response对象作为doFilter的参数传递进来。该request个该response就是在访问目标资源的service方法时的request和response。

FilterChain:

过滤器链对象,通过该对象的doFilter方法可以放行该请求。


destory()


代表是filter销毁方法 当filter对象销毁时执行该方法。

时间: 2024-08-30 12:18:40

Java Web学习总结(12)Filter过滤器的相关文章

Java Web总结十九Filter过滤器

一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,Web开发人员通过Filter技术,对Web服务器管理的所有Web资源:例如Jsp,Servlet,静态图片文件或静态HTML文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.自动登录.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发Web应用时,如果编写的Java类实现了这个接口,则把这个Java类称之为过滤器Filter.通过

Java Web学习(35):Filter学习(二)

与Filter相关的接口 FilterConfig接口 getInitParamter():获取初始化参数, getFilterName():获取过滤器名称, getServletContext():获取application, FilterChain接口 doFilter(ServletRequest,ServletResponse):放行,相当于调用了目标Servlet的service()方法. 过滤器的四种拦截方式 1拦截请求REQUEST(默认) 2拦截转发FOWARD 3拦截包含INC

Java Web学习(34):Filter学习(一)

什么是过滤器 生活中的过滤器场景: 什么是Web过滤器 Web过滤器过滤用户请求,但是不处理结果. 过滤器包括:过滤源,过滤规则和过滤结果. 过滤器的概念 过滤器是一个服务器端的组件,它可以截取客户端的请求与响应信息,并对这些信息过滤. 过滤器的工作原理 假设我们访问Web资源时: 1)没有过滤器的情况下: 2)存在过滤器的情况下: 过滤器的工作原理: 过滤器拦截请求和响应,以便查看.提取或以某种方式操作正在客户机和服务器之间交换的数据. 过滤器只能针对用户的请求进行服务器端跳转,不直接返回数据

[原创]java WEB学习笔记12:一个简单的serlet连接数据库实验

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

Java Web学习(35):Filter学习(三)

解决项目字符乱码 乱码问题说明:基本上在每个Servlet中都要处理乱码问题,所以应该把这个工作放到过滤器中来完成. 获取请求参数中的乱码问题: POST请求:request.setCharacterEncoding("UTF-8"); GET请求:new String(request.getParamter("xxx").getBytes("ISO-8859-1","UTF-8"); 响应的乱码问题: response.se

[原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

java web基础 --- URL重定向Filter

java web基础 --- URL重定向Filter httpRequest.getRequestDispatcher("/helloWorld").forward(httpRequest, response); 服务器端转发,不改变浏览器端URL地址,常用 httpResponse.sendRedirect(uri); 浏览器端重定向,改变URL在浏览器地址栏 URLOverWriteFilter.java 1 package com.web1.util; 2 3 import j

Java Web总结二十Filter、装饰设计模式

一.Filter的部署--注册Filter <filter> <filter-name>testFitler</filter-name> <filter-class>org.test.TestFiter</filter-class> <init-param> <param-name>word_file</param-name> <param-value>/WEB-INF/word.txt</p

[原创]java WEB学习笔记6:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Java Web基础知识之Filter:过滤一切你不想看到的事情

不要相信客户端, 所以做后端的人都应该铭记的事情.因为前端传过来的数据并不总是合法和有效的,所以后端是对访问资源的最后一道保护伞.之前我们在Spring中说到过AOP编程,AOP基础知识,它就可以在执行我们的方法之前进行一些预处理和验证来保护后端的资源.不难想到她的实现方式和本篇要说的过滤器的实现原理应该是相同的,都是通过Java的动态代理实现的(自己的理解). 在Java Web的开发中,过滤器用于拦截请求,并对ServletRequest对象进行处理,我们可以想到的,它可以用来验证权限.加密