簡體   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