10

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

  • doPosthas 对参数数量没有限制doGet
  • doGet比 快doPost
  • doPost比 更安全doGet

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

4

9 回答 9

14

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

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

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

于 2013-07-02T12:43:08.913 回答
7

有你提到的技术上的差异,还有一部分我们在谈论 REST metaphers。

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

于 2013-07-02T06:15:38.487 回答
5

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

的 W3C 给出了一些规范

得到:

对象的表示被传送给客户端。一些 URI 指的是对象的特定变体,而一些 URI 指的是具有许多变体的对象。在后一种情况下,可接受的表示、编码和语言可以在请求头字段中指定,并可能影响返回的特定值。

邮政

HTTP 的这种方法创建了一个新对象,该对象链接并从属于指定的对象。新对象的内容包含在请求的正文中。

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

于 2013-07-02T06:16:59.393 回答
5

我将只关注差异:

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

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

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

于 2013-07-02T06:18:48.893 回答
3

GET应该是幂等的,POST可能不是。GET是当您想从服务器获取某些东西时,POST是将数据发布到服务器。GET幂等意味着多次应用相同的操作会产生相同的结果,而与 a 一样,它POST具有导致不同输出的副作用。你可以写一个 non-idempotent GET,但这违反了约定,你可能会遇到问题。GET可以为请求添加书签。POST无法添加书签。查询参数应限制在 中GETPOST您甚至可以发送文件上传。

于 2013-07-02T06:15:53.350 回答
2

简而言之,当您想从服务器获取某些内容并且您的请求中没有可用的敏感信息时,将使用.. get ,因为它的标头在 URL 中可见。当您更新服务器中的某些内容并且您的请求中有密码、帐号等关键数据时,将使用Post 。post的另一个优点是它的大小不固定,因此您可以发送无限的数据,并且在任何情况下都不会看到数据。

于 2015-07-27T11:11:14.540 回答
0

我觉得你应该阅读一些关于 HTTP 的 GET 和 POST 方法的内容。例如,您可以从这里开始。您的问题与 Java 和 Servlet 并没有真正的联系,而是与 Web 编程的基础知识有关。

于 2013-07-02T06:15:23.270 回答
0

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

• do Post 对参数编号没有限制,而 doGet 有。

• doGet 比doPost 快。

• doPost 比 doGet 更安全

于 2014-02-07T11:17:16.687 回答
0

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

  • 获取()
  • 做邮政()

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

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

我只是写了基本的差异,其余的还有其他性能基础差异。

于 2014-06-05T10:25:14.857 回答