JavaWeb三大组件——过滤器的运行机制理解
过滤器Filter
文章前言:本文侧重实用和理解。
一.过滤器的概念。


- 编写一个类实现Filter接口了。
- 配置Filter
<!-- 配置过滤器 -->
<filter>
<!-- 过滤器名称 -->
<filter-name>FilterDemo1</filter-name>
<!-- 过滤器的类的全路径 -->
<filter-class>cn.itcast.filter.FilterDemo1</filter-class>
</filter> <!-- 配置过滤器映射 -->
<filter-mapping>
<!-- 过滤器名称 -->
<filter-name>FilterDemo1</filter-name>
<!-- 过滤器路径 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
<init-param>元素用于为过滤器指定初始化参数,它的子元素<param-name>指定参数的名字,<param-value>指定参数的值。在过滤器中,可以使用FilterConfig接口对象来访问初始化参数
<url-pattern>标签的配置:
* 完全路径匹配 :以 / 开始的. 如 /aa /bb /aa/bb...
* 目录匹配 :以 / 开始的. 以 * 结束.如 /* /aa/* /aa/bb/*
* 扩展名匹配 :不能以 / 开始的. 如 *.jsp *.do *.action
配置Filter之后,在服务器调用Servlet之前,会自动寻找与自身路径相匹配的过滤器路径,匹配之后,则执行过滤器。无匹配,则直接调用Servlet。
四.过滤器链的概念。
通常客户端对服务器请求之后,服务器调用Servlet之前会执行一组过滤器(多个过滤器),那么这组过滤器就称为一条过滤器链。
每个过滤器实现某个特定的功能,一个过滤器检测多个Servlet。(匹配几个,检测几个)。
一组过滤器中的执行顺序与<filter-mapping>的配置顺序呢有关。
当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。在doFilter方法中,开发人员如果调用了FilterChain对象的doFilter方法,则web服务器会检查FilterChain对象中是否还有filter,如果有,则调用第2个filter,如果没有,则调用目标资源。

在Web容器卸载 Filter 对象之前被调用。

- Filter里面的doFilter是Filter实例的doFilter(request,response)方法。
- 这条责任链的运行次序依次是:代码1,代码3,代码5,Servelt、web资源..,代码6,代码4,代码2;就是因为它的头尾相呼应的机制,所以才叫它责任链。
- 在Filter中,如果你不调用chain.doFilter(request,response)方法,就表示此次请求被拒绝,返回目标路径。
七.获取web.xml文件中Filter的配置信息。
方法的调用对象:
init(FilterConfig filterConfig)方法中的filterConifg对象.
方法:
getFilterName():获得过滤器名称
getInitParameter(String name):获得过滤器的初始化参数
getInitParameterNames():获得过滤器的所有初始化参数的名称
getServletContext():获得ServletContext对象
JavaWeb三大组件——过滤器的运行机制理解的更多相关文章
- JavaWeb三大组件—过滤器filter
JavaWeb三大组件 1. 都需要在web.xml中进行配置ServletListener(2个感知监听器不需要配置)Filter 2. 过滤器 它会在一组资源(jsp.servlet..css.. ...
- Javaweb三大组件-过滤器、监听器
1. 过滤器 [filter] 作用: 对单个获取多个servlet起到增强[advice]的作用. 用于在所有的servlet执行前,做一些预处理.例如:做编码处理, 访问量统计[servletCo ...
- 学习笔记_过滤器概述(过滤器JavaWeb三大组件之一)
过滤器Filter Filter和Lister是Servlet规范里的两个高级特性.不同于Servlet,它们不用于处理客户端请求,只用于对request.response进行修改或者对context ...
- JavaWeb三大组件
一.JavaWeb三大组件 Servlet,Listener,Filter.它们在JavaWeb开发中分别提供不同的功能. JavaWeb三大组件都必须在Web.xml中配置 二.三大组件 1.Ser ...
- JavaWeb三大组件(Servlet、Filter、Listener)
JavaWeb三大组件指的是:Servlet.Filter.Listener,这三个组件在JavaWeb开发中分别提供不同的功能,然而很多人可能只用过其中一个或者两个(Servlet.Filter,比 ...
- JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)
JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference
- 转-JavaWeb三大组件之Listener监听器
JavaWeb三大组件之Listener监听器一.概述1,它是一个接口,内容由我们来实现 2,它需要注册,例如注册在按钮上 3,监听器中的方法,会在特殊事件发生时被调用 二.JavaWeb中的监听器1 ...
- Filter过滤器-JavaWeb三大组件之一
Servlet.Filter.Listener是JavaWeb的三大组件,给Web开发提供了很大的便利. 什么是Filter? Filter,过滤器.类似与生活中的净水器.空气净化器. JavaWeb ...
- 【图解ASP.NET MVC运行机制理解-简易版】
很多盆友咨询ASP.NET MVC的机制.网上也有好多.但是都是相当深奥.看的云里雾里的.我今天抽空,整理个简易版本.把处理流程走一遍. 当然,这个只是处理请求的一部分环节.百度的面试题“客户端从浏览 ...
随机推荐
- apache通过cgi调用exe程序
windows下,使用c写了一个简单的cgi程序,生成exe类型的可执行文件,代码如下: #include<stdio.h> int main() { printf("Conte ...
- iOS 禁止边缘滑动返回
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
- MyBatis持久层框架使用总结
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis . 2 ...
- LeetCode——Copy List with Random Pointer(带random引用的单链表深拷贝)
问题: A linked list is given such that each node contains an additional random pointer which could poi ...
- PPM格式解析
PPM格式其实就是RGB数据加上一个简单的文件头, 文件头部表示了图像的宽度和高度以及最大的RGB值. 文件头+rgb数据: P6\n width height\n 255\n rgbrgb... 其 ...
- CF 337D 求圆交
题目链接:http://codeforces.com/problemset/problem/337/D 题意:就是一棵树上,有一些点被来自东方的神秘力量影响的,力量影响范围是d,为可能的力量源有几个. ...
- Java 实现文件上传、下载、打包、文件copy、文件夹copy。
文件and文件夹copy package org.test; import java.io.*; public class FileCopy { /** * 复制单个文件 * * @param old ...
- 云虚拟主机开源 DedeCMS 安装指南
1. 获取主机 FTP 和 数据库 信息 1.1 FTP 信息 登录主机管理后台,在 站点信息 中获取到 FTP 和 数据库 的账号密码,连接地址. 如下图所示: 如果忘记密码,可以在这里进行 重置密 ...
- Spring+SpringMvc+Mybatis整合注意事项
1.web.xml代码如下 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi ...
- Hadoop生态圈
1.Hadoop是什么? 适合大数据的分布式存储与计算平台 HDFS: Hadoop Distributed File System分布式文件系统 MapReduce:并行计算框架 解决的问题: HD ...