簡體   English   中英

為什么打印語句對請求分派器的轉發方法不起作用?

[英]Why print statements don't work for forward method of request dispatcher?

我想了解為什么在使用正向方法時不執行打印語句。我知道在正向方法中我們將重定向到另一個servlet,但是在重定向在瀏覽器中顯示/顯示之前不應該使用我的打印語句。使用sendredirect()方法不起作用,但是使用include()方法時起作用

public class RdServlet extends HttpServlet
{

public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
res.setContentType("text/html");

PrintWriter out = res.getWriter();
out.println("<html><body>");

 String name=req.getParameter("name");
 String pass=req.getParameter("pass");
 try
 {
 Class.forName("oracle.jdbc.driver.OracleDriver");

 Connection c = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","mca6");
 Statement s = c.createStatement();
 String  s1="select * from emp101  where   name='"+name+"'  and   pass='"+pass+"'";
 ResultSet rs=s.executeQuery(s1);
 out.println("before dispatcher");
 out.println("<br>");
 if(rs.next())
 {

 RequestDispatcher rd=req.getRequestDispatcher("/wel");
 //rd.include(req,res);
 rd.forward(req,res);
 }
else
 {
  RequestDispatcher rd=req.getRequestDispatcher("/err");
  //rd.include(req,res);
  rd.forward(req,res);
 }
 }catch(Exception e){out.println(e);}     
out.println("<br>");
out.println("after  requestDispatcher");
out.println("</body></html>");
}
}

RequestDispatcher.forward()意味着將請求處理的完整控制轉發到另一個servlet。 轉發servlet不應做任何寫響應或提交響應之類的事情。 如果響應在轉發之前在調用的servlet中提交,則IllegalStateException 如果尚未提交響應,則將清除響應。

如果要包括來自兩個servlet的響應,請使用RequestDispatcher.include

參考文獻:

如何將請求從jsp重定向到servlet

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM