首页 > 其他分享 >Spring MVC过滤器-ShallowEtagHeaderFilter

Spring MVC过滤器-ShallowEtagHeaderFilter

时间:2023-04-20 11:36:51浏览次数:32  
标签:Web Spring MVC ETag ShallowEtagHeaderFilter view plaincopy 客户端


评:
ShallowEtagHeaderFilter是spring提供的支持ETag的一个过滤器,所谓ETag是指被请求变量的实体值,是一个可以与Web资源关联的记号,而Web资源可以是一个Web页,也可以是JSON或XML文档,服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端返回的格式:
[java] view plaincopy

ETag:"50b1c1d4f775c61:df3"

客户端的查询更新格式是这样的:

[java] view plaincopy

If-None-Match : W / "50b1c1d4f775c61:df3"

如果ETag没改变,则返回状态304然后不返回,这也和Last-Modified一样。

ShallowEtagHeaderFilter会将JSP等的内容缓存,生成MD5的key,然后在response中作为Etage的header返回给客户端。下次客户端对相同的资源(或者说相同的url)发出请求时,客户端会将之前生成的key作为If-None-Match的值发送到server端。 Filter会客户端传来的值和服务器上的做比较,如果相同,则返回304;否则,将发送新的内容到客户端。

ShallowEtagHeaderFilter只能节省带宽,而不能提高服务器性能。

配置ShallowEtagHeaderFilter的代码如下:

[java] view plaincopy

<filter> 

 <filter-name>shallowEtagHeaderFilter</filter-name> 

 <filter-class>org.springframework.web.filter.ShallowEtagHeaderFilter</fliter-class> 

 </filter> 

 <filter-mapping> 

 <filter-name>shallowEtagHeaderFilter</filter-name> 

 <servlet-name>spring</servlet-name> 

 </filter-mapping>


当然,在filter-mapping中即可配置servlet-name,如spring的DispatcherServlet,也可以配置url-mapping。

标签:Web,Spring,MVC,ETag,ShallowEtagHeaderFilter,view,plaincopy,客户端
From: https://blog.51cto.com/u_16080829/6209265

相关文章

  • 【Spring Cloud】网关
     ServerWebExchange中获取TokenprivateStringgetToken(ServerWebExchangeexchange){StringauthToken=exchange.getRequest().getHeaders().getFirst("Token");if(StrUtil.isBlank(authToken)){MultiValueMap<String,String>q......
  • (IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案
    转:(IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案 【Maven】理解maven的6大内置属性   ......
  • 在eclipse中创建springMVC项目
    1.创建一个Javaweb项目 2.输入项目名称,下一步 3.下一步,勾选创建web.xml选项 4.在lib文件夹中添加jar包 5.在WEB-INF文件夹下添加springmvc框架配置文件,起名为springmvc-servlet.xml 代码如下:<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.s......
  • 记录一次使用 表达式引擎 自定义注解 还有 sql union all 实现对数据库数据提取、重组
    这样编写减少了前后端很多没必要的遍历,以及if判断并最大限度提高了代码的可变通性额外需要学习的是ORM框架下,如何接收多表(各表结构不同)操作后,sql返回的新结构的临时表问题表达式引擎用到的依赖<dependency><groupId>org.apache.commons</groupId>......
  • Spring Aop的学习:Spring Aop的简单入门
    1.什么是AOPAOP(AspectOrientedProgramming):面向切面编程,是OOP(面向对象编程)的一个延续,其和OOP一样,也是一种编程思想。不过AOP是一种横向开发模式。 2.AOP的作用及应用场景作用AOP的主要作用就是减少代码量,提高代码的可重用性,有利于未来的可操作性与可维护性。主要操......
  • SpringBoot静态文件映射问题
    如果遇到这种情况,检查静态文件(js/css/img)是不是在默认的static路径下,在查看application配置中的static-path-pattern:是否和前端映射路径完全相同,要是不相同则会造成访问不到......
  • SpringMvc 原理解析
    springMVC源码流程第一步先来到DispatcherServlet()@SuppressWarnings("serial")publicclassDispatcherServletextendsFrameworkServlet来到doDispatch的方法doDispatch(HttpServletRequestrequest,HttpServletResponseresponse)进入//1.先检查时候文件上传请......
  • springboot 事件监听@EventListener注解用法
    前言关于@EventListener注解,百度了一下,网上的教程很多都是继承这个,实现那个的,其实根本用不着这么麻烦,所以就写了此文,如文章所讲有误,还请谅解更多详细用法请百度一下~作用关于事件监听,目前我的用法最多的就是记录日志之类的。在此之前我们记录日志一般都是先把日志的service注......
  • Spring05_Spring事务
    一、JdbcTemplate工具​ JdbcTemplate类是Spring框架提供一个用于操作数据库的模板类,JdbcTemplate类支持声明式事务管理。该类提供如下方法来执行数据库操作。​ 1、queryForObject查询单个对象​ queryForObject(Stringsql,RowMappermapper,Object[]args)​ 2、que......
  • how to inject <class> type in spring
      sample:ClassitemClass;publicClassgetItemClass(){returnitemClass}publicvoidsetItemClass(ClassitemClass){this.itemClass=itemClass;} NowinjectitemClasspropertyinspring:<beanid="shampoo"class="com.test.Product&......