在提交响应后,因为这里的重定向语句应该给出异常,但如果这个重定向 statemnet 在 if 块中,它不会这样做。但是如果它不在 if 块中,它确实会给出异常。我已经显示了相同的语句(带有标记的星号)在下面的两个地方。你能告诉我原因吗?
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
synchronized (noOfRequests)
{
noOfRequests++;
}
PrintWriter pw=null;
response.setContentType("text/html");
response.setHeader("foo","bar");
//由于上面的语句,响应被提交
pw=response.getWriter();
pw.print("hello : "+noOfRequests);
//如果我删除下面的语句,这个相同的语句出现在 if block.so 语句中,如果块中的语句也应该像这个一样给出异常,但它没有这样做。为什么?
***response.sendRedirect("http://localhost:8625/ServletPrc/login% 20page.html");
if(true)
{
//same statement as above
***response.sendRedirect("http://localhost:8625/ServletPrc/login%20page.html");
}
else{
request.setAttribute("noOfReq", noOfRequests);
request.setAttribute("name", new Name().getName());
request.setAttribute("GmailId",this.getServletConfig().getInitParameter("GmailId") );
request.setAttribute("YahooId",this.getServletConfig().getInitParameter("YahooId") );
RequestDispatcher view1=request.getRequestDispatcher("HomePage.jsp");
view1.forward(request, response);
}
}