从缓存调用Jsp页面,而不是从服务器加载
我正在基于从jsp 1以这种方式传递的2个参数调用jsp。下面我将2个参数传递到2.jsp中,并基于这2个参数,数据显示在2.jsp中。我有一个循环,其中有许多href,如下所述。每个href都将不同的值传递给2.jsp从缓存调用Jsp页面,而不是从服务器加载,jsp,browser,caching,Jsp,Browser,Caching,我正在基于从jsp 1以这种方式传递的2个参数调用jsp。下面我将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中显示了相应的数据 现在,我在2
out.println("<a href=\"2.jsp?prId=" + prog.getId() + count + "\">" + prog.getName() + "</a>");
基于这两个参数,我在2.jsp中显示了相应的数据
现在,我在2.jsp中有了一个back按钮,并使用以下代码在2.jsp中调用1.jsp
<a href="1.jsp"><img src="/image/back.gif" border="0"></a>
问题是,当我使用“后退”按钮返回1.jsp并选择另一个类似于我上面所述的href时,我会得到与先前选择的href相关的数据
我想问题是当我请求从缓存而不是从服务器加载页面时。
请告知您只需指示浏览器不要缓存页面。您可以借助设置以下响应头的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都这样做)
确保在测试之前清除浏览器缓存
另见:
@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都这样做)
确保在测试之前清除浏览器缓存
另见: