如何使用spring处理浏览器按钮问题?。
在我的应用程序中,用户正确登录,并且当用户单击后退按钮页面状态时,不会保持状态。即使用户点击后退按钮/前进按钮
,我也能保持页面状态由于
答案 0 :(得分:5)
显然,页面是从浏览器缓存中请求的。您需要禁用相关页面的客户端缓存。您可以通过创建Filter
来监听您要禁用缓存的url-pattern
个网页,例如*.jsp
。在doFilter()
方法中执行以下操作:
HttpServletResponse httpres = (HttpServletResponse) response;
httpres.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
httpres.setHeader("Pragma", "no-cache"); // HTTP 1.0.
httpres.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(request, response);
这样,客户端应用程序将被指示不缓存与此过滤器的url-pattern
匹配的请求。然后按后退按钮将强制提供来自服务器的真实请求,其中包含建议的新数据。要在请求之间保留某些服务器端数据,您需要获取会话范围或仅使用GET请求。
哦,不要忘记在实施之后和测试之前先清除浏览器缓存;)
答案 1 :(得分:2)
您可以使用Spring Web Flow
答案 2 :(得分:0)
在Servlet Context中配置拦截器,如下所示:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**/*"/>
<beans:bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<beans:property name="cacheSeconds" value="0"/>
<beans:property name="useExpiresHeader" value="true"/>
<beans:property name="useCacheControlHeader" value="true"/>
<beans:property name="useCacheControlNoStore" value="true"/>
</beans:bean>
</mvc:interceptor>
</mvc:interceptors>
注意:在测试应用程序时,不要忘记删除浏览器缓存。