繁体   English   中英

response.sendRedirect() 没有运行 - Servlet

[英]response.sendRedirect() does not running - Servlet

当运行下面的代码并且我收到的输出是“in”时,但响应 .sendRedirect() 没有运行。 两个 java servlet 文件“Class1”和“Servlet1”在同一个文件夹中。

public class Class1 extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response) 
   throws IOException, ServletException {

       response.setContentType("text/html; charset=ISO-8859-7");
       PrintWriter out = new PrintWriter(response.getWriter(), true);

       ArrayList list2 = (ArrayList)request.getAttribute("list_lo");

       if (list2 == null || list2.isEmpty() ) {
          out.println("in");
          response.sendRedirect("Servlet1");
          return;}
       }


}

尝试使用扩展名而不是类名放置文件名,有时会发生在我身上,这样做就可以了

一旦开始返回任何输出,就无法发送重定向。

您需要在开始任何输出之前放置处理任何可能重定向的逻辑(例如,在您的示例中为out.println() )。 无论如何,将重定向逻辑放在方法的最开始是一件明智的事情,因为它应该是您决定的第一件事。

输出开始后重定向的原因在于 HTTP 协议本身 - 重定向使用响应标头传输,响应标头与响应正文用空行分隔。 一旦您开始编写响应主体,就无法再传输任何标头(如果幸运的话,除了开始的输出仍在缓冲区中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM