我从书中带来了这个例子:

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
  ServletOutputStream out = resp.getOutputStream();
  out.setContentType(“text/html”);
  out.println("<html><h1>Output to Browser</h1>");
  out.println("<body>Written as html from a Servlet<body></html>");
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
  doPost(req, resp); //call doPost() for flow control logic.
}


问题:


为什么doPost无法调用doGet
flow control是什么意思?

最佳答案

您可以从doGet()呼叫doPost(),反之亦然。没有问题。但是,您不应该这样做。两种方法都有不同的目的。

理想情况下,预处理任务必须以doGet()方法完成。例如,假设您要在将请求转发到用户主页之前验证用户登录或未登录的位置,该操作与在doGet()方法中执行的操作相同。而后处理任务必须在doPost()中完成。例如,当用户提交表单时,您希望获取表单中的值并进行验证。这样的逻辑进入doPost()方法。

您不应该混合它们。如果它们相同,则不需要这两种方法。有关这些方法的更多详细信息,请参见我们的servlet标签Wiki。

10-05 19:02