【问题标题】:How do I redirect to the current page in Servlet Filter?如何重定向到 Servlet 过滤器中的当前页面?
【发布时间】:2010-12-04 14:38:33
【问题描述】:

我有一个页面说:/myapp/test.jsp?queryString=Y。 过滤器需要重定向到当前页面。 它应该转到 /myapp/test.jsp (没有查询字符串)。 下面似乎将它带到了上下文根目录:/myapp。 我在 WAS6.1 中运行。

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpReq = (HttpServletRequest) req;
        HttpServletResponse httpResp = (HttpServletResponse) resp;
{
   boolean blnNeedToRedirect = true;
   if (blnNeedToRedirect) {
      httpResp.sendRedirect(".");
      return;
   }

   chain.doFilter(req, resp);
}

【问题讨论】:

    标签: java redirect servlet-filters


    【解决方案1】:

    httpReq.getRequestURI() 为您提供 servlet 路径,它应该如下工作。 为了重定向到同一页面,运行下一个命令:

    ((HttpServletResponse) httpResp).sendRedirect(httpResp.encodeRedirectURL(httpReq.getRequestURI()));
    

    另一个选项是添加带有状态码 302 的 Header Location,如下所示:

    ((HttpServletResponse) httpResp).setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); 
    ((HttpServletResponse) httpResp).addHeader("Location", request.getRequestURL().toString());
    

    【讨论】:

    • “请求页面”不也是“同一页面”吗?请举例说明。
    【解决方案2】:

    使用HttpServletrequest.getRequestURI。这应该适合你:

    httpResp.sendRedirect(httpReq.getRequestURI());
    

    【讨论】:

      猜你喜欢
      • 2011-07-15
      • 2022-01-22
      • 2013-09-08
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多