javaWEB总结(31):禁用游览器缓存的过滤器
来源:互联网 发布:商城网站数据库表设计 编辑:程序博客网 时间:2024/04/28 07:07
前提
项目结构
web.xml
<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>javaWeb_31</display-name> <welcome-file-list> <welcome-file>a.jsp</welcome-file> </welcome-file-list></web-app>
a.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>A.jsp</title></head><body><a href="b.jsp">TO B.jsp</a><br><br><img alt="" src="<%=request.getContextPath()%>/img/a.jpg"></body></html>
b.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>B.jsp</title></head><body><a href="a.jsp">TO A.jsp</a><br><br><img alt="" src="<%=request.getContextPath()%>/img/b.jpg"></body></html>
运行结果
当我们修改a.jsp后
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>A.jsp</title></head><body><a href="b.jsp">TO B.jsp</a><br><br><img alt="" src="<%=request.getContextPath()%>/img/b.jpg"></body></html>
图片依旧不变。
添加过滤器
项目结构
修改的页面web.xml
<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>javaWeb_31</display-name> <welcome-file-list> <welcome-file>a.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>Cache</filter-name> <filter-class>com.dao.chu.Cache</filter-class> </filter> <filter-mapping> <filter-name>Cache</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
添加的类
HttpFilter.java
package com.dao.chu;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;/** * * <p> * Title: HttpFilter * </p> * <p> * Description: http请求定制Filter * </p> */public abstract class HttpFilter implements Filter {/** * 用于保存init(FilterConfig filterConfig)的FilterConfig对象 */private FilterConfig filterConfig;/** * 直接返回init(FilterConfig filterConfig)的FilterConfig对象 */public FilterConfig getFilterConfig() {return filterConfig;}/** * 不建议子类直接覆盖,将可能会导致filterConfig成员变量初始化失败 */@Overridepublic void init(FilterConfig filterConfig) throws ServletException {this.filterConfig = filterConfig;init();}/** * 供子类继承的初始化方法,可以通过getFilterConfig获取FilterConfig对象 */protected void init() {}/** * 原生的doFilter方法,在方法内部把ServletRequest和ServletResponse * 转为了HttpServletRequest和HttpServletResponse并调用了 doFilter(HttpServletRequest * httpRequest, HttpServletResponse httpResponse, FilterChain chain)方法 * * * 若编写Filter的过滤方法不建议直接继承该方法,而应该继承doFilter(ServletRequest request, * ServletResponse response, FilterChain chain) */@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;HttpServletResponse httpResponse = (HttpServletResponse) response;doFilter(httpRequest, httpResponse, chain);}/** * 抽象方法,为http请求定制,必需实现的方法 * */public abstract void doFilter(HttpServletRequest httpRequest,HttpServletResponse httpResponse, FilterChain chain)throws IOException, ServletException;/** * 空的destroy方法 */@Overridepublic void destroy() {}}
Cache.java
package com.dao.chu;import java.io.IOException;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Cache extends HttpFilter {@Overridepublic void doFilter(HttpServletRequest httpRequest,HttpServletResponse httpResponse, FilterChain chain)throws IOException, ServletException {System.out.println("cache doFilter");httpResponse.setDateHeader("Expires", -1); // for IEhttpResponse.setHeader("Cache-Control", "no-cache"); // for 火狐 或 其他。httpResponse.setHeader("Pragma", "no-cache"); // for 火狐 或 其他。chain.doFilter(httpRequest, httpResponse);}}
添加完此过滤器后即可禁用游览器缓存的过滤器。
1 4
- javaWEB总结(31):禁用游览器缓存的过滤器
- 禁用浏览器缓存的过滤器
- 过滤器案例--------禁用缓存
- 关于请求游览器缓存
- JavaWeb中关于过滤器的总结
- 有关Filter(过滤器)实现禁用缓存和使用缓存操作的实现
- 有关Filter(过滤器)实现禁用缓存和使用缓存操作的实现
- 使用Filter 过滤器实现禁用缓存
- javaweb中的过滤器学习总结(2)---Filter过滤器链和过滤器的生命周期
- JavaWeb-过滤器与拦截器的区别
- javaweb 过滤器和监听器总结
- JavaWeb---过滤器的配置
- JavaWeb的Filter过滤器
- JavaWeb 过滤器的使用
- Javaweb的过滤器
- JavaWeb的学习总结(三)— 过滤器(Filter)
- JavaScript的游览器对象
- 游览器的userAgent参数
- C++第2次实验报告项目6:输出质数
- Hive 优化参数
- 【BZOJ1827】奶牛大集会(树形递推)
- phpstorm\webstorm\intellij idea 系列产品 通用 注册\激活\破解 [U01]
- 一个西电大四程序员的怼春招体验
- javaWEB总结(31):禁用游览器缓存的过滤器
- 星系炸弹,蓝桥杯2015年第2题
- 剑指offer:输出该链表中倒数第k个结点
- tensorflow AttributeError: 'module' object has no attribute 'cpu_count'
- CCF201609-1
- GPLT L2-007. 家庭房产【并查集】
- 字符串连续出现次数最多的子串
- dede5.7二次开发-------修改
- 读取文件 java