我正在调用一个基于2个参数的jsp,它以这种方式从jsp 1传递。我将2个参数传递给2.jsp并根据这2个参数显示在2.jsp中的数据。我有一个循环我有许多href,就像我在下面描述的那样。每个href都将一组不同的值传递给2.jsp。
out.println("<a href=\"2.jsp?prId=" + prog.getId() + count + "\">" + prog.getName() + "</a>");
我使用以下行
在2.jsp中检索这两个参数count_id = request.getParameter( "country_id" );
prog_id = Integer.parseInt(request.getParameter( "program_id" ));
基于这两个参数,我在2.jsp
中显示相应的数据现在我在2.jsp中有一个后退按钮,我使用以下代码调用2.jsp中的1.jsp
<a href="1.jsp"><img src="/image/back.gif" border="0"></a>
问题是,当我使用后退按钮并返回1.jsp并选择另一个href时,就像我上面描述的那样,我得到了与之前选择的href相关的数据。
我想问题是当我请求页面是从缓存而不是从服务器加载时。 请建议
答案 0 :(得分:1)
您只需要指示浏览器不缓存页面。您可以借助servlet过滤器来设置以下响应标头:
@WebFilter("*.jsp")
public class NoCacheFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(req, res);
}
// ...
}
现在只需将此过滤器映射到覆盖感兴趣的JSP页面的URL模式。例如。 *.jsp
或/somefolder/*
(示例中的@WebFilter
为所有JSP执行此操作。)
确保在测试前清除浏览器缓存。