PrintWriter out=response.getWriter()的问题

2024-12-16 14:47:26
推荐回答(5个)
回答1:

//向客户端发送字符数据。 out.println("Hello World")
;问题一:res.getWriter(); 返回的是PrintWriter 的对象,那为什么不直接 PrintWriter out=new PrintWriter ();
可能有人会说:“res.getWriter(); 返回的是可以在客户端显示的PrintWriter 的对象,new PrintWriter ();则不可以”,

“那既然这样就说明new PrintWriter ()返回对象;和res.getWriter();返回对象是不一样的”

这里解释一下。两个返回的对象时一样的,只是这对象属于谁的?客户端的还是服务端的?直接new 出来的PrintWriter 属服务端的 你要将数据写在客户端哪里去,所以只能用响应对象res中的PrintWriter ,将响应数据传给客户端。

回答2:

网络请求中,Response可以算是回调,只有res.getWriter()才能确认是本次请求的回应,当然,如果你new PrintWriter ()能set到(如果可以set的话)这个response中,这样也未尝不可。还有你最后说的“逻辑上讲不通”,那个不是简单的赋值就行,网络请求,当然只能让处理回应的那个response返回数据给客户端。

回答3:

从JDK帮助文档中可以看到PrintWriter没有不带参数的构造方法

构造该对象至少得传递一个输出源信息
楼主说的两者之间的差别就是构造方法中参数的差别
使用res.getWriter()方法会自动将底层的套接字的输出流作为参数传递给PrintWriter构造方法.
楼主也可以在Servlet中通过PrintWriter out = new PrintWriter(res.getOutputStream())方法来构造.

回答4:

Response.getWriter(); 目的就是构造一个标准输出流,把内容输出到界面上。如果按new PrintWriter () 如何构造出一个输出流,把信息传送到界面上。

回答5:

1、如果直接实例化,则与你所的意义,res应该是Response吧,具体可以参考Servlet中的说明。
2、不是赋值,是引用。