gpt4 book ai didi

java - 为什么打印语句不适用于请求调度程序的转发方法?

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:33 25 4
gpt4 key购买 nike

我想了解为什么当我使用forward方法时打印语句不起作用。我知道在forward方法中我们正在重定向到另一个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

引用文献:

How redirect request from jsp to a servlet

关于java - 为什么打印语句不适用于请求调度程序的转发方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31274605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com