日期:2014-05-17  浏览次数:20771 次

求解答关于 getWriter输出的问题
Servlet1:
  response.getWriter().write(“aaa”);
  request.setAttribute(“attr”,”bbb”);
  request.getRequestDispatcher(“/jsp1.jsp”).forward(request,response);
jsp1.jsp:
  ccc
  <% 
  response.getWriter().write((String)request.getAttribute(“attr”));
  %>
为什么输出的是bbbccc而不是cccbbb?
servlet jsp

------解决方案--------------------
你把这个jsp当成servlet看。。
当这个jsp转化成servlet的时候,就变成了。
    out.println("ccc");
    response.getWriter().write((String)request.getAttribute(“attr”));
的形式,
如果
bbb在ccc前面的话,那么我估计就是out是 response.getWriter()的一个部分,out会在servlet执行到最后的时候一起写入response.getWriter()中。。
------解决方案--------------------
引用:
额,还有为什么JSP中不能使用response.getOutputStream().write()?????


response.getOutputStream()返回的是ServletOutputStream对象,这个对象没有write方法。你可以用print方法。
而response.getWriter()返回的是PrintWriter对象,这个对象是有write方法的。