PrintWriter out=response.getWriter()的问题

//得到PrintWriter对象。Servlet使用输出流来产生响应PrintWriterout=res.getWriter();//向客户端发送字符数据。out.pr... //得到PrintWriter对象。Servlet使用输出流来产生响应 PrintWriter out=res.getWriter();

//向客户端发送字符数据。 out.println("Hello World");问题一:res.getWriter(); 返回的是PrintWriter 的对象,那为什么不直接 PrintWriter out=new PrintWriter ();可能有人会说:“res.getWriter(); 返回的是可以在客户端显示的PrintWriter 的对象,new PrintWriter ();则不可以”,那既然这样就说明new PrintWriter ()返回对象;和res.getWriter();返回对象是不一样的,既然不一样,那凭什么可以把 res.getWriter();返回对象赋值给out!从逻辑上讲不通,太困扰了
展开
 我来答
wenalone
2013-03-28 · TA获得超过176个赞
知道答主
回答量:74
采纳率:0%
帮助的人:32.4万
展开全部
//向客户端发送字符数据。 out.println("Hello World")
;问题一:res.getWriter(); 返回的是PrintWriter 的对象,那为什么不直接 PrintWriter out=new PrintWriter ();
可能有人会说:“res.getWriter(); 返回的是可以在客户端显示的PrintWriter 的对象,new PrintWriter ();则不可以”,

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

这里解释一下。两个返回的对象时一样的,只是这对象属于谁的?客户端的还是服务端的?直接new 出来的PrintWriter 属服务端的 你要将数据写在客户端哪里去,所以只能用响应对象res中的PrintWriter ,将响应数据传给客户端。
匿名用户
2013-03-28
展开全部
网络请求中,Response可以算是回调,只有res.getWriter()才能确认是本次请求的回应,当然,如果你new PrintWriter ()能set到(如果可以set的话)这个response中,这样也未尝不可。还有你最后说的“逻辑上讲不通”,那个不是简单的赋值就行,网络请求,当然只能让处理回应的那个response返回数据给客户端。
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1a812615e
推荐于2017-10-12 · TA获得超过1146个赞
知道小有建树答主
回答量:739
采纳率:66%
帮助的人:419万
展开全部
从JDK帮助文档中可以看到PrintWriter没有不带参数的构造方法

构造该对象至少得传递一个输出源信息
楼主说的两者之间的差别就是构造方法中参数的差别
使用res.getWriter()方法会自动将底层的套接字的输出流作为参数传递给PrintWriter构造方法.
楼主也可以在Servlet中通过PrintWriter out = new PrintWriter(res.getOutputStream())方法来构造.
追问
那PrintWriter out = new PrintWriter(res.getWriter())和PrintWriter out=res.getWriter的区别是什么呢
追答
你可以看看HttpServletResponse几个实现类的源码,以下是某个子类getWriter()的实现.
内部都是自己new了一个PrintWriter对象并返回.
区别就在getWriter()方法里存在其他代码逻辑...
public PrintWriter getWriter()
throws IOException
{
if(cachedWriter == null)
{
String encoding = getCharacterEncoding();
if(encoding != null)
cachedWriter = new PrintWriter(new OutputStreamWriter(getOutputStream(), encoding));
else
cachedWriter = new PrintWriter(new OutputStreamWriter(getOutputStream()));
}
return cachedWriter;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
木利措03
2013-03-28 · TA获得超过115个赞
知道答主
回答量:82
采纳率:0%
帮助的人:17.2万
展开全部
Response.getWriter(); 目的就是构造一个标准输出流,把内容输出到界面上。如果按new PrintWriter () 如何构造出一个输出流,把信息传送到界面上。
追问
PrintWriter的构造函数必须传递一个对象进来吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f0f5e3118
2013-03-28 · TA获得超过405个赞
知道答主
回答量:279
采纳率:0%
帮助的人:245万
展开全部
1、如果直接实例化,则与你所的意义,res应该是Response吧,具体可以参考Servlet中的说明。
2、不是赋值,是引用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式