在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)状态代码.

servlet 中getLastModified()的更多相关文章

  1. [转]servlet中的service, doGet, doPost方法的区别和联系

    原文地址:http://m.blog.csdn.net/blog/ghyg525/22928567 大家都知道在javax.servlet.Servlet接口中只有init, service, des ...

  2. servlet学习记录:Servlet中的service()方法

    Servlet的生存时间是由init,service,destory方法构成,这里分析一下service这个方法 Servlet接口中定义了一个service()方法,而我们一般是使用HttpServ ...

  3. servlet中service() doGet() doPost() 方法

    HttpServlet 里的三个方法:service(HttpServletRequest req, HttpServletResponse resp) ,doGet(HttpServletReque ...

  4. Servlet规范简介——web框架是如何注入到Servlet中的

    Servlet规范简介--web框架是如何注入到Servlet中的 引言 Web框架一般是通过一个Servlet提供统一的请求入口,将指定的资源映射到这个servlet,在这个servlet中进行框架 ...

  5. web.xml中在Servlet中获取context-param和init-param内的参数

    引自:http://blog.csdn.net/yakson/article/details/9203231 web.xml里面可以定义两种参数:1.application范围内的参数,存放在serv ...

  6. 关于spring中无法将service注入到servlet中的问题

    首先,servlet是动态网页项目区别于普通的java项目的,是动态网页项目中web.xml主要配置文件管理的,而spring只能管理普通的pojo,而没办法直接注入,尽管你的注入方式和配置方式都没有 ...

  7. JSP+Servlet中使用jspsmartupload.jar进行图片上传下载

    JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post&quo ...

  8. Servlet中转发和重定向的区别

    Servlet中页面的跳转有两种方式:转发和重定向. 1.转发和重定向的区别 ①转发是服务器行为,重定向是客户端行为. ②转发是浏览器发生了一次请求,重定向至少是两次请求. ③转发地址栏中的url不会 ...

  9. servlet中请求转发(forword)与重定向(sendredirect)的区别

    摘自:http://www.cnblogs.com/CodeGuy/archive/2012/02/13/2349970.html 通俗易懂 servlet请求转发与重定向的区别: request.s ...

随机推荐

  1. 湖南集训day6

    难度:☆☆☆☆☆☆☆☆ /* 对于第一问:f[i][j]表示前i个数,当前黑板上的数为j的概率 当前有三种情况 1.当前数不是j的倍数—>黑板上的数字改变. 2.当前数是j的倍数且当前数在前i个 ...

  2. Unity学习-鼠标的常用操作(八)

    本次主要介绍5个鼠标事件 void OnMouseEnter():鼠标进入 void OnMouseExit():鼠标移出 void OnMouseDown():鼠标点击 void OnMouseUp ...

  3. no斜体 背景图片坐标

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. GridView动态计算高度

    // 动态加载GridView 高度 public static void setListViewHeightBasedOnChildren(MyGridView myGridView) { List ...

  5. Java_Web三大框架之Hibernate增删改查

    下面介绍一下Hibernate的增删改查. 第一步:编写用户实体类以及User.hbm.xml映射 package com.msl.entity; public class User { privat ...

  6. CentOS7配置VSFTP服务器

    [1] 安装VSFTP [root@localhost ~]# yum -y install vsftpd [2] 配置vsftpd.conf文件 [root@localhost ~]# vi /et ...

  7. python笔记之发送邮件

    发送邮件前提:开启邮箱授权码 一.开启授权码(以163邮箱为例) 1.登录163邮箱,点击设置--POP3/SMTP/IMAP,出现设置界面   2. 开启SMTP服务且可以查询SMTP的host地址 ...

  8. Java中的接口详解

    接口 是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8) ...

  9. PHP采用301跳转方式防CC拦截

    PHP采用301跳转方式防CC拦截   降低CC攻击的效果 <?php empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); $second ...

  10. CAD绘制一个对齐标注(com接口VB语言)

    主要用到函数说明: _DMxDrawX::DrawDimAligned 绘制一个对齐标注.详细说明如下: 参数 说明 DOUBLE dExtLine1PointX 第一条界线开始点X值 DOUBLE ...