是什么:
是HttpServlet当中一个方法,被servlet引擎所调用,在httpServlet当中默认返回-1。
protected long getLastModified(HttpServletRequest req)
{
return -1L;
}
有什么用处:
控制client的GET请求(如post请求不受影响)是否被真实响应还是直接响应为不修改(304),servlet的service方法根据getLastModified的返回值
处理响应请求
1. -1:直接响应doget
2. 小于返回值:说明请求端的页面已经过期,直接响应,且在响应头当中设置LastModified值
3.大于返回值:说明请求端的页面已经是最新,客户端直接使用本地缓存页面,不需要服务端重新生成返回。向响应头当中写入状态码304
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String method = req.getMethod();if (method.equals("GET")) {
long lastModified = getLastModified(req);
if (lastModified == -1L)
{
doGet(req, resp);
} else {
long ifModifiedSince = req.getDateHeader("If-Modified-Since");
if (ifModifiedSince < lastModified / 1000L * 1000L)
{
maybeSetLastModified(resp, lastModified);
doGet(req, resp);
} else {
resp.setStatus(304);
}
}
}…
怎么样使用
1. 操作的对象是一个页面,servlet就是一个页面。过期是以一个页面操作单元,因为一个servlet一个getLastModified返回值。
2. 客户端If-Modified-Since的值来自服务端返回的Last-Modified