filter 靜態資源

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;
    }

}

配置文件css

<?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>
相關文章
相關標籤/搜索