2013-12-19 105 views
0

我在我的servlet爲什麼sendRedirect(String path)不拋出IllegalStateException?

public class RedirectingExceptionServlet extends HttpServlet { 

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     PrintWriter out = response.getWriter(); 
     out.println("Hello, response is being committed"); 
     out.flush(); 
     response.sendRedirect("redirectedExceptionServlet"); 
     System.out.println("Tried redirecting after committing response"); 
    } 

} 

這裏下面的代碼,我想回應提交後重定向。

按照規範Send Redirect java doc的sendRedirect(字符串)應該拋出IllegalStateException異常,如果您嘗試調用sendRedirect(路徑)

,而我看到一個頁面,消息響應被提交後:您好,響應正在致力於

另一個有趣的事情是,我無法在服務器控制檯中看到「在嘗試響應後嘗試重定向」語句

有人可以向我解釋此行爲嗎?

Env的詳細信息:Windows 7,Tomcat的7.0.47,J2EE-6

+0

我通過嘗試幾件事情得知的是,一旦容器遇到out.flush(); 它從那裏返回並且不執行剩餘的代碼行或者簡單地忽略它們。 如果我的理解錯誤,請糾正。 – JavaHopper

回答

0

一旦容器遇到了out.flush();它從那裏返回並且不執行剩餘的代碼行或者簡單地忽略它們,並且只有在out.flush()之前沒有重定向的情況下才是如此。

我嘗試了很多組合。如果有人有興趣看看這些組合,我可以分享他們

相關問題