我想知道这些servlet方法。我对这些方法有所了解,比如
doPost
对doGet
的参数数字没有限制。doGet
比doPost
快。doPost
比doGet
安全。我的问题是,因为这些方法采用相同的参数并完成我们实施的过程。那么这些方法和major difference
之间的At which specific situation each of this method is used to process
是什么。
答案 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
将对象的表示传输到客户端。 一些URI指的是对象的特定变体,一些URI指的是具有许多变体的对象。在后一种情况下,可以在标题请求字段中指定可接受的表示,编码和语言,并且可能会影响返回的特定值。
此HTTP方法创建一个链接到指定对象并从属于指定对象的新对象。新对象的内容被包含在请求的主体中。
service()方法从公共服务方法接收标准HTTP请求,并将它们分派给此类中定义的doXXX方法。
答案 4 :(得分:3)
GET
应该是幂等的,POST
可能不是。 GET
是您希望从服务器获取内容时,POST
是将数据发布到服务器。 GET
是幂等的意味着多次应用相同的操作会产生相同的结果,而POST
则会产生副作用,导致输出变化。您可以编写非幂等GET
,但这违反惯例,您最终可能会遇到问题。可以为GET
个请求添加书签。 POST
无法添加书签。查询参数应限制在GET
,POST
您甚至可以发送要上传的文件。
答案 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() - 它要求提供信息。它不会改变服务器中的任何内容。 doGet()方法是默认的HTTPServletRequest方法。
doPost() - 用于提供服务器所需的信息。
我刚写下了基本的区别,其余的还有其他表现基础差异。