我以前从未质疑过,但为什么
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{}
而不是
public HttpServletResponse doGet(HttpServletRequest request)
throws ServletException, IOException{}
?
第二个版本不会在语义上更有意义吗?
答案 0 :(得分:6)
HttpServletResponse
是一个相当复杂的类,需要您了解连接套接字等。如果你必须返回一个,那么大多数代码都是相同的样板来构造它。相反,servlet容器可以为您完成这项工作,为您提供一个包含各种有用工作方法的即用型对象。
现在接下来的问题是为什么他们决定让HttpServletResponse
成为一个复杂的对象,而不仅仅是让你返回一个简单的POJO。嗯,对于其中之一,该架构不允许您在拥有所有数据之前开始编写任何流式响应。