【问题标题】:How to handle back browser button problem using spring?如何使用弹簧处理后退浏览器按钮问题?
【发布时间】:2010-02-12 05:40:04
【问题描述】:

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

在我的应用程序中,用户登录正确,并且当用户单击后退按钮时,页面状态未得到维护。即使用户单击后退按钮/前进按钮,我也要保持页面状态

谢谢

【问题讨论】:

标签: spring jsp spring-mvc


【解决方案1】:

显然这些页面是从浏览器缓存中请求的。您需要禁用相关页面的客户端缓存。您可以通过创建一个Filter 来实现此目的,该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 匹配的请求。然后按下后退按钮将强制来自服务器的 real 请求,并带有建议的新数据。要在请求之间保留某些服务器端数据,您需要获取会话范围或仅使用 GET 请求。

哦,别忘了在实现之后和测试之前先清除浏览器缓存;)

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      在 Servlet 上下文中配置一个拦截器,如下所示:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-10
        • 2023-02-23
        • 1970-01-01
        • 2018-06-02
        • 1970-01-01
        • 2013-03-19
        • 2013-12-26
        • 1970-01-01
        相关资源
        最近更新 更多