为什么Servlet的doGet()方法将响应作为参数而不是返回值?

Les*_*ter 4 servlets java-ee

我以前从未质疑过,但为什么呢

public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException{}
Run Code Online (Sandbox Code Playgroud)

代替

public HttpServletResponse doGet(HttpServletRequest request)
    throws ServletException, IOException{}
Run Code Online (Sandbox Code Playgroud)

第二个版本不会在语义上更有意义吗?

Sto*_*ica 7

HttpServletResponse是一个相当复杂的类,要求您了解连接套接字等.如果你必须返回一个,那么大多数代码都是相同的样板来构造它.相反,servlet容器可以帮助您完成此工作,为您提供具有各种有用工作方法的即用型对象.

现在接下来的问题是为什么他们决定制作HttpServletResponse一个复杂的对象,而不仅仅是让你返回一个简单的POJO.嗯,对于其中之一,该架构不允许您在拥有所有数据之前开始编写任何流式响应.