【问题标题】:What is the meaning of this statement in Java Servlets?Java Servlets中这条语句的含义是什么?
【发布时间】:2014-07-11 08:24:28
【问题描述】:

我读到了这个关于 doGet 方法 () 的声明

确保您编写的 doHead 方法既安全又具有幂等性(也就是说,保护自己不会因一个 HTTP HEAD 请求而被多次调用)。

上述语句是什么意思,从编程的角度来看需要注意什么?

我正在对后端服务器进行一次调用,而后端的 servlet 正在对其自身进行重复调用。因此,我试图了解这是否与上述声明有关。

请帮助我理解。

【问题讨论】:

标签: java jakarta-ee servlets


【解决方案1】:

head() 会在覆盖 doget() 时自动覆盖。HEAD 请求是一个 GET 请求,在响应中不返回正文,仅返回请求标头字段。

确保你写的doHead方法是安全的

GET 方法应该是安全的,也就是说,没有任何用户需要负责的副作用。例如,大多数表单查询没有副作用。如果客户端请求旨在更改存储的数据,则该请求应使用其他 HTTP 方法。

确保你写的doHead方法是幂等的

GET 方法也应该是幂等的,这意味着它可以安全地重复。有时使方法安全也使其具有幂等性。例如,重复查询既安全又幂等,但在线购买产品或修改数据既不安全也不幂等。

JavaDoc 解释清楚:doget()

函数的幂等性:

幂等性是数学和计算机科学中某些操作的属性,它们可以多次应用而不改变初始应用之外的结果。幂等意味着执行请求 10 次与执行一次具有相同的效果。幂等请求可能第一次在数据库中创建一些东西,但它不会再次这样做。或者它只会在下一次返回对它的引用。

【讨论】:

    【解决方案2】:

    除非您通过 servlet 实现来提供静态内容,并且想要利用浏览器缓存来提高客户端、网络和服务器的性能,否则您不应该关心 doHead 方法!否则,您应该提供带有正确 http 标头的空正文(例如:Last-Modified 等)。

    【讨论】:

      【解决方案3】:

      “幂等”表示该方法可以安全地重复并且没有任何副作用。 因为客户端通常使用 head 方法来检测资源信息,例如存在、长度、媒体类型、修改时间等。

      【讨论】:

        猜你喜欢
        • 2021-06-01
        • 1970-01-01
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 2011-04-28
        • 2013-07-13
        • 2022-07-07
        • 2023-04-05
        相关资源
        最近更新 更多