您的位置:首页 > 编程语言 > Java开发

javaWeb系列之十六(过滤器)

2015-06-24 14:13 337 查看

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没有了,没法找到他。

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

案例二:登录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: