如何将servlet请求重定向到过滤器中的html页面

时间:2013-12-14 19:50:58

标签: servlets redirect filter

我正在编写一个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);

如何在过滤器中执行我的预期。我不想在网上重定向。我想通过过滤器完成所有工作。感谢..

1 个答案:

答案 0 :(得分:1)

getRequestDispatcher(REDIRECT_URL).forward不会重定向。它执行服务器端转发,这意味着容器将在幕后发出不同的内部请求。

你想要的是HttpServletRequest.sendRedirect:

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html#sendRedirect(java.lang.String)

httpResponse.setContentType("text/html;charset=UTF-8");
httpResponse.setHeader("pragma", "no-cache");
httpResponse.setHeader("Cache-Control", "no-cache");

httpResponse.sendRedirect(REDIRECT_URL);