如何使用spring处理浏览器按钮问题?

时间:2010-02-12 05:40:05

标签: spring jsp spring-mvc

如何使用spring处理浏览器按钮问题?。

在我的应用程序中,用户正确登录,并且当用户单击后退按钮页面状态时,不会保持状态。即使用户点击后退按钮/前进按钮

,我也能保持页面状态

由于

3 个答案:

答案 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)

答案 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>

注意:在测试应用程序时,不要忘记删除浏览器缓存。