Filter

一、Filter过滤器

  • Filter过滤器它是JavaWeb的三大组件之一。三大组件分别是:Servlet程序、Listener监听器、Filter过滤器

  • Filter过滤器是JavaEE的规范。也就是接口

  • Filter过滤器作用:拦截请求,过滤响应。

  • 拦截请求常见的应用场景有:

    • 权限检查
    • 日记操作
    • 事务管理

      ...

二、Filter初体验

  • Filter过滤器的使用步骤:

    • 1、编写一个类去实现Filter 接口

    • 2、实现过滤方法doFilter()

      //AdminFilter.java
      
      Httpsession session = httpservletRequest.getsession();
      object user = session.getAttribute("user");
      HttpservletRequest httpservletRequest = (HttpServletRequest) servletRequest; //如果等于null,说明还没有登录
      if (user == null) {
      servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);
      return;
      }
      else{
      //让程序继续往下访问用户的目标资源
      filterchain.doFilter(servletRequest,servletResponse);
      )
    • 3、到web.xml中去配置Filter的拦截路径

      <!-- web.xml -->
      
      <!--filter标签用于配置一个Filter过滤器-->
      <filter>
      <!--给fiLter起一个别名-->
      <filter-name>AdminFilter</filter-name>
      <!--配置filter的全类名-->
      <filter-class>com.atguigu.filter.AdminFilter</filter-class>
      </filter> <!--filter-mapping配置FiLter过滤器的拦截路径-->
      <filter-mapping>
      <!--filter-name表示当前的拦截路径给哪个filter使用-->
      <filter-name>AdminFilter</filter-name>
      <!-- url-pattern配置拦截路径表示请求地址为: http://ip:port/工程路径/映射到IDEA的web目录
      admin/*表示请求地址为: http://ip:port/工程路径/ admin/*
      -->
      <url-pattern>/admin/*</url-pattern>
      </filter-mapping>

三、Filter的生命周期

  • Filter的生命周期包含几个方法

    • 1、构造器方法
    • 2、init初始化方法

      第1,2步,在web工程启动的时候执行(Filter已经创建)
    • 3、doFilter过滤方法

      第3步,每次拦截到请求,就会执行
    • 4、destroy销毁

      第4步,停止web工程的时候,就会执行(停止web工程,也会销毁Filter过滤器)

四、FilterConfig类

  • FilterConfig类见名知义,它是Filter过滤器的配置文性类。

  • Tomcat每次创建Filter的时候,也会同时创建一个FilterConfig类,这里包含了Filter配置文件的配置信息。

  • FilterConfig类的作用是获取filter过滤器的配置内容

    • 1、获取 Filter的名称filter-name的内容

      filterConfig.getFilterName()
    • 2、获取在Filter中配置的init-param初始化参数

      //事先要在web.xml中配置
      filterConfig.getInitParameter("...")
    • 3、获取ServletContext对象

      filterConfig.getServletContext()

五、FilterChain过滤器链

六、Filter的拦截路径

  • 三种拦截方式

    • 精准匹配

      <ur1-pattern> /admin/jackyfu.html</url-pattern>
    • 目录匹配

      <url-pattern> /admin/*</url-pattern>
    • 后缀名匹配

      <ur1-pattern> *.html</url-pattern>
  • Filter过滤器只关心请求的地址是否匹配,而不关心请求的资源是否存在。

02 Filter过滤器的更多相关文章

  1. filter 过滤器(监听)

    Filter 过滤器 1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, ...

  2. Java防止SQL注入2(通过filter过滤器功能进行拦截)

    首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...

  3. Filter(过滤器)学习

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  4. javaweb学习总结(四十二)——Filter(过滤器)学习

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  5. Filter过滤器简单应用( 接口访问控制 )

    一.描述 在提供安卓.IOS客户端接口时,可以在登陆接口分配Session给客户端,用于判断其他接口是否是合法访问,以避免将所有的接口都暴露在web中可以由路径直接访问.但是最近的一个项目中的移动接口 ...

  6. 如何配置Filter过滤器处理JSP中文乱码

    参考Tomcat服务器目录webapps的examples示例 简单配置步骤:1.在项目web.xml文件添加过滤器标记<filter>和<filter-mapping>:2. ...

  7. Filter(过滤器)常见应用

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(四十六)——Filter(过滤器)常见应用 一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html F ...

  8. Filter过滤器(1)

    Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 ht ...

  9. Servlet的学习之Filter过滤器技术(1)

    本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器, ...

随机推荐

  1. 实现base64的编码解码,深刻理解base64

    上代码 #include<stdio.h> #include<string.h> #include<stdlib.h> const char padding = ' ...

  2. 【Azure 环境】连接到微软云Azure中国区 By VS 2019, VS Code, Powershell

    问题情形 最近,在使用最新的VS Code插件连接到中国区的Azure时候,出现了依旧是global版的登录连接.这个问题是当前Azure Account插件最新版的问题,可以使用V0.8.11版本登 ...

  3. 一键开启win10全局utf8,编码问题说拜拜

    在windows下开发,开发环境的配置是一个很头大的问题,而编码问题是另一个令人头大的问题,常常出现的中文乱码令人痛不欲生,其原因就在于windows默认的编码并不是现在很普遍的utf8格式,本文就来 ...

  4. 关于node回调函数中同步和异步操作的理解

    1.node的回调函数:如果一个方法的参数是另一个函数的名字,则这个参数本身就要回调函数,这个函数就是回调函数 1).同步操作文件(阻塞I/O)      同步就是一个人干完这个再干那个--    所 ...

  5. Linux入门到放弃之四《磁盘管理》

    一,磁盘管理 1.添加一个新磁盘/dev/sdb,用fdisk工具给磁盘分区,要求:一个主分区,一个扩展分区,两个逻辑分区: (1)去虚拟机设置添加一块硬盘,大小自定义 (2)重启系统 命令:rebo ...

  6. Vue (学习第四部 前端项目搭建流程 )

    目录 客户端项目搭建 创建项目目录 初始化项目 安装路由 Vue-router 下载安装路由组件 配置路由 初始化路由对象 注册路由信息 在视图函数中显示路由对应的内容 路由对象提供的操作 页面跳转 ...

  7. laravel 验证码 auth方式登录 中间件判断session是否存在

    首先下载laravel的插件 composer下载  实现验证码       composer require mews/captcha 在config/app.php进行配置 'providers' ...

  8. java安全编码指南之:文件IO操作

    目录 简介 创建文件的时候指定合适的权限 注意检查文件操作的返回值 删除使用过后的临时文件 释放不再被使用的资源 注意Buffer的安全性 注意 Process 的标准输入输出 InputStream ...

  9. [C#.NET 拾遗补漏]10:理解 volatile 关键字

    要理解 C# 中的 volatile 关键字,就要先知道编译器背后的一个基本优化原理.比如对于下面这段代码: public class Example { public int x; public v ...

  10. robotframework执行UI自动化时不能运行谷歌浏览器的问题

    robotframework执行UI自动化时报错,查看日志显示Parent suite setup failed: Variable '${browser}' not found. Did you m ...