java nodefilter类,Java Servlet Filter过滤器概述
Java Servlet Filter过滤器概述
Filter是Servlet的过滤器,是Servlet 2.3规范中新增加的一个功能,主要用于完成一些通用的操作,如编码的过滤、判断用户的登录状态等。
在现实生活中,人们可以使用污水净化设备对水源进行过滤净化。同样,在程序中人们也可以使用 Filter 对请求和响应信息进行过滤。
Filter 被称为过滤器,其主要作用是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊功能。Filter 在 Web 应用中的拦截过程如图 1 所示。
图 1 Filter拦截过程
在图 1 中,当用户通过浏览器访问服务器中的目标资源时,首先会被 Filter 拦截,在 Filter 中进行预处理操作,然后再将请求转发给目标资源。当服务器接收到这个请求后会对其进行响应,在服务器处理响应的过程中,也需要将响应结果经过滤器处理后,才发送给客户端。
本质上,Filter 过滤器就是一个实现了 javax.servlet.Filter 接口的类,在 javax.servlet.Filter 接口中定义了三个方法,如表 1 所示。
表 1 Filter 接口中的方法
方法声明
功能描述
init(FilterConfig filterConfig)
方法用于初始化过滤器,开发人员可以在 init() 方法中完成与构造方法类似的初始化功能,如果初始化代码中要使用到 FillerConfig 对象,那么,这些初始化代码就只能在 Filler 的 init() 方法中编写,而不能在构造方法中编写
doFilter(ServletRequest request,SeivletResponse response, FilterChain chain)
doFilter()方法有多个参数,其中,参数 request 和 response 为 Web 服务器或 Filter 链中的上一个 Filter 传递过来的请求和响应对象;
参数 chain 代表当前 Filter 链的对象,只有在当前 Filter 对象中的 doFilter() 方法内部需要调用 FilterChain 对象的 doFilter() 方法,才能把请求交付给 Filter 链中的下一个 Filter 或者目标程序处理
destroy()
destroy()方法在 Web 服务器卸载 Filter 对象之前被调用,该方法用于释放被 Filter 对象打开的资源,例如关闭数据库和 I/O 流
表 1 中的三个方法都是可以表现 Filter 生命周期的方法,其中 init() 方法在 Web 应用程序加载时会被调用,destroy() 方法在 Web 应用程序卸载(或关闭)时被调用,这两个方法都只会被调用一次,而 doFilter() 方法会被调用多次(只要客户端有请求时就会被调用),Filter 所有的工作集中在 doFilter() 方法中。
java nodefilter类,Java Servlet Filter过滤器概述相关推荐
- java.lang.ClassNotFoundException: javax.servlet.Filter
java.lang.ClassNotFoundException: javax.servlet.Filter:有两个原因:(1)在maven中的作用域,不能是provided,需要是compile就是 ...
- Java SubList 类 Java subList方法 Java ArrayList$SubList 方法特点 SubList 用法
Java SubList 类 Java subList方法 Java ArrayList$SubList 方法特点 SubList 用法 一.概述 在java集合中,常用ArrayList类中,若需要 ...
- Java文件类– java.io.File
Java File class is at the center of Java IO operations. Java File类是Java IO操作的中心. Java文件类 (Java File ...
- java web三大组件之filter过滤器
过滤器是java web中相当重要的组成成分,是JavaWeb三大组件之一,它与Servlet很相似.不过过滤器有以下三条特性: 过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个Servle ...
- java 正则 pattern 线程安全_(一)Java Pattern类----java正则
记下一些知识..... Java Pattern类 Pattern在java.util.regex包中,是正则表达式的编译表示形式,此类的实例是不可变的,可供多个并发线程安全使用. 定义 public ...
- Java常用类——Java教案(六)
文章目录 1. 与用户互动 Java程序入口 键盘录入 字符串录入 long类型录入 读取文件 next和nextline的区别 nextline使用时,自动跳过的问题. 2. 系统相关 System ...
- java工具类-java实现 生成圆头像
1.创建RoundHeadImgUtils工具类 package com.mrd.utils;import javax.imageio.ImageIO; import java.awt.*; impo ...
- java工具类-java仿微信九宫格头像
创建Utils类 ImageUtil package com.mrd.utils;import javax.imageio.ImageIO; import java.awt.Color; import ...
- java scanner 教程,Java Scanner 类 - Java 入门教程
一直以来,我们都使用 System.out.println() 方法向屏幕打印内容,那么如何接收输入的内容呢?本小节所学习的 Scanner 类就可以实现对输入内容的接收.在本小节,我们将学习 Sca ...
最新文章
- P2642 双子序列最大和(线性DP)(最大子段和 + 合唱队列)
- C# winform版 nbtstat
- COGS-930-找第k小的数-HNOI2012-主席树
- LVS(8)——tcpdump查看数据包到底如何传递
- Linux-Android启动之Machine-Init函数
- 在线普通话转粤语发音_香港最新悬疑侦探剧福尔摩师奶,粤语知识好难
- 你不懂js系列学习笔记-异步与性能- 02
- (蓝桥杯)2018JAVA B组 日志分析
- [转]如何设置win7一直以管理员身份运行
- 班扎古鲁白玛的沉默(见与不见)
- idea 包存在提示不存在
- 一种解决各种 macos unlocker 无法下载 Darwin.iso 的方法
- python画满天星_跟我学解Python题-海龟制图满天星
- 常见系统故障修复(二)——修复GRUB引导故障
- (专升本)PowerPnt(幻灯片放映、演示文稿放映)
- windows server2012软路由
- Google入股百度!
- GridView控件 Image控件 与图片的二进制数据库存储和显示
- C#怎么修改生成的EXE文件图标
- Pandas数据分析实战1——淘宝粽子行业分析
热门文章
- JavaScript 基础(十三):Window对象
- Ansible 起步指南
- Tomcat软连接访问配置(symbol link)
- SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析
- 选择用户-显示已选用户
- gem install 和 bundle 区别
- UNDO 表空间管理
- jsp与php学哪个2015年,PHP和jsp哪个好学呢?
- 怎么让打印出来表格的纸下面显示页数_4个使用频率较高的Excel打印技巧,办公室打印文件时常常会用到!...
- vuejs页面跳转_【Vue 学习】 VueJS 生命周期