熬之滴水穿石:Servlet--Web万物之源(8)
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)相关推荐
- 熬之滴水穿石:Servlet--Web万物之源(1)
25--认识Web容器 03年转到JAVA开发,开始编写基于企业内网的WEB应用.那时候对于JAVA这门语言还是感觉不难,对于WEB应用的开 ...
- 基于java web servlet生鲜商城管理系统源码含报告文档
(一)目的 电子商务的迅速兴起,网上购物也为人们的生活提供了极大的便利,不受时间和空间的限制.商城系统的兴起,扩大了消费市场的空间,对于大型企业来说,建设商城系统是正确的选择,不仅要扩大销售渠道,而且 ...
- 【Web入门项目源码分享】Java+Jsp
Web入门项目源码分享--记账本 这篇文章分享一个Web项目--记账本,编码语言:Java+Jsp . 资源链接:https://download.csdn.net/download/zsdoudou ...
- ssh+mysql实现的Java web论坛系统源码
今天给大家来演示一下一款有spring+struts2+hibernate+mysql实现的Java web论坛系统源码,本系统功能类似与csdn论坛,用户发帖时可以设置积分,当结帖时可以选择给评论的 ...
- 不同版本(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 ...
- servlet——web应用中路径问题
servlet--web应用中路径问题 target.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//E ...
- java mongodb_MongoDB Java Servlet Web应用程序示例教程
java mongodb Welcome to MongoDB Web Application example. Earlier in MongoDB Java Example we learned ...
- 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个扁平化风格css螃蟹图形~~适合初学者~超简单~ |前端开发|IT软件
b站视频演示效果: [web前端特效源码]使用HTML5+CSS3+JavaScript制作一个扁平化风格css螃蟹图形~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <! ...
- 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个复古手机键盘(带声音)的动画效果~~适合初学者~超简单~
b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个复古手机键盘(带声音)的动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE ...
最新文章
- Y15BeTa蜂鸣器唱歌程序-演奏版
- 全栈工程师15年经验分享:40个改变编程技能的小技巧
- PCB模拟地和数字地的处理
- 【数据结构与算法】之深入解析“二叉搜索树中的插入操作”的求解思路与算法示例
- [置顶] 编写自己的JQUERY插件
- 3. $()下的常用方法
- ELSE 技术周刊(2017.11.27期)
- android横竖屏切换布局闪退,Android-Activity横竖屏切换不杀死Activity 并监听横竖屏切换...
- 图解 Redis丨这就是 RDB 快照,能记录实际数据的
- 未能找到存储过程sp__sp_WhoIsActive存储过程概述
- 找不到元数据文件“ .dll”
- 最新圣思园经典Java培训教学全套
- 6.4 利用色彩范围命令快速选择一定色彩范围内的像素 [原创Ps教程]
- 道与术丨华为云数据库战略启示录
- 处理png图片为透明
- IEEE免费论文下载
- MySQL 学习篇(四)数据库结构设计目的、基本字段类型介绍和实战内容
- 文件操作——打开关闭、顺序读写、随机读写
- 本地管理多个git账号
- 轻松一下,做一道题目吧
热门文章
- Element ui —— dialog 弹窗 设置点击空白处不关闭
- java crm 进销存 springmvc SSM 项目 系统
- 实现全选或者多选删除
- PAT 1069.微博转发抽奖
- 用U盘制作CentOS系统启动盘
- 手机百度浏览器底部fixed悬浮框屏蔽问题,终极解决方案
- html 重复一百次 代码,重复一百次
- E03.03 A ‘Masculinity Crisis’? China Says the Boys Are Not All Right
- LaTeX插入GIF的标准方法
- 史上最通俗易懂的ASM教程