Servlets 如何在整个servlet中禁用网页缓存
对于无缓存网页,在java控制器servlet中,我在一个方法中执行了如下操作:Servlets 如何在整个servlet中禁用网页缓存,servlets,caching,response,no-cache,Servlets,Caching,Response,No Cache,对于无缓存网页,在java控制器servlet中,我在一个方法中执行了如下操作: public ModelAndView home(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mav = new ModelAndView(ViewConstants.MV_MAIN_HOME); mav.addObject("testing", "Test thi
public ModelAndView home(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView(ViewConstants.MV_MAIN_HOME);
mav.addObject("testing", "Test this string");
mav.addObject(request);
response.setHeader("Cache-Control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
return mav;
}
但这只适用于特定的响应对象。我在servlet中有许多类似的方法。我也有很多小仆
如果我想在整个应用程序中禁用缓存,我应该怎么做?
(我不想为每个响应对象添加上述代码)。为什么不这样做
筛选器是可以转换请求或响应的标题和内容(或两者)的对象
过滤器可以执行的主要任务如下:
- 修改响应头和数据。您可以通过提供定制版本的响应来实现这一点
编辑:例如
@WebFilter("/*")
public class NoCacheFilter implements javax.servlet.Filter {
@Override
public void init(final FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.setHeader("Cache-Control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
filterChain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
请注意,
@WebFilter
注释需要Servlet 3.0,否则您可以通过web.xml
注册它。“/*”路径将适用于应用程序的任何路径,但范围可能会缩小。非常感谢。我想知道如果所有servlet都是另一个servlet的子类,我们可以在基类中做些什么吗?@Kurt是的,这是面向对象编程;)