过滤器(Filter)

  • 什么是过滤器

   过滤器是Javaweb的三大组件之一。他与servlet很相似,不过过滤器是用来拦截请求的,而不是处理请求的。

   当用户请求某个servlet时,会先执行部署在这个请求上的Filter,如果Filter“放行”,那么,会继续执行用户请求的servlet,如果Filter不放行,那么就不会执行用户请求的Servlet。

他会在一组资源(servlet   jsp   CSS   HTML  .....)的前面执行

他可以让请求得到目标资源,也可以不让请求达到!

*过滤器有拦截请求的能力!

如:没有登录的人拦截  不然其访问对应的资源

过滤器如何编写?

  1. 写一个类实现javax.servlet.Filter接口

package com.igeek.filter;

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;

/**

* @author www.igeehome.com

*

* TODO 第一个过滤器

*

* 2018年8月25日上午11:06:15

*/

public class FirstFilter implements Filter {

/**

* filter销毁是调用,释放资源

*/

public void destroy() {

System.out.println("销毁filter:FirstFilter");

}

/**

*  过滤处理

* @param request

* @param response

* @param chain 一般用来调用下一个filter

* @throws IOException

* @throws ServletException

*/

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

System.out.println("执行了FirstFilter的diFilter方法");

//通过FilterChain调用下一个filter

chain.doFilter(request, response);

}

/**

* 初始化feilter

* @param config 获得初始化参数

* @throws ServletException

*/

public void init(FilterConfig config) throws ServletException {

System.out.println("初始化filter:FirstFilter");

}

}

2.在web.xml中就行配置【与servlet非常相似】

<filter>

<filter-name>firstFilter</filter-name>

<filter-class>com.igeek.filter.FirstFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>firstFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

Tips当编写多个filter时,会按照配置顺序执行filter。

  • Filter的生命周期

和Serlvet几乎一致。

在服务器启动时创建对象,之创建一次。在服务器关闭时销毁filter对象

初始化方法:

public void init(FilterConfig config)

在filter对象创建之后执行,用于初始化filter对象。

Config参数可以获取初始化参数。

销毁的方法:

public void destroy()

在服务器关闭时,销毁filter对象之前执行,主要用于释放资源。

过滤器处理方法:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

处理要过滤的请求的方法。

参数:

ServletRequest 是HttpServletRequest的父接口。

实际上服务传入的对象就是HttpServletRequest类型的参数。

所以可以直接强制类型转化

HttpServletRequest req = (HttpServletRequest)request;

ServletResponse 是HttpServletResponse父接口。

服务器传入的实际也是HttpServletResponse对象。同样可以强制类型转换。
tips:

在filter中同样可以使request转发,或者response重定向。

FilterChain:主要是调用其方法 doFilter(request,response)
如果存在下一个filter,则直接调用下一个filter,如果不存在,则直接访问资源。

servlet过滤器(Filter)相关推荐

  1. Java web—Servlet过滤器(Filter)

    前言:         过滤器是Servlet中一个非常重要的组成部分,进行WEB开发时无不用到过滤器:因此这篇blog来单独总结下关于过滤器的知识点. 一.首先来了解一下什么是过滤器: 下面这句话引 ...

  2. Servlet过滤器Filter和监听器

    一.Servlet过滤器的概念: *********************************************************************************** ...

  3. Servlet过滤器Filter

    Servlet Filter 又称 Servlet 过滤器,它是在 Servlet 2.3 规范中定义的,能够对 Servlet 容器传给 Web 资源的 request 对象和 response 对 ...

  4. Java学习路线-49:Servlet过滤器Filter

    课时1 过滤器的入门 JavaWeb三大组件 1.都需要在web.xml中进行配置 Servlet Filter Listener 2.过滤器 会在一组资源(jsp, servlet, css, ht ...

  5. java过滤器应用实例_Servlet过滤器Filter的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Servlet过滤器Filter的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 特点 1)Filter是依赖于Servlet容器,属 ...

  6. SpringBoot定义三大组件Servlet,过滤器Filter,监听器Listener

    SpringBoot定义三大组件Servlet,过滤器Filter,监听器Listener 1.定义组件的配置类: com.example.mybatis2018.config.MyServletCo ...

  7. Javaweb核心之servlet规范过滤器-----Filter

    2 Servlet规范中的过滤器-Filter 2.1 过滤器入门 2.1.1 过滤器概念及作用 过滤器--Filter,它是JavaWeb三大组件之一.另外两个是Servlet和Listener. ...

  8. 文章本天成|跟我一起来一场简洁易懂的servlet的过滤器Filter的学习吧

    filter的前身今生 0.fiter是什么 1.filter有啥用 2.filter在哪里 3.filter做了啥 4.filter代码实现 4.1 依赖包 4.2 代码 4.2.1 MyFirst ...

  9. Servlet 3.0 @WebFilter注解过滤器Filter使用(如何设置多个参数的方法)

    因为在网上搜寻半天发现没有关于@WebFilter注解如何设置多个参数的方法,参考其他博主的文章和自己的实践,写下此笔记,供大家参考 Servlet3.0提供@WebFilter注解将一个实现了jav ...

  10. Servlet过滤器(Filter)不过滤登录页面、JS和CSS文件

    Servlet过滤器主要用于对客户端(浏览器)的请求进行过滤处理,先将过滤后的请求转交给下一资源,它在Java Web开发中具有十分重要的作用.Servlet过滤器可以用于验证用户的登录情况,但在实际 ...

最新文章

  1. Quartz.Net 调度框架配置介绍
  2. 扎克伯格All in元宇宙,公司更名Meta,「脸」不要了
  3. [LUOGU] P4342 [IOI1998]Polygon
  4. linux云管理,教程|云帮手部署Linux公有云管理系统
  5. bootstrap-validator 验证一个标签同时验证另一个指定标签
  6. 用户账号管理基本概念
  7. 范例 在 Setting 里加入 HiApk Settings 选项
  8. TCP的带宽估计和丢包恢复
  9. 字符串char与string转换
  10. 计算机病毒正确探讨目录,毕业论文-计算机病毒的正确防御探讨.doc
  11. 如何解压.bz2文件包
  12. U盘量产大致研究思路
  13. 中国知网论文free下载的方法
  14. 抖音上很火的 立方体相册和旋转时钟,基于人脸识别实现程序员的专属相册和专属时钟,包含15套相册模板和9套时钟风格,可以直接替换成自己的图片,部署生成自己的个性化专属相册
  15. QQ快速登录协议的分析与漏洞利用
  16. git报错 failed: The TLS connection was non-properly terminated
  17. 弹出表情气泡仿魔兽的技能冷效果却实现
  18. (要更新)SRAM、DRAM、SDRAM、DDR异同
  19. css特效之openbox
  20. 从Excel导出宕机到初学Apache POI

热门文章

  1. Vnc安装rhel6服务器
  2. iptables调试的小窍门 之前没想到啊 从抚琴煮酒那看的
  3. .NET 4.0中的泛型协变和反变
  4. SwiftTour基础学习(五)控制流
  5. 【DevOps】做个愉快的DevOps之XenServer自动化管理(1)
  6. android 生成签名和SHA1签名信息
  7. ajax前台值传到后台
  8. 【驱动】linux设备驱动·字符设备驱动开发
  9. Randomized Cuts for 3D Mesh Analysis (SIGGRAPH Asia 08)
  10. Zabbix 监控网站的访问量