javaWeb系列之十六(过滤器)



1.过滤器的概述和入门案例

发送请求到目标资源,在请求道目标资源之前进行过滤。

在javaweb中的三大主件:servlet,监听器,过滤器

2.实现过滤器的方式

servlet和监听器都是实现响应的接口

实现过滤器,也是实现一个接口,Filter

在web.xml中进行配置,让服务器知道这不是普通的类(和监听器一样)

在这个包里面import javax.servlet.Filter;

filter-name:过滤器名称,不一定是类名,/*:表示过滤所有

<filter>

<filter-name>testFilter1</filter-name>

<filter-class>cn.itcast.filter.TestFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>testFilter1</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

访问项目里面的jsp,过滤器启动了,过滤了,可是没有放行,可是没有显示,所以页面是空白的。

chain.doFilter(request, response);做的就是放行。

2.FilterChain对象

1.是一个接口,在javax.servlet包里面

doFilter(ServletRequest request, ServletResponse response)

2.放行操作

过滤链:可以多次过滤,其实就是多个过滤器,

3.过滤器的生命周期

servlet的生命周期:init方法:在servlet在第一次访问的时候创建,service方法请求一次执行一次执行多次,destory方法:servlet销毁的时候执行一次

init():过滤器创建的时候执行,服务器启动的时候创建的,执行一次

doFilter():过滤器执行到匹配的过滤路径的时候,会执行多次

destory():服务器关闭的时候,销毁执行

4.FilterConfig对象的介绍

和servlet里面的ServletConfig比较相似,获取初始化参数,获取当前servlet名称,获取servletContext对象

在servlet标签下配置:<init-param><param-name></param-value></init-param>

servletConfig对象,

第一个获取过滤器的名称,getFilterName()

获取初始化参数,getInitParameter():根据初始化参数的值 Enumeration<java.lang.>

获取servletContext对象,getServletContext()

5.过滤器的配置

关于<url-pattern>的配置:有三种:

第一种:完全路径匹配

第二种:目录匹配,比如/*,所有的路径都能匹配到

第三种:扩展名配置

在过滤器里面还有其他的一些配置都是在filter-mapping里面设置

只过滤一个servlet

<filter-mapping><servlet-name></servlet-name></filter-mapping>

第二个<dispatcher>

REQUEST:默认情况下的值

FORWARD:过滤转发的操作。

INCLUDE:过滤包含

ERROR:过滤错误

如果在web.xml中配置了多个过滤器,都会执行,多个过滤的执行顺序,和我们的filter-mapping的配置顺序有关系,

关闭浏览器不会消除session,而是因为cookie没有了,没法找到他。

案例一:统一网站字符集编码过滤器

案例二:登录

时间: 2024-10-16 10:41:00

javaWeb系列之十六(过滤器)的相关文章

quick-cocos2d-x 学习系列之十六 塔防完结

quick-cocos2d-x 学习系列之十六 塔防完结 1.  math2d.lua文件 该文件实现了常用的数学函数. Dist函数实现两点的距离. radians4point求两点的夹角(弧度) pointAtCircle求圆上一个点的位置 pointAtLineToPoint求线段上与指定点距离最近的点 degrees2radians角度转换为弧度 radians2degrees弧度转换为角度 2.  utils.lua文件 2.1         drawCircle 返回newCirc

C++语言笔记系列之十六——赋值兼容规则&amp;多继承的二义性

1.赋值兼容规则 (1)派生类对象可以给基类对象赋值,这种情况下派生类对象将从基类继承的成员的值赋值给一个基类对象:但是不允许将一个基类的对象赋值给一个派生类. (2)可以将派生类对象的地址赋给基类指针,使基类指针指向派生类对象,通过基类指针引用成员时只可以引用派生类从基类继承而来的成员,而不允许引用派生类的新成员. (3)引用与指针相同. 2.多继承 (1)一个派生类从两个以上的基类中去继承. (2)说明: class 派生类名:继承方式 基类1, 继承方式 基类2,...... {派生类成员

Unity3D脚本中文系列教程(十六)

Unity3D脚本中文系列教程(十五) ◆ function OnPostprocessAudio (clip:AudioClip):void 描述:◆  function OnPostprocessGameObjectWithUserProperties (root : GameObject, propNames : string[], values : object[]) : void 描述:在导入文件时,为每个至少附加了一个用户属性的游戏物体调用propNames是一个string[ ],

Java 设计模式系列(十六)观察者模式(Observer)

Java 设计模式系列(十六)观察者模式(Observer) 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependents)模式. 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 一.观察者模式的结构 Subject:目标对象,通常具有如下功能:

jQuery-1.9.1源码分析系列(十六)ajax——ajax处理流程以及核心函数

先来看一看jQuery的ajax核心处理流程($.ajax) a. ajax( [url,] options )执行流程 第一步,为传递的参数做适配.url可以包含在options中 //传递的参数只是一个对象 if ( typeof url === "object" ) { options = url; url = undefined; } //options强制转成对象 options = options || {}; 第二步,创建一些变量,比较重要的是:创建最终选项对象s.全局事

Office 365系列之十六:配置Outlook POP3方式连接Exchange Online

1.  前提条件 1.1  确保已经创建并启用用户的邮箱,关于如何创建用户请参考黄锦辉专栏 Office 365系列之五:创建新用户 http://stephen1991.blog.51cto.com/8959108/1597912 Office 365 系列之六:通过管理中心批量导入用户 http://stephen1991.blog.51cto.com/8959108/1605202 Office 365系列之十一:使用Windows PowerShell 批量导入用户 http://ste

单片机小白学步系列(十六) 单片机/计算机系统概述:模块化思想

截至目前,单片机入门篇的介绍就告一段落了.从本文开始将进入思想篇的学习. 思想篇对后面的具体知识学习进行整体的框架介绍,解释一些基础名词,以及对学习思想方法进行总结.思想篇的内容,对于后面的学习有很大的指导作用,尤其是模块化思想将会贯穿整个学习篇的知识体系.思想篇并不仅限于接下来的几篇文章,还会在学习篇中通过话题的形式穿插讲解. 阅读建议:如果还没有涉及到实践,阅读时不一定能对思想方法有深刻的认识,看的时候有个大致的认识就可以了.在具体实践的时候,可以根据需要再回来看一看. ==========

[C# 基础知识系列]专题十六:Linq介绍

转自http://www.cnblogs.com/zhili/archive/2012/12/24/Linq.html 本专题概要: Linq是什么 使用Linq的好处在哪里 Linq的实际操作例子——使用Linq遍历文件目录 小结 引言: 终于到了C# 3中最重要特性的介绍了,可以说之前所有介绍的特性都是为了Linq而做准备的,然而要想深入理解Linq并不是这个专题可以介绍完的,所以我打算这个专题将对Linq做一个简单的介绍,对于Linq的深入理解我将会后面单独作为一个系列要和大家分享下. 一

Spark 系列(十六)—— Spark Streaming 整合 Kafka

一.版本说明 Spark 针对 Kafka 的不同版本,提供了两套整合方案:spark-streaming-kafka-0-8 和 spark-streaming-kafka-0-10,其主要区别如下: spark-streaming-kafka-0-8 spark-streaming-kafka-0-10 Kafka 版本 0.8.2.1 or higher 0.10.0 or higher AP 状态 Deprecated从 Spark 2.3.0 版本开始,Kafka 0.8 支持已被弃用