何时使用doGet,doPost和服务

时间:2013-07-02 06:12:36

标签: java java-ee servlets

我想知道这些servlet方法。我对这些方法有所了解,比如

  • doPostdoGet的参数数字没有限制。
  • doGetdoPost快。
  • doPostdoGet安全。

我的问题是,因为这些方法采用相同的参数并完成我们实施的过程。那么这些方法和major difference之间的At which specific situation each of this method is used to process是什么。

9 个答案:

答案 0 :(得分:14)

的doGet()产品:>我们将用于静态内容,当我们使用它时,我们的请求参数通过http包头。或者http包头的大小是固定的。因此,只能发送有限的数据。或者在doGet()的情况下,请求参数显示在地址栏中,或者在网络数据中发送,如平面文本。

doPost():>我们将用于动态内容,当我们使用它时,我们的请求参数将通过http数据包体。或者http包体的大小不固定。因此可以发送无限数据。或者在doPost()的情况下,请求参数不会显示在地址栏中,或者在网络数据中显示为加密文本。

服务()产品:>如果我们将定义它,那么我们必须面对服务器连接问题,因为它的协议独立,所以它不是一个好方法。

答案 1 :(得分:7)

你提到的技术上存在差异,而且我们谈论的是REST metaphers。

除了POST和GET之外,还有PUT和DELETE。您应该将GET用于不改变数据的操作,POST用于创建,PUT用于更新数据。 DELETE显然是删除数据。

答案 2 :(得分:5)

我只关注差异:

doService():当你知道自己在做什么时使用它,默认实现调用doGet()或doPost(),所以如果你覆盖它,你就不会调用另一个方法。

doGet():按照惯例,GET方法不应该更改应用程序的内部状态(不应该进行更新等)

doPost():按照惯例,POST用于修改应用程序的内部状态(执行插入,更新,删除)

答案 3 :(得分:4)

doGet()和doPost(),doPut(),doDelete()在不同的场合被调用,但有一些细微的差别。

W3C given some specifications

GET:

将对象的表示传输到客户端。 一些URI指的是对象的特定变体,一些URI指的是具有许多变体的对象。在后一种情况下,可以在标题请求字段中指定可接受的表示,编码和语言,并且可能会影响返回的特定值。

POST

此HTTP方法创建一个链接到指定对象并从属于指定对象的新对象。新对象的内容被包含在请求的主体中。

service()方法从公共服务方法接收标准HTTP请求,并将它们分派给此类中定义的doXXX方法。

答案 4 :(得分:3)

GET应该是幂等的,POST可能不是。 GET是您希望从服务器获取内容时,POST是将数据发布到服务器。 GET是幂等的意味着多次应用相同的操作会产生相同的结果,而POST则会产生副作用,导致输出变化。您可以编写非幂等GET,但这违反惯例,您最终可能会遇到问题。可以为GET个请求添加书签。 POST无法添加书签。查询参数应限制在GETPOST您甚至可以发送要上传的文件。

答案 5 :(得分:2)

简单来说,当您想要从服务器获取内容时,将使用 get ,并且您的请求中没有可用的敏感信息,因为其标题在URL中可见。当您在服务器中更新某些内容并且存在关键数据时,将使用发布。您的请求中的密码,帐号等。 帖子的其他优点是它不是固定大小,因此您可以发送无限数据,并且数据在任何情况下都不会显示。

答案 6 :(得分:0)

我应该阅读有关HTTP的GET和POST方法的内容。您可以从here开始。你的问题与Java和Servlets并没有真正联系,而是与网络编程的基础知识有关。

答案 7 :(得分:0)

我想知道这些servlet方法。我对这些方法有所了解,比如

•在doGet拥有时,Post对参数数字没有限制。

•doGet比doPost更快。

•doPost比doGet

更安全

答案 8 :(得分:0)

Servlet容器调用服务方法来处理请求并以适当的响应进行回复。每次发出请求时都会调用服务方法。我们永远不会覆盖它,因为它已经完成了:

  • 的doGet()
  • 的doPost()

doGet() - 它要求提供信息。它不会改变服务器中的任何内容。 doGet()方法是默认的HTTPServletRequest方法。

doPost() - 用于提供服务器所需的信息。

我刚写下了基本的区别,其余的还有其他表现基础差异。