我正在编写一个Web应用程序,用于将请求(包括html请求和servlet请求,$ .post或$ .get)重定向到过滤器中的特定网页。它适用于 html 页面请求。如果我转到我无法访问的网页,它会按预期重定向。但如果我单击一个按钮,发送一个我无法访问的servlet请求 不重定向。它的作用是返回网页 REDIRECT_URL 的内容,我点击的网页仍然在那里发送请求。以下是我用来进行重定向的代码
httpResponse.setContentType("text/html;charset=UTF-8");
httpResponse.setHeader("pragma", "no-cache");
httpResponse.setHeader("Cache-Control", "no-cache");
httpRequest.getRequestDispatcher(REDIRECT_URL).forward(httpRequest, httpResponse);
如何在过滤器中执行我的预期。我不想在网上重定向。我想通过过滤器完成所有工作。感谢..
答案 0 :(得分:1)
getRequestDispatcher(REDIRECT_URL).forward不会重定向。它执行服务器端转发,这意味着容器将在幕后发出不同的内部请求。
你想要的是HttpServletRequest.sendRedirect:
httpResponse.setContentType("text/html;charset=UTF-8");
httpResponse.setHeader("pragma", "no-cache");
httpResponse.setHeader("Cache-Control", "no-cache");
httpResponse.sendRedirect(REDIRECT_URL);