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. android MVP模式简单介绍

    原文 http://zhengxiaopeng.com/2015/02/06/Android%E4%B8%AD%E7%9A%84MVP/ 前言 MVP作为一种MVC的演化版本在Android开发中受到 ...

  2. 从头开始学eShopOnContainers——设置WebSPA单页应用程序

    一.简介 Web SPA单页应用程序需要一些额外的步骤才能使其工作,因为它需要在生成Docker镜像之前构建JavaScript框架依赖项和JS代码. 二.安装基础环境 1.安装NPM 为了能够使用n ...

  3. JMeter的使用——ApacheJMeterTemporaryRootCA.crt的用法

    在使用JMeter的时候,启动HTTP代理服务器弹出的那个提示框一直不知道是什么意思,刚刚弄明白了,在JMeter2.1之后,通过JMeter的代理服务器来访问https安全连接的网页的时候,浏览器会 ...

  4. 「POJ 2699」The Maximum Number of Strong Kings

    题目链接 戳我 \(Describe\) 一场联赛可以表示成一个完全图,点表示参赛选手,任意两点u, v之间有且仅有一条有向边\((u, v)\)或\((v, u)\),表示\(u\)打败\(v\)或 ...

  5. java 列表与集合总结

    列表与集合 (一切输出都用for each!丢弃迭代器) 列表List 1 顺序表 Arraylist  适用于静态查找2   链式双向表 Linkedlist 适用于增删该查3 (容器) Vecto ...

  6. 2018数学建模国赛总结(A题/编程选手视角)

    2018数学建模已经告一段落了,先说说基本情况吧,我们队伍专业分别为:金融(A),会计(B),计算机(我),配置还算可以,他们俩会数据分析软件也会写论文,我可以写代码,画图.他们俩打过美赛(M奖),我 ...

  7. 【大数据系统架构师】0.3 MySQL数据库

    1. MySQL的基本操作 2. SQL语句 3. 高级查询 1)聚合函数.分组查询 2)联合查询.连接查询 3)子查询 4. 高级应用 1)视图与索引 2)数据可视化管理 5. 使用JDBC操作数据 ...

  8. WPF 仿IPhone滑块开关 样式 - CheckBox

    原文:WPF 仿IPhone滑块开关 样式 - CheckBox <Style x:Key="CheckRadioFocusVisual"> <Setter Pr ...

  9. Haproxy配置之URL重写,支持websocket

    配置文件位置:/etc/haproxy/haproxy.cfg Reqrep 正则重写 配置详情: Frontend App *: acl uri_api path_beg /api/ acl uri ...

  10. 浏览器端 禁止 html 使用后退 或者替换后退功能..

    知乎大佬的代码: 作者:独夜行 链接:https://www.zhihu.com/question/40511430/answer/166467343 来源:知乎 著作权归作者所有.商业转载请联系作者 ...