gpt4 book ai didi

java - 将 ServletResponse 作为参数传递有什么好的理由吗?

转载 作者:行者123 更新时间:2023-11-30 04:13:32 24 4
gpt4 key购买 nike

javax.servlet.Servlet有什么好的理由
void service(ServletRequest req, ServletResponse res) 方法将 ServletResponse 作为参数给出,而不是仅仅返回它?

最佳答案

Java Servlet API 是一个抽象,它定义了任何 Java Web 应用程序处理任何类型请求所需的最低要求(如果您查看它,您会发现几乎所有类都被定义为接口(interface)或抽象类)。

此 API 已由 JCP 定义经过不同 Java 服务器供应商(IBM、Sun、Apache、Oracle 等)就最低要求达成一致的过程,从而定义了现在被视为官方标准的内容。然而,不同的供应商有不同的方法来实现他们的 servlet 容器,导致现在它们的数量多种多样(每个都有不同的功能)。

由于 servlet 容器需要跟踪两个对象(请求和响应)以正确处理这两个对象,因此它们无法利用创建 ServletResponse (或 HTTP变体 HttpServletResponse) 给用户 - 请记住,Servlet 的 service 方法内部是用户代码。因此,Servlet 容器在调用 service 方法之前创建并预填充请求和响应对象(使用它们自己的实现)。从用户的角度来看,只需通过接口(interface)处理它们就足够了,这也保护了特定于供应商的代码,因为我们无权访问这两个对象的实际实现。

但是,当定义 API 时,这些供应商意识到,在某些情况下,用户希望覆盖任何这些对象的默认行为,因此他们包含了一组包装器(HttpServletRequestWrapperHttpServletResponseWrapper 等),可以由用户代码扩展并在 servlet 或过滤器中使用,以替换容器提供的默认实现。

关于java - 将 ServletResponse 作为参数传递有什么好的理由吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19001459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com