zoukankan      html  css  js  c++  java
  • servlet 中getLastModified()

    在http协议中,浏览器对访问过的页面缓存后,它将会在以后访问该页面时,将会根据LastModified头字段指定的时间值生成If-Modified-Since头字段,作为缓存页面的最新更新时间。如果网页的最后修改时间比If-Modified-Since头字段指定的时间早的话,web服务器就会请求的页面,如果自If-modified-Since指定的时间以来,网页内容没有被修改的话,服务器就会返回一个304响应头,一次告诉浏览器继续使用已缓存的页面。

    由于在动态网页程序中,网页内容随时在变化,因此我们要保证在每次的访问请求中都要返回最新的内容。例如一个网上商店卖某种产品,卖出一件,返回给数据的网页当中显示产品的数量就要少一件,这时我们就需要返回最新的网页内容。注意:HttpServlet类中的getLastModified方法的返回值是一个负数。

    继承HttpServlet的servlet程序在接收到客户端的GET请求后,HttpServlet的重载service方法会先调用getLastModified方法,根据这个方法的返回值来决定是否要调用doGet方法和生成Last-Modified头字段。主要有以下三种决定方式:

    1.如果getLastModified方法的返回值是一个负数的话,不管客户端的请求信息如何,service方法都会调用doGet方法生成响应信息返回给客户端。

    2.如果getLastModified方法的返回值是一个正数,并且客户端的请求消息中没有包含If-Modified-Since头字段的(这种情况是第一次访问该页面时)或者是请求消息中包含If-Modified-Since头字段,但是返回值比If-Modified-Since头字段指定的时间新的话,则service方法调用doGet方法生成响应信息和Last-Modified消息头返回给客户端。

    3.如果getLastModified方法的返回值是一个正数,并且返回值比客户端发出的请求消息中If-Modified-Since头字段指定的时间值旧的话,那么service方法将不会调用doGet方法和生成Last-Modified头字段,而是返回一个304状态给客户端,表示让客户端继续使用以前缓存的页面。

    服务器响应返回304说明仅当文档再制定的日期之后发生改变时,才希望读取该文档304(SC_NOT_MODIFIED)表示缓存的版本是最新的的核程序应该使用她,

    否则返回所请求的文档,并设置正常(200)状态代码.

  • 相关阅读:
    服务器×××上的MSDTC不可用解决办法
    安装VS2010后,更改iis的asp.net版本
    刷新后 页面 保持滚动条位置
    Atitit.java 反编译 工具  attilax 总结
    Atitit.收银系统模块架构attilax 总结
    Atitit.论垃圾文件的识别与清理 文档类型垃圾文件 与api概要设计pa6.doc
    atitit.guice3 绑定方式打总结生成非单例对象toInstance toProvider区别 v2 pb29
    Atitit. Derby的使用总结attilax
    Atitit.attilax的 case list 项目经验 案例列表
    Atitit.收银系统pos 以及打印功能的行业标准
  • 原文地址:https://www.cnblogs.com/panxuejun/p/7212514.html
Copyright © 2011-2022 走看看