为什么sendRedirect(字符串路径)没有引发IllegalStateException?
我的servlet中有以下代码为什么sendRedirect(字符串路径)没有引发IllegalStateException?,redirect,tomcat7,java-ee-6,servlet-3.0,Redirect,Tomcat7,Java Ee 6,Servlet 3.0,我的servlet中有以下代码 public class RedirectingExceptionServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter();
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");
}
}
在这里,我试图在响应提交后重定向
根据规范,如果在提交响应后尝试调用sendRedirect(path),sendRedirect(String)应该抛出IllegalStateException
相反,我看到一个页面,上面有一条消息:您好,正在提交响应
另一件有趣的事情是,我无法在服务器控制台中看到“提交响应后尝试重定向”语句
有人能给我解释一下这种行为吗
环境详细信息:一旦容器遇到out.flush(),Windows 7、Tomcat 7.0.47、J2EE-6;它从那里返回,不执行剩余的代码行,也不忽略它们,只有在out.flush()之前没有重定向的情况下才是如此
我试过很多组合。如果有人有兴趣看一下这些组合,我可以分享它们我通过试验几件事学到的是,一旦容器遇到问题。flush();它从那里返回,不执行剩余的代码行,也不忽略它们。如果我的理解有误,请纠正。