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. python 读取文件时报错UnicodeDecodeError

    python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multib ...

  2. ScanTailor-ScanTailor 自动矫正图像歪斜

    ScanTailor 自动矫正图像歪斜   下面操作某一步可能会卡住,别担心情等待它处理完毕.   New Project ... Input Directory "Browse" ...

  3. go视频提取音频

    package main import ( "bytes" "fmt" "log" "os" "os/exec ...

  4. node服务器基本搭建

    const http = require('http') // 引入http模块 http.createServer(function(req,res){ // 创建一个http服务器 // 这里是一 ...

  5. Hugo+Github 搭建个人博客(Windows环境下)

    目录 Hugo+Github 搭建个人博客(Windows环境下) 1.前言 2.Differences 2.1 https vs SSH 2.2 新建的github的仓库名必须为 用户名+githu ...

  6. 【git冲突解决】: Please commit your changes or stash them before you merge.

    刚刚使用 git pull 命令拉取代码时候,遇到了这样的问题: error: Your local changes to the following files would be overwritt ...

  7. Window Mysql 解压安装

    下载MySQL zip文件 解压后没有data文件夹和my.ini文件, 在根目录下创建my.ini文件,输入如下内容 以管理员身份运行cmd ,进入bin目录 ,运行下列命令,即可. a) mysq ...

  8. CAS 算法与 Java 原子类

    乐观锁 一般而言,在并发情况下我们必须通过一定的手段来保证数据的准确性,如果没有做好并发控制,就可能导致脏读.幻读和不可重复度等一系列问题.乐观锁是人们为了应付并发问题而提出的一种思想,具体的实现则有 ...

  9. 配置交换机之间直连链路聚合-LACP模式

    组网图形 LACP模式链路聚合简介 以太网链路聚合是指将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的.链路聚合分为手工模式和LACP模式. LACP模式需要有链路聚合控制协 ...

  10. python框架Django中MTV之Model(数据模型)

    MTV框架之Model(数据模型) 关注公众号"轻松学编程"了解更多. 1.连接MySQL数据库 项目中的settings.py设置范例 # 配置数据库 DATABASES = { ...