Java doGet调用doPost,反之亦然
我从一本书中带来了这个例子:Java doGet调用doPost,反之亦然,java,jsp,jakarta-ee,servlets,servlet,Java,Jsp,Jakarta Ee,Servlets,Servlet,我从一本书中带来了这个例子: protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException ServletOutputStream out = resp.getOutputStream(); out.setContentType(“text/html”); out.println("<html><h1>Ou
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.
}
protectedvoiddopost(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException
ServletOutputStream out=resp.getOutputStream();
out.setContentType(“text/html”);
out.println(“输出到浏览器”);
println(“从Servlet编写为html”);
}
受保护的无效数据集(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException
doPost(请求、响应)//为流控制逻辑调用doPost()。
}
问题:
doPost
不能调用doGet
流量控制
是什么意思该示例表示所有请求,无论是
GET
还是POST
,都将由单个方法处理。您可以将doPost
代码移动到doGet
并从doPost
调用doGet
方法,thr不会有问题。这个例子意味着所有的请求,无论是GET
还是POST
,都将由单个方法处理。您可以将doPost
代码移动到doGet
并从doPost
调用doGet
方法,thr将不会有问题。您可以调用doGet()
来自doPost()
,反之亦然。没有问题。但是,你不应该做这样的事情。这两种方法有不同的目的
理想情况下,预处理任务必须在doGet()方法中完成。例如,假设您希望在将请求转发到用户主页之前,验证用户登录的位置,您将在doGet()
方法中执行此操作。而后处理任务必须在doPost()
中完成。例如,当用户提交表单时,您希望获取表单中的值,并对其进行验证。这样的逻辑进入doPost()
方法
你不应该把它们混在一起。如果它们是相同的,就不需要两种方法。有关这些方法的更多详细信息,请参阅我们的标记wiki。您可以从doPost()
调用doGet()
,反之亦然。没有问题。但是,你不应该做这样的事情。这两种方法有不同的目的
理想情况下,预处理任务必须在doGet()方法中完成。例如,假设您希望在将请求转发到用户主页之前,验证用户登录的位置,您将在doGet()
方法中执行此操作。而后处理任务必须在doPost()
中完成。例如,当用户提交表单时,您希望获取表单中的值,并对其进行验证。这样的逻辑进入doPost()
方法
你不应该把它们混在一起。如果它们是相同的,就不需要两种方法。有关这些方法的更多详细信息,请参阅我们的标记wiki。我知道它很旧,但仍然
关于Q1,每个人都给出了一个非常有趣和准确的答案,但真相就在那里。。。只要看看这个“缩小”的代码,您就会明白:
protected void doGet(HttpServletRequest req, HttpServletResponse resp){
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp){
//
//Do something
//
//Can I call doGet() ?
}
是的,如果你这样做,这是一个无限循环:doPost调用doGet调用doPost调用doGet…我知道它很旧,但仍然
关于Q1,每个人都给出了一个非常有趣和准确的答案,但真相就在那里。。。只要看看这个“缩小”的代码,您就会明白:
protected void doGet(HttpServletRequest req, HttpServletResponse resp){
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp){
//
//Do something
//
//Can I call doGet() ?
}
是的,如果你这样做,这是一个无限循环:doPost调用doGet调用doPost调用doGet…如果你需要doGet调用doPost,那么最好使用“服务”
如果您需要doGet调用doPost,那么最好使用“服务”
作者可以让doPost调用doGet,也可以让doGet调用doPost,因为这两者都是为了完成相同的任务。作者可以让doPost调用doGet,也可以让doGet调用doPost,因为两者都是为了完成相同的任务。他或她选择哪一个都没有区别。@jgitter-hehhe它的ohkdear@jgitter呵呵,呵呵,亲爱的