package com.itheima.web.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 静态资源要缓存
* @author wangli
*
*/ public class StaticSourceNeededCacheFilter3 implements Filter { private FilterConfig config ;
public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
//1.得到访问资源的类型-------------->就看扩展名--------------->怎么取扩展名????
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp; //2.取到你访问的资源,再取出扩展名
String uri = request.getRequestURI();//取到你访问的资源 /fdsfds/fsdfdsf/aa.html
String extendsionName = uri.substring(uri.lastIndexOf(".")+1);//得到扩展名 //3.得到这个资源的缓存时间
String time="0";
time = config.getInitParameter(extendsionName); //4.设置时期时间
if(time!=null){
response.setDateHeader("Expires",System.currentTimeMillis()+ Integer.parseInt(time)*60*60*1000);//单位:毫秒
}
chain.doFilter(request, response);
} public void init(FilterConfig fConfig) throws ServletException {
this.config = fConfig;
} }

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name></display-name>
<servlet>
<servlet-name>CustomerRegistServlet</servlet-name>
<servlet-class>com.itheima.web.servlet.CustomerRegistServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>UserRegistServlet</servlet-name>
<servlet-class>com.itheima.web.servlet.UserRegistServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CustomerRegistServlet</servlet-name>
<url-pattern>/servlet/CustomerRegistServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>UserRegistServlet</servlet-name>
<url-pattern>/servlet/UserRegistServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<display-name>CharacterEncodingFilter</display-name>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.itheima.web.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
<!-- <dispatcher>REQUEST</dispatcher> 默认类型就是REQUEST -->
</filter-mapping>
<!-- <filter>
<display-name>DynamicSourceNotNeededCacheFilter</display-name>
<filter-name>DynamicSourceNotNeededCacheFilter</filter-name>
<filter-class>com.itheima.web.filter.DynamicSourceNotNeededCacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DynamicSourceNotNeededCacheFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> -->
<filter>
<display-name>StaticSourceNeededCacheFilter3</display-name>
<filter-name>StaticSourceNeededCacheFilter3</filter-name>
<filter-class>com.itheima.web.filter.StaticSourceNeededCacheFilter3</filter-class>
<init-param>
<param-name>js</param-name>
<param-value>1</param-value><!-- hour -->
</init-param>
<init-param>
<param-name>css</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>html</param-name>
<param-value>3</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>StaticSourceNeededCacheFilter3</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>StaticSourceNeededCacheFilter3</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>StaticSourceNeededCacheFilter3</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
</web-app>

filter 静态资源的更多相关文章

  1. 利用 filter 机制 给 静态资源 url 加上时间戳,来防止js和css文件的缓存,利于开发调试

    直接上代码: public class WeiXinFilter implements Filter{ private static Logger logger = LoggerFactory.get ...

  2. 如何在自定义Filter中优雅的实现静态资源放行

            在javaweb开发中,过滤器Filter比较常用于类似登录的拦截等场景.但是,当过滤器的配置不当时就会把所有的请求都拦截,静态资源也会被拦截掉,导致静态页面加载不出来. 一般的解决方 ...

  3. 013-Spring Boot web【二】静态资源、Servlet、Filter、listenter

    一.静态资源 1.1.webapp默认支持静态资源 在src/main/webapp下建立user.html默认支持访问 1.2.默认内置静态资源目录.可被直接访问 查看包:spring-boot-a ...

  4. 解决shiro自定义filter后,ajax登录无法登录,并且无法显示静态资源的问题

    这个问题困扰了我一天,看了下面两个文章,豁然开朗: https://www.cnblogs.com/gj1990/p/8057348.html https://412887952-qq-com.ite ...

  5. Spring Boot整合Servlet,Filter,Listener,访问静态资源

    目录 Spring Boot整合Servlet(两种方式) 第一种方式(通过注解扫描方式完成Servlet组件的注册): 第二种方式(通过方法完成Servlet组件的注册) Springboot整合F ...

  6. spring mvc处理静态资源

    servlet的url映射定义为'/'表示映射全部路径 struts的过滤器是*.action,在spring mvc中设置成*.action或者*.do......也是可以的,但是spring mv ...

  7. spring mvc官网下最新jar搭建框架-静态资源访问处理-注解-自动扫描

    1.从官网下载spring相关jar http://spring.io/projects 点击SPRING FRAMEWORK

  8. 单点登录CAS使用记(五):cas-client不拦截静态资源以及无需登录的请求。

    一.问题在哪? 在配置cas-client中,有这么一段配置: <filter> <filter-name>CAS Filter</filter-name> < ...

  9. springboot 入门八-自定义配置信息(编码、拦截器、静态资源等)

    若想实际自定义相关配置,只需要继承WebMvcConfigurerAdapter.WebMvcConfigurerAdapter定义些空方法用来重写项目需要用到的WebMvcConfigure实现.具 ...

随机推荐

  1. 很棒的git和python学习网站

    很棒的git和python学习网站:http://www.liaoxuefeng.com/ 博主名叫廖雪峰

  2. C#Task学习

    简介: Task 对象是一种的中心思想基于任务的异步模式首次引入.NET Framework 4 中. 因为由执行工作Task对象通常以异步方式执行线程池线程上而不是以同步方式在主应用程序线程中,可以 ...

  3. angular 事件绑定

    <button (click)="onClick($event)">点我</button> import { Component, OnInit } fro ...

  4. 【大数据之数据仓库】GreenPlum PK DeepGreen(TPCH)

    1.背景 一张UML类图可以简单的说明GreenPlum和DeepGreen之间的关系: GreenPlum: 主页:http://greenplum.org/ 源码:开源,https://githu ...

  5. day8学python 各种简单模板

    各种简单模板 内容: 1.shelve模板 存储数据 2.shutil 模板 用作拷贝/删除/压缩文件(使用便捷) 3.hashlib 模板 加密文件 4.re模板 ================= ...

  6. BeanShell Processor_使用Java处理脚本

    版权声明:本文为博主原创文章,未经博主允许不得转载. [try-catch] 建议使用Try----Catch块,这样Java语句出现问题时,日志更清晰: try { //java代码 } catch ...

  7. ubuntu 16.4安装toolsbelt heroku

    https://devcenter.heroku.com/articles/getting-started-with-python#set-up # Run this from your termin ...

  8. 八大排序算法的python实现(七)基数排序

    代码: #coding:utf-8 #author:徐卜灵 import math #print math.ceil(3.2) 向上取整4.0 #print math.floor(3.2) 向下取整3 ...

  9. EL表达式的语法与应用

    EL(是Expression Language的缩写),使用EL对JSP输出进行优化,可以使得页面结构更加清晰,代码可读性高,也更加便于维护. EL表达式的语法: 语法:$(EL 表达式) $  和 ...

  10. Phpstudy+DiscuzX安装详解

    1.下载Discuz,地址:https://gitee.com/ComsenzDiscuz/DiscuzX/repository/archive/master.zip 2.下载phpstudy 3.将 ...