如何使用Struts2禁用后退按钮

时间:2012-05-08 10:58:05

标签: java struts2

我正在使用struts.serve.static=truestruts.serve.static.browserCache=false,但后退按钮即使在注销后也能正常工作。当我点击后退按钮时,它将转到上一个屏幕。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

S2将使用上述常量告诉浏览器是否需要缓存静态内容。

struts.serve.static=true

上面的属性由FilterDispatcher

使用
  • 如果为true,则Struts从其jar中提供静态内容。
  • 如果为false,则必须在/ struts
  • 中提供静态内容

struts.serve.static.browserCache=true也使用FilterDispatcher,仅在struts.serve.static=true时才有效。

  • 如果属实 - > Struts将为静态内容写出标题,以便它们可以          由Web浏览器缓存(使用Date,Cache-Content,Pragma,Expires)          头)。
  • 如果为假 - > Struts将为静态内容写出标题,使它们成为         不要被网络浏览器缓存(使用Cache-Content,Pragma,Expires         头) 简而言之,这两个常量都是一种告诉浏览器是否需要缓存S2提供的静态内容的方法。

关于浏览器后退按钮,我们无法禁用浏览器后退按钮作为其浏览器API的一部分,当您点击后退按钮时,浏览器将从其缓存中提供内容,而不会访问服务器。

您可以要求浏览器不使用缓存控制标头来缓存内容,而是在浏览器上尊重它们。在JSP中使用以下代码

response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", "0");

或者,您可以创建一个Interceptor并使用所需的操作对其进行配置,以便可以设置标头。 有关如何在S2中控制缓存的更多详细信息,请查看以下主题

答案 1 :(得分:1)

创建自定义拦截器以将标头添加到每个response比向每个jsp添加response.setHeader更简单(如果您使用的是Struts2)。

请检查this link以获得一个很好的例子。