Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从缓存调用Jsp页面,而不是从服务器加载_Jsp_Browser_Caching - Fatal编程技术网

从缓存调用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

我正在基于从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.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都这样做)

确保在测试之前清除浏览器缓存

另见:

您只需指示浏览器不要缓存页面。您可以借助设置以下响应头的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都这样做)

确保在测试之前清除浏览器缓存

另见:

您是否检查了地址是否确实不同?什么地址???sme one plz建议您在第二次单击时在地址栏中显示URL。它与第一次单击时的不同吗?如果没有,那么就没有问题。您请求了相同的页面,因此得到了相同的页面。是的,url正在更改,因为不同url传递的id值不同。每次progid和count\u id不同。是否检查地址是否确实不同?什么地址???请在第二次单击时在地址栏中建议使用url。它与第一次单击时的不同吗?如果没有,那么就没有问题。您请求了相同的页面,因此得到了相同的页面。是的,url正在更改,因为传递给不同url的id值不同每次progid和count_id不同。我尝试过使用此方法,但似乎不起作用。我正在使用safari我尝试过使用此方法,但似乎不起作用。我正在使用safari