1.概念

  • web中的过滤器:当访问服务器资源时,过滤器可以将请求拦截下来,完成一些特殊的功能
  • 过滤器的作用:
    • 一般用于完成通用的操作,如:登录验证,统一编码处理,敏感字符过滤

2.快速入门

1.步骤

  1. 定义一个类,实现接口filter
  2. 复写方法
  3. 配置拦截路径
    1. web.xml
    2. 注解

3.过滤器细节

1.web.xml配置

<filter>
<filter-name>demo1</filter-name>
<filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
</filter>
<filter-mapping>
<filter-name>demo1</filter-name>
<拦截路径>
<url-pattern>/*</url-pattern>
</filter-mapping>

2.过滤器执行流程

  1. 执行过滤器
  2. 执行放行后的资源
  3. 回来执行过滤器放行代码下边的代码

3.过滤器生命周期方法

  1. destroy在服务器关闭后,Filter对象被销毁,如果服务器是正常关闭,则会执行destroy方法
  2. doFilter每一次请求被拦截时执行,执行多次
  3. init在服务器启动后,会创建Filter对象,然后调用init方法,只执行一次,用于加载资源

4.过滤器配置详解

  • 拦截路径配置:

    1. 具体资源路径 /index.jsp 只有访问index.jsp资源时,过滤器才会被访问
    2. 拦截目录 /user/* 访问/user下的所有资源时,过滤器都会被执行
    3. 后缀名拦截 *.jsp/ 访问所有后缀名为jsp资源时,过滤器都会被执行
    4. 拦截所有资源 /* 访问所有资源时,过滤器都会被执行
  • 拦截方式配置:资源被访问的方式
    • 注解配置:

      • 设置dispatcherTypes属性

        1. REQUEST:默认值,浏览器请求资源
        2. FORWARD:转发访问资源
        3. INCLUDE:包含访问资源
        4. ERROR:错误跳转资源
        5. ASYNC:异步访问资源
    • web.xml配置
      • 设置dispatcherTypes = {...}即可

5.过滤器链(配置多个服务器)

  • 执行顺序 过滤器1 过滤器2 执行资源 过滤器2 过滤器1
  • 过滤器先后顺序问题
    • 注解配置:按照类名的字符串比较规则比较,值小的先执行
    • web.xml配置:谁定义在上边,谁先执行
  • 增强对象的功能
    • 设计模式:一些通用的解决固定问题的方式
    • 装饰模式
    • 代理模式
    • 概念
      • 真实对象:被代理的对象
      • 代理对象
      • 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的
    • 实现方式
      • 静态代理
      • 动态代理
      • 实现步骤
        • 代理对象和真实对象实现相同的接口
        • 代理对象=Proxy.newProxyInstance();
        • 使用代理对象调用方法
        • 增强方法
      • 增强方式
      • 增强参数列表
      • 增强返回值类型
      • 增强方法体执行逻辑

Listener:监听器

  • 概念:web的三大组件之一
  • 事件监听机制
    • 事件:一件事情
    • 事件源:事件发生的地方
    • 监听器:一个对象
    • 注册监听:将事件,事件源,监听器绑定在一起,当事件源上发生某个事情后,执行监听器代码
  • ServletContextListener:监听ServletContext对象的创建和销毁
    • void contextDestroyed(ServletContextEvent sce) :ServletContext对象被销毁之前会调用该方法
    • void contextInitialized(ServletContextEvent sce) :ServletContext对象被创建之前会调用该方法

Java-Filter:过滤器请求拦截的更多相关文章

  1. Java Filter过滤器(拦截路径的配置+拦截方式的配置+生命周期+多个过滤器的先后执行顺序)

    Java Filter过滤器+Listen监听器 啥是过滤器 顾名思义即过滤掉一些东西,比如我们经历的高考中考都是过滤器,他过滤掉一些在学习这一方面不是很好的人,而那些成绩好的人则升入高中,大学. 但 ...

  2. Java Filter过滤器的简单总结

    1.Filter的介绍 Filter技术是servlet 2.3新增加的功能.它能够对Servlet容器的请求和响应对象进行检查和修改. Filter本身并不生成请求和响应对象,只是提供过滤功能. F ...

  3. java filter过滤器及责任链设计模式

    什么是Filter? Filter属于sevlet规范,翻译为过滤器. Filter在web开发中有什么作用? 案例一:一个web站点只有用户登录才能继续访问该站点的资源,那么需要用户每次访问都判断是 ...

  4. java web 过滤器跟拦截器的区别和使用

    注:文章整理自知乎大牛以及百度网友(电脑网络分类达人 吕明),特此感谢! 一.过滤器 1.什么是过滤器? 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上.过滤器可附加到一个 ...

  5. Spring Filter过滤器,Spring拦截未登录用户权限限制

    转载自:http://pouyang.iteye.com/blog/695429 实现的功能:判断用户是否已登录,未登录用户禁止访问任何页面或action,自动跳转到登录页面.  比较好的做法是不管什 ...

  6. Java中过滤器和拦截器的区别

    1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖于servlet容器,而拦截器不依赖于servlet容器. 3.拦截器只对action起作用,而过滤器几乎可以对所有请求起 ...

  7. Filter—过滤器和拦截器的区别

    1.首先要明确什么是拦截器.什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加 ...

  8. java Filter过滤器例外URL设置

    在web.xml声明的一个filter中: <!– session过滤filter –> <filter> <filter-name>SessionFilter&l ...

  9. 【Servlet】Java Serlvet Filter 过滤器

    Filter的设计思想Filter是一种AOP(aspect-oriented programming)的设计思想 : 面向切面编程.用于的请求和响应都会走 使用filter的登录案例我们通过一张图片 ...

  10. struts2 过滤器和拦截器的区别和使用

    java web 过滤器和拦截器的区别和使用  1.1 什么是拦截器:      拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然 ...

随机推荐

  1. Unity Visual Scripting 使用随记

    1.Wait Until并不会再执行前面的代码,而是反复执行获取bool变量的代码:需自己拆出来写. 2.yield return null对应Wait For Next Frame,多用这个避免协程 ...

  2. Istio(六):Istio弹性(超时&重试)和故障注入

    目录 一.模块概览 二.系统环境 三.弹性(超时&重试) 3.1 弹性 四.故障注入 4.1 故障注入 五.实战:观察错误注入 5.1 在 Grafana.Zipkin 和 Kiali 中观察 ...

  3. 【C#】做一个winform版本的软考成绩查询软件

    返回的json SWCJ代表 上午的成绩 XWCJ代表下午的成绩.   主要步骤: 1. 获取验证码图片 2. 获取cookie 3. 发送验证验证码请求 4 发送成绩查询请求,并获取返回的json ...

  4. SQL 分析与优化神器,验证了真相定律

    引言 今天要分享的是一个 SQL 语句分析的神器,它是一个基于 Soar 的开源 sql 分析与优化的 Web 图形化工具.我们在平常分析 SQL 语句,使用最多的方式就是 Explain 工具.了解 ...

  5. 基于centos7的企业级ceph集群搭建[nautilus14.22版]

    集群规划 本案例通过ceph-deploy方式部署 主机名 配置 外网IP / 内网IP 角色 系统版本 ceph-node01 磁盘x3 50G 192.168.3.101/24 172.16.1. ...

  6. bpmn.js

    在 BPMN.js 中,$inject 属性通常用于声明依赖注入的模块列表.这些模块会在创建对象实例时由依赖注入框架(如 AngularJS)提供.以下是在 BPMN.js 中常见的一些 $injec ...

  7. jquery的全局函数 多库并存

            // jQuery的全局函数 , 也称钩子函数         // 所谓的钩子函数 是 与 其他函数绑定的函数         // 作用是 监听 函数的执行 当函数执行到某个状态时 ...

  8. 关于朋友圈出现的小米新店广告骗局(非法获取个人消息)木马通过广东政务服务网(tyrz.gd.gov.cn)的url漏洞显示

    前两天在朋友圈突然看到有发 小米新店开业 送千台扫地机器人的 广告,出于天上不会掉馅饼到我身上的原则 我选择忽略了,但是没多久 看到他又晒了个物流订单,于是还是点开看了一下,发现微信打开的网站还蛮正规 ...

  9. IDEA:java: Compilation failed: internal java compiler error

    java: Compilation failed: internal java compiler error 解决方法: 1.打开菜单 ,File - Project Structure - Proj ...

  10. EF MYSQL 出现:输入字符串的格式不正确

    实体类字段和数据库类型不一致. 比如:数据库是char类型字段,程序里声明为int.