JavaWeb学习之Filter

Filter也即是过滤器,是javax.sevlet.Filter下的。Filter是处于服务端的,在服务端与web资源之间起到一个过滤的作用。

在进行服务请求的过程中,如果filter没有满足特定的需求,那么可以不请求到Servlet,而是直接返回。

配置filter:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <filter>
        <filter-name>myfilter</filter-name>
        <filter-class>cn.itcast.filter.MyFilterTest</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>myfilter</filter-name>
        <!-- url-pattern 代表的是当前Filter要过滤的路径 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>

类只要实现javax.servlet.Filter接口就可以进行filter的开发,在web.xml文件中进行配置,通知web服务需要过滤的资源。如果访问了Filter后想要继续访问web资源,那么需要调用FilterChain对象的doFilter方法。

Filter链—多个Filter的集合叫做Filter链,web应用中可以存在多个Filter;多个Filter执行的顺序与其在web.xml中的<filter-mapping>中的声明顺序有关,先声明的先执行。

Filter的生命周期
方法执行顺序—

  • 1.执行无参构造方法、
  • 2.init()方法 (加载时被执行)
  • 3.web请求符合url-pattern路径,Filter中的doFilter方法被执行(可执行多次)
  • 4.当重新部署或启动时,destroy会被执行。

在部署时创建和初始化过滤器,只执行一次。
web服务只创建一个实例,是单例的。

Filter工作原理:当部署web应用时,web服务器端解析web.xml,通过反射机制创建Filter实例,执行无参构造,将Filter放置到Filter实例吃当中。

在一个web项目下,有很多的页面,浏览器是有缓存的,对于像html、js、css这些文件如果可以直接将其存在缓存中,在下次访问时就不用访问web资源,可以直接从缓存中取了。

设置不缓存

response.setDataHeader("expires",-1);
response.setHeader("cache-control","no-cache");
response.setHeader("pragma","no-cache");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值