Servlets 为什么不是';在第二次请求URL时是否调用我的筛选器?

Servlets 为什么不是';在第二次请求URL时是否调用我的筛选器?,servlets,servlet-filters,Servlets,Servlet Filters,当我第一次通过浏览器输入url时,我的servlet过滤器被点击。例如,首次在浏览器中粘贴的appPages/Nav.xhtml?id=1会刷新页面。 现在,当我将查询字符串更改为appPages/Nav.xhtml?id=2时,也会刷新页面 但是第三次输入appPages/Nav.xhtml?id=1时,它仍然记得旧的阶段,并且从未调用过我的过滤器。在my web.xml中,我将过滤器配置为 <filter> <display-name>SearchParams

当我第一次通过浏览器输入url时,我的servlet过滤器被点击。例如,首次在浏览器中粘贴的
appPages/Nav.xhtml?id=1
会刷新页面。 现在,当我将查询字符串更改为
appPages/Nav.xhtml?id=2时,也会刷新页面

但是第三次输入appPages/Nav.xhtml?id=1时,它仍然记得旧的阶段,并且从未调用过我的过滤器。在my web.xml中,我将过滤器配置为

<filter>
    <display-name>SearchParamsFilter</display-name>
    <filter-name>SearchParams</filter-name>
    <filter-class>com.acme.filter.SearchParams</filter-class>
</filter>
<filter-mapping>
     <filter-name>SearchParams</filter-name>
     <url-pattern>/appPages/Nav.xhtml</url-pattern>
 </filter-mapping>

搜索参数过滤器
搜索参数
com.acme.filter.SearchParams
搜索参数
/appPages/Nav.xhtml
为什么它还记得旧的状态?仅当我再次在同一选项卡和同一窗口中输入url时,才会发生这种情况。但是重新加载可以正常工作


更新:它可以在Chrome上正常工作,但在IE上不行

这可能是由客户端缓存引起的。确保通过在servlet和/或过滤器中设置适当的响应头来禁用缓存。有关详细说明,请参见以下答案: