PrintWriter是否实现了HTTPServletResponse

时间:2013-08-21 15:29:51

标签: java jsp http tomcat servlets

我很难理解行构造的语义

PrintWriter out = response.getWriter()

首先,我注意到HTTPServletResponse是一个接口,但没有getWriter方法。

那么response.getWriter()怎么可能呢?或者更好的是,接口变量如何调用方法? 除此之外,PrintWriter是否实现了HTTPServletResponse?

我查看了Java实现,它似乎并不是;那么如何分配response.getWriter()

由于

2 个答案:

答案 0 :(得分:2)

response.getWriter()会返回PrintWriter的实例。

方法getWriter()在接口ServletResponse上定义,该接口是HttpServletResponse的父接口。

您有HttpServletResponse的具体实现,它实现了getWriter()方法。

您应该查看HttpServletResponse的javadoc。

答案 1 :(得分:1)

  

PrintWriter是否实现了HTTPServletResponse

没有。 HttpServletResponse没有getWriter方法,但它在ServletResponse超级界面中定义,更具体地说是ServletResponse#getWriter

  

接口变量如何调用方法?

例如,在servlet的doGet方法中,您会收到一个HttpServletResponse参数,应用程序服务器使用实现此接口的类实例发送该参数。请注意,类实现可能因供应商而异,即Tomcat中的类实现与WebLogic中的类实现不同。这样做是为了通过使用接口来专注于主要工作,而不是为不同的应用服务器实现编写不同的逻辑。

与最后一点相关: