Filter概述

Filter意为滤镜或者过滤器,用于在Servlet之外对request或者response进行修改。Filter提出滤镜链的概念,一个FilterChain包括多外Filter。客户端请求request在抵达Servlet之前会经过FilterChain里的所有Filter,服务器响应response在从Servlet抵达客户端浏览器之前会经过FilterChain里的所有Filter。Filter处理过程如下:

Filter像是客户端浏览器与服务器端之间的一层滤网。

Filter接口

一个Filter必须实现javax.servlet.Filter接口。

public class MyFilter implements Filter {

public void init(FilterConfig config) throws ServletException{}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOExcepton, ServletException{

System.out.println(“request被处理之前…”);

chain.doFilter(request, response);

System.out.println(“request被处理之后,response抵达客户端浏览器之前……”)

}

public void destroy() {}

}

注:chain.doFilter(request, response)将request递交给FilterChain中的下一个Filter,如果所有Filter都走完了则交给Servlet。

Filter配置

配置到达servlet的方式,有4种取值:REQUEST、FORWORD、INCLUDE、ERROR。如果没配置默认为REQUEST。

Filter经典案例

Filter可以处理如:权限验证、日志记录、数据压缩、数据加密、格式转换、图像处理等工作。

防盗链Filter(其它网端访问本站图片,将会显示错误图片)

字符编码Filte(这个只处理POST提交请求的编码)

对于GET请求还需要修改Tomcat的/conf/server.xml

添加URIEncoding=”UTF-8”

日志记录Filter(日志可拆卸)

异常捕捉异常Filter

如果在chain.doFilter(request, response)上加上try…catch语句,就能捕捉Servlet中抛出的可预料的与不可预料的异常,然后根据不同异常进行不同异常处理。

权限验证Filter

Java Web程序一般使用session或者cookie来记录用户是否登录,以及该用户的权限。

内容替换Filter

GZIP压缩Filter

图像水印Filter

缓存Filter

XSLT转换Filter

Filter是一种很有弹性的机制,功能很强大,而且与servlet、JSP等没有任何耦合,可自由拆卸。Filter是现在流行的AOP(Aspect Orainted Programming,面向切面编程)思想的一种体现。

喜欢 (0)or分享 (0)

java web压缩过滤器_Java Web过滤器Filter(五)相关推荐

  1. java web 监听器 例子_Java web技术应用---监听器

    监听器的定义 (专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生变化时,立即采取相应的行动) 定义:Servlet规范中定义的一种特殊的类,用于监听Servlet ...

  2. java web项目测试_java web项目怎么测试?

    慕仰1329654 java web项目测试用Web的测试工具,如HtmlUnit,JWebUnit等.main()方法就可以测试,在main方法中获得connection对象将他输出就可以了.如果正 ...

  3. java web 许令波_Java Web——Web概述

    已经很久没有更新博客了,过年忙着吃喝玩乐,就怠惰了一小下下?幸好这学期新开的课程都比较有趣--Java Web和Android.至少对于我自己来说,既充满挑战,又富有趣味. --[1.Web概述]-- ...

  4. java 过滤xss脚本_Java Web应用程序的反跨站点脚本(XSS)过滤器

    java 过滤xss脚本 这是为Java Web应用程序编写的一个好简单的反跨站点脚本(XSS)过滤器. 它的基本作用是从请求参数中删除所有可疑字符串,然后将其返回给应用程序. 这是我以前关于该主题的 ...

  5. java设置浏览器缓存_JAVA WEB过滤器设置浏览器缓存

    最近在工作中对一个开源框架进行二次开发,发现在浏览器运行哪些静态资源浏览器是不缓存的,找了好久都没有找到设置的地方,只好自食其力,用Java的过滤器设置过期时间,详情且看代码 public class ...

  6. java css js 合并_java Web程序使用wro4j合并、压缩js、css等静态资源

    在Web项目中,js.css合并压缩,不仅有利于减少Http请求数量.减少宽带资源占用,还能有效的管理各种js.css的引入,使整个项目更加有序.而对于访问用户来说,其更大的好处是增加了页面的打开速度 ...

  7. java web应用开发_Java Web应用开发基础

    模块1 Java Web应用开发概述 1.1 Web基础知识 1.1.1 Web应用及其开发 1.1.2 动态网页 1.1.3 B/S结构 1.1.4 JSP简介 1.2 创建第一个Web项目 1.2 ...

  8. java 编码过滤器_Java编码过滤器

    Java编码过滤器: package com.utils; import javax.servlet.*; import javax.servlet.http.*; public class Enco ...

  9. java cropper 上传_java web 网站头像上传处理 (springmvc +bootstrap+cropper)

    制作头像上传.请根据您的实际需求,修改代码,不完全正确,仅供参考! 前端页面设计使用bootstrap ,头像预览和剪裁工具使用cropper 后台使用springmvc. 现在来看前端的页面设计 前 ...

最新文章

  1. 「SAP技术」SAP MM 批次管理的物料创建DN时无存储地点就不能输入批次值?
  2. Linux DISPLAY作用
  3. 20145227《信息安全系统设计基础》第一周学习总结
  4. ElasticSearch-Hadoop:从Hadoop到ElasticSearch的产品视图计数索引和客户顶部搜索查询...
  5. 100个经典的C语言算法
  6. vsphere平台windows虚拟机克隆的小插曲(无法登陆系统)
  7. Android Track的play流程(三十二)
  8. 【Jsp】第一课 Jsp网络编程的介绍与入门学习
  9. 温习古文之生于忧患,死于安乐
  10. 支付宝APP支付集成文档
  11. EXCEL生成正态分布随机数据
  12. 金融风控-贷款违约预测项目记录
  13. 数字基带信号及其频谱特性
  14. dependency problems
  15. OSChina 周二乱弹 ——震惊!女友当着男友在大众面前竟和陌生男人做出这事!...
  16. 驾考经历分享——长沙
  17. 每次打开office2010都会出现正在配置,很烦?关掉它!
  18. 如何带领一个项目团队并做好项目总结
  19. Ubuntu 18.04百度拼音输入法突然乱码问题
  20. 互联网和IT行业越来越严峻,前景几何?

热门文章

  1. su一键封面插件_插件分享丨一键制作SU爆炸分析图插件分享
  2. 计算约化重叠积分氟化氢HF
  3. ImportError: cannot import name ‘image‘ from ‘PIL‘ (C:\ProgramData\Anaconda3\lib\site-packages\PIL\_
  4. 2、C语言面试笔试---运算符和表达式
  5. android init.rc语法标准 .
  6. 11.Verilog中如何避免Latch
  7. Leetcode PHP题解--D16 922. Sort Array By Parity II
  8. spring cloud config将配置存储在数据库中 1
  9. 架构漫谈(二):认识概念是理解架构的基础
  10. Oracle序列使用:建立、删除