我想知道在servlet中为什么我们在同一个程序中一起使用doGet和doPost方法。有什么用???
以下代码的含义是什么? 为什么要从doPost调用doGet方法?我对这段代码一点也不清楚。
public class Info extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
doGet(request, response);
}
}
由于
答案 0 :(得分:20)
doGet()
处理传入的HTTP GET请求,而doPost()
处理... POST请求。还有等效的方法来处理PUT,DELTE等。
如果您使用GET(默认)提交表单,则会调用doGet()
。如果您使用POST提交,则此次将调用doPost()
。如果您只实现doPost()
但表单将使用GET,则servlet容器将抛出异常。
在许多程序中,服务器并不关心请求是使用GET还是POST,这就是为什么一个方法只是委托给另一个方法的原因。这实际上是一种不好的做法,因为这些方法本质上是不同的,但许多教程都是这样写的(无论好坏)。
答案 1 :(得分:3)
简单地说,就是使servlet一般化,这样即使我们将来更改请求方法,也不需要编辑servlet,这将减少将来修改应用程序的工作量。
答案 2 :(得分:3)
这是为了处理两种请求类型,例如。 GET和POST的http。根据应用程序的要求,人们可能会选择将请求类型保留为GET或POST,因此如果您正在处理它们,您将收到错误。如果您想以类似的方式处理它们,那么您可以创建另一个方法doSomething并从doGet和doPost方法调用它以获取更多信息see this answer
答案 3 :(得分:1)
是否与get请求有关,允许在浏览器窗口中的URL中看到参数,并且post请求将参数合并到请求的结构中,从而隐藏在视图中。您的请求将如何从客户端作为获取或发布。我认为这与安全性和避免sql注入有关,但它确实不是我的领域。希望有些专家能够纠正我的观点/评论,因为我自己需要了解这一点。
答案 4 :(得分:0)
正如您所提到的here您确实可以调用第三种方法,但您也可以从HttpServlet母类重写service()方法,以便它调用alawys一种独特的方法。