Java 何时调用getLastModified?
我正在读一本书,通过下面的一个例子了解了HttpServlet.getLastModified。但让我困惑的是:这个方法实际上是什么时候被调用的?它是否总是隐式地被调用,即使我们编写它不是为了创建缓存更新?或者我们必须写它来更新缓存?另一个问题是,如果我得到一个关于文件未被修改的回复,那么我如何获得该信息 另一种情况是,无论我是否在代码中保留getLastModified,我都看不到任何区别。有没有办法得到通知Java 何时调用getLastModified?,java,jsp,servlets,Java,Jsp,Servlets,我正在读一本书,通过下面的一个例子了解了HttpServlet.getLastModified。但让我困惑的是:这个方法实际上是什么时候被调用的?它是否总是隐式地被调用,即使我们编写它不是为了创建缓存更新?或者我们必须写它来更新缓存?另一个问题是,如果我得到一个关于文件未被修改的回复,那么我如何获得该信息 另一种情况是,无论我是否在代码中保留getLastModified,我都看不到任何区别。有没有办法得到通知 public class GetLastModified extends HttpS
public class GetLastModified extends HttpServlet {
private long modTime;
private int[] numbers = new int[5];
public void init() throws ServletException {
modTime = System.currentTimeMillis() / 1000 * 1000;
for (int i = 0; i < numbers.length; i++) {
numbers[i] = randomNum();
}
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(
"Based upon extensive research of "
+ "astro-illogical trends, psychic farces, "
+ "and detailed statistical claptrap, "
+ "we have chosen the " + numbers.length
+ " best lottery numbers for you."
);
for (int i = 0; i < numbers.length; i++) {
out.println(numbers[i]);
}
}
@Override
public long getLastModified(HttpServletRequest request) {
return (modTime);
}
private int randomNum() {
return ((int) (Math.random() * 100));
}
}
公共类GetLastModified扩展了HttpServlet{
私人长时间;
私有整数[]个数=新整数[5];
public void init()引发ServletException{
modTime=System.currentTimeMillis()/1000*1000;
for(int i=0;i
当客户端应用程序(如浏览器)向您的servlet发出带有“If Modified Since”请求头字段的请求时,将调用HttpServlet.getLastModified来检查请求的内容是否在给定时间内未被修改。当“not Modified”时,响应将返回304,不包含任何内容。通过将缓存保留在客户端或用于缓存的servlet筛选器中,可以避免通信效率低下。有关详细信息,请参阅RFC2616。