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