Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止servlet的结果被缓存?_Java_Caching_Servlets - Fatal编程技术网

Java 如何防止servlet的结果被缓存?

Java 如何防止servlet的结果被缓存?,java,caching,servlets,Java,Caching,Servlets,如何停止使用servlet在浏览器中缓存页面 如果我在登录时按下浏览器的“后退”按钮,我希望该会话将过期。如果您获得请求的(实现)对象,您可以发送HTTP头,这将鼓励浏览器不缓存您发送的内容 HttpServletResponse response; // You'll need to initialize this properly response.setHeader("Cache-control", "no-cache, no-store"); response.setHeader("P

如何停止使用servlet在浏览器中缓存页面

如果我在登录时按下浏览器的“后退”按钮,我希望该会话将过期。

如果您获得请求的(实现)对象,您可以发送HTTP头,这将鼓励浏览器不缓存您发送的内容

HttpServletResponse response; // You'll need to initialize this properly

response.setHeader("Cache-control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "-1");

有关和,请参阅文档。如果您需要读取HTTP中的缓存控制头,.

以永久禁用缓存

  // Set to expire far in the past.
  response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT");

  // Set standard HTTP/1.1 no-cache headers.
  response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");

  // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
  response.addHeader("Cache-Control", "post-check=0, pre-check=0");

  // Set standard HTTP/1.0 no-cache header.
  response.setHeader("Pragma", "no-cache");
清除客户端缓存不会立即使会话过期,但会清除浏览器中的会话cookie。要使会话立即过期,需要在服务器端jsp或servlet中显式指定

// use session invalidate
session.invalidate();

是否需要以上所有行,或者
setHeader()
中的任何一行就足够了?@Alpine取决于浏览器。请参阅我刚才添加的有关缓存控制头的链接。谢谢,但我还是遇到了一个问题。登录后,如果我按back,然后按forward,则会话仍然有效on@Prashant您说过要避免缓存。你到底想让什么过期?
response.setHeader(“Expires”、“-1”)为什么我们要使用
-1
可能重复的