12--过滤器

不得不说过滤器了,在Web安全中,过滤器也是一个重要的环节。其实过滤器本质就是一个Servlet,当然你可以认为它本身就是一个组件。它所处的位置是在请求到达Servlet的中间位置,等于它是Servlet的之前的一道屏障,负责截获请求或处理请求,在Servlet响应发给客户之前过滤器也可以处理响应。过滤器的部署都是在部署文件(Web.xml)实现的。对于Servlet而言,它是不知道在客户与它请求中间会有过滤器存在的,所以对于它而言该干什么就干什么。过滤器的功能和Servlet一样,分为请求处理,和相应。过滤器的处理请求作用可以分为三种:对请求进行安全检查,可以根据实际情况格式化请求体,当然最为重要的用途是建立请求审计或者是日志。响应的过滤器一般可以追加或修改响应消息,也可以创建一个不同的响应消息。接受和相应消息的过滤器都是实现同一个接口Filter。所以对于容器而言,只要实现了Filter接口的都属于过滤器的范畴。

让我们看一看过滤器的生命周期吧!过滤器接口中三个方法,基本概括了过滤器的生命周期:inti(),doFilter(),destroy()。先说说init()方法,这是过滤器的初始化工作,init参数是一个FilterConfig对象的引用。过滤器的初始化,其实是在容器初始化的过程中完成的。而真正起到过滤的动作则是在doFilter中完成的,在这里面是三个参数ServletRequest,ServletResponse,FilterChain。FilterChain从名字上来讲是一个过滤责任链,它能够把前后不同的过滤器关联在一起。容器会按照部署文件定义过滤器的方法依次调用过滤器的方法,而这个就是靠FilterChain方法来实现的。这种方式其实是按照设计模式中责任链模式构建而成的:

过滤器接受请求并响应对象。然后过调用滤器方法会检查请求对象,并决定将该请求转发给链中的下一个组件,或者中止该请求并直接向客户端返回一个响应。如果请求被转发了,它将被传递给链中的下一个资源。在这个请求设法通过过滤器链并被服务器处理之后,一个响应将以相反的顺序通过该链发送回去。这样就给每个过滤器都提供了根据需要处理响应对象的机会。真正的实现如下:1)声明过滤器,这个是在<filter>标签定义的。2)声明对应URL模式的过滤器映射 3)声明对应Servlet的过滤器映射。之后许多框架和模式都是自己的过滤器方式,但是追求源头都是出之同一个原理。有些方式虽然不一样,但大多同出一体。

关于Servlet的单元就告一段罗!下一个单元我将在Servlet基础上展开那就是JSP!

(未完待续......)

熬之滴水穿石:Servlet--Web万物之源(8)相关推荐

  1. 熬之滴水穿石:Servlet--Web万物之源(1)

                                  25--认识Web容器 03年转到JAVA开发,开始编写基于企业内网的WEB应用.那时候对于JAVA这门语言还是感觉不难,对于WEB应用的开 ...

  2. 基于java web servlet生鲜商城管理系统源码含报告文档

    (一)目的 电子商务的迅速兴起,网上购物也为人们的生活提供了极大的便利,不受时间和空间的限制.商城系统的兴起,扩大了消费市场的空间,对于大型企业来说,建设商城系统是正确的选择,不仅要扩大销售渠道,而且 ...

  3. 【Web入门项目源码分享】Java+Jsp

    Web入门项目源码分享--记账本 这篇文章分享一个Web项目--记账本,编码语言:Java+Jsp . 资源链接:https://download.csdn.net/download/zsdoudou ...

  4. ssh+mysql实现的Java web论坛系统源码

    今天给大家来演示一下一款有spring+struts2+hibernate+mysql实现的Java web论坛系统源码,本系统功能类似与csdn论坛,用户发帖时可以设置积分,当结帖时可以选择给评论的 ...

  5. 不同版本(2.3,2.4,2.5,3.0)的Servlet web.xml 头信息

    不同版本(2.3,2.4,2.5,3.0)的Servlet web.xml 头信息 学习了:https://blog.csdn.net/z69183787/article/details/360080 ...

  6. servlet——web应用中路径问题

    servlet--web应用中路径问题 target.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//E ...

  7. java mongodb_MongoDB Java Servlet Web应用程序示例教程

    java mongodb Welcome to MongoDB Web Application example. Earlier in MongoDB Java Example we learned ...

  8. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个扁平化风格css螃蟹图形~~适合初学者~超简单~ |前端开发|IT软件

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3+JavaScript制作一个扁平化风格css螃蟹图形~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <! ...

  9. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个复古手机键盘(带声音)的动画效果~~适合初学者~超简单~

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个复古手机键盘(带声音)的动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE ...

最新文章

  1. Y15BeTa蜂鸣器唱歌程序-演奏版
  2. 全栈工程师15年经验分享:40个改变编程技能的小技巧
  3. PCB模拟地和数字地的处理
  4. 【数据结构与算法】之深入解析“二叉搜索树中的插入操作”的求解思路与算法示例
  5. [置顶]       编写自己的JQUERY插件
  6. 3. $()下的常用方法
  7. ELSE 技术周刊(2017.11.27期)
  8. android横竖屏切换布局闪退,Android-Activity横竖屏切换不杀死Activity 并监听横竖屏切换...
  9. 图解 Redis丨这就是 RDB 快照,能记录实际数据的
  10. 未能找到存储过程sp__sp_WhoIsActive存储过程概述
  11. 找不到元数据文件“ .dll”
  12. 最新圣思园经典Java培训教学全套
  13. 6.4 利用色彩范围命令快速选择一定色彩范围内的像素 [原创Ps教程]
  14. 道与术丨华为云数据库战略启示录
  15. 处理png图片为透明
  16. IEEE免费论文下载
  17. MySQL 学习篇(四)数据库结构设计目的、基本字段类型介绍和实战内容
  18. 文件操作——打开关闭、顺序读写、随机读写
  19. 本地管理多个git账号
  20. 轻松一下,做一道题目吧

热门文章

  1. Element ui —— dialog 弹窗 设置点击空白处不关闭
  2. java crm 进销存 springmvc SSM 项目 系统
  3. 实现全选或者多选删除
  4. PAT 1069.微博转发抽奖
  5. 用U盘制作CentOS系统启动盘
  6. 手机百度浏览器底部fixed悬浮框屏蔽问题,终极解决方案
  7. html 重复一百次 代码,重复一百次
  8. E03.03 A ‘Masculinity Crisis’? China Says the Boys Are Not All Right
  9. LaTeX插入GIF的标准方法
  10. 史上最通俗易懂的ASM教程