【问题标题】:Why does Servlet.service() method return void and not an instance of ServletResponse?为什么 Servlet.service() 方法返回 void 而不是 ServletResponse 的实例?
【发布时间】:2023-03-07 10:11:02
【问题描述】:

为什么Servlet接口中的service()方法不返回ServletResponse的实例,而是作用于ServletResponse提供的对象容器?

简单来说为什么Servlet接口的服务方法是这样的:

public void service(ServletRequest request, ServletResponse response);

不喜欢:

public ServletResponse service(ServletRequest request);

【问题讨论】:

    标签: java servlets containers lifecycle


    【解决方案1】:

    如果响应对象由 servlet 容器提供,它可以控制诸如缓冲之类的处理方式。例如,假设您创建了自己的ServletResponse - 如果响应超过一定长度,容器将如何管理流式传输响应的能力,而不是缓冲数据?

    【讨论】:

    • 我非常荣幸您回答了我提出的问题 (:D),但我不明白传递一定长度的参数会有什么帮助,而不是返回一个值,如果我想要缓存一个值。我不是这里的专家,但我确实想成为专家,我想,我需要一些帮助。再次感谢你。谢谢!!
    • @Satadru:如果方法必须返回一个值,servlet 容器就无法控制它 - servlet 容器的工作是控制响应缓冲之类的东西.这通常不取决于单个 servlet。您将 servlet 容器配置为以特定方式运行,它提供了适当的 ServletResponse 来写入。 (请注意,这不是关于缓存,而是关于缓冲。)
    • @Satadru:“前端 servlet”是什么意思?你是说容器吗?它不必知道你提供什么样的响应——它可以让你编写二进制数据或文本数据,让你设置标题等......
    【解决方案2】:

    它使用容器为它部分构建的响应。它不会用整块布来构建响应。无论如何,它必须是一个论点。

    【讨论】:

    • 您的意思是添加响应标头和涉及协议数据和 cookie 的类似内容吗?
    猜你喜欢
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    相关资源
    最近更新 更多