我想了解这些servlet方法。我知道有一些关于这些方法的内容,例如:
doPost
没有参数数量限制,而doGet
有。doGet
比doPost
更快。doPost
比doGet
更安全。
我的问题是,由于这些方法接收相同的参数并执行我们实现的过程,那么这些方法之间的主要区别是什么,以及在哪种具体情况下使用每种方法进行处理。
我想了解这些servlet方法。我知道有一些关于这些方法的内容,例如:
doPost
没有参数数量限制,而doGet
有。doGet
比doPost
更快。doPost
比doGet
更安全。我的问题是,由于这些方法接收相同的参数并执行我们实现的过程,那么这些方法之间的主要区别是什么,以及在哪种具体情况下使用每种方法进行处理。
doGet():> 我们将用于静态内容,当我们使用它时,我们的请求参数经过HTTP数据包头传递。HTTP数据包头的大小是固定的,因此只能发送有限的数据。或者在使用doGet()时请求参数会显示在地址栏中,或者像明文一样发送到网络数据。
doPost():> 我们将用于动态内容,当我们使用它时,我们的请求参数经过HTTP数据包体传递。 HTTP数据包体的大小不固定,因此可以发送无限量的数据。或者在使用doPost()时请求参数不会显示在地址栏中,或者像加密文本一样发送到网络数据。
service():> 如果我们定义它,我们将面临服务器连接问题,因为它是协议无关的,所以这不是一个好方法。
您提到了技术差异,还有我们谈论REST隐喻的一部分。
除了POST和GET之外,还有PUT和DELETE。您应该使用GET来执行不更改数据的操作,使用POST进行创建操作,使用PUT进行数据更新操作,而DELETE显然是用于删除数据的。
在不同的场合下会调用doGet() 、doPost() 、doPut() 和 doDelete() 方法,它们之间有一些细微差别。
是的,W3C 给出了一些规范
对象的表示形式会被传输到客户端。一些 URI 引用对象的特定变体,一些引用具有许多变体的对象。在后一种情况下,可以在头请求字段中指定接受的表示形式、编码和语言,并可能影响返回的特定值。
这种 HTTP 方法创建一个新的对象,与指定的对象链接并从属于它。新对象的内容作为请求的主体被包含在其中。
service() 方法从公共服务方法接收标准的 HTTP 请求,并将其分派到此类中定义的 doXXX 方法。
GET
应该是幂等的,而 POST
则可能不是。当您想要从服务器获取某些内容时,可以使用 GET
,而将数据发布到服务器则使用 POST
。如果 GET
是幂等的,则多次执行相同操作会产生相同结果,而使用 POST
会产生具有不同输出的副作用。您可以编写非幂等的 GET
,但这违反了传统规范,可能会导致问题。可以将 GET
请求加为书签,但不能将 POST
请求加为书签。在 GET
中应限制查询参数,在 POST
中可以甚至发送文件以进行上传。
简单来说,当你想从服务器获取某些内容并且请求中没有敏感信息(因为它的头部在URL中可见)时,使用get。当您要更新服务器上的某些内容并且请求中有关键数据(例如密码、帐户号码等)时,请使用post。另一个post的优点是它不是固定大小,所以您可以发送无限数据,并且数据在任何情况下都不会被显示。
doGet() - 请求信息。它不会改变服务器中的任何内容。doGet() 方法是默认的 HTTPServletRequest 方法。
doPost() - 用于提供服务器所需的信息。
我只写下了基本区别,其余有其他性能方面的差异。