博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
response.getWriter().write()产生乱码及response.getWriter().write和out.print的区别
阅读量:4053 次
发布时间:2019-05-25

本文共 2578 字,大约阅读时间需要 8 分钟。

Struts1中通过action, return到页面的时候,如果代码中使用到response.getWriter().write(),那么有可能jsp页面中汉字会变成乱码。百度上有人说改为response.getWriter().print(),试着无效。在response.getWriter().write()之前加一句response.setContentType("text/html;charset=UTF-8"); 就行了。jsp页面头上写的那句ContentType就是用于Response的。 值得注意的是,使用Ajax的时候,如果不是在第一次显示页面的action方法里使用response.getWriter().write(),那么就不用写response.setContentType("text/html;charset=UTF-8"); 了。因为它不是整个页面提交,action里return的时候,不是返回显示整个页面。

 

 

 

PrintWriter out = response.getWriter();  

字符输出流,向HTML输出显示字符串;  

  PrintWriter   out   =   response.getWriter();  
  out.println("hello!");  
  HttpSession   session   =   request.getSession(true);在sefvlet里定义一个session,然后调用seeion的getValue()和setValue()方法在页面间进行信息传递,在JSP里边这两个对象都是自动定义好的,直接可以调用。

打个通俗的比方就是通过HttpServletResponse对象得到一支笔,然后就可以用out.print()方法在网页上写任何你想显示的内容。  

  out.print("<html><body>");  
  out.print("任何内容");  
  out.print("</body></html>");

 
 
 
 

jsp中的out与response.getWriter是什么关系?

同样的jsp部署在WebSphere和WebLogic中的效果完全不一样
<%
out.println("1");
response.getWriter.write("2");
out.println("3");
在WebLogic中显示为123,但是在WebSphere中,则显示为213。不知道这是否与J2EE的规范不符?
另外想知道,out这个变量是通过response得到的吗?还是完全没有关系,只不过在输出页面的时候out输出的内容并到response中去?谢了!

out当然是从reponse里来的 啊

2个当然是一点关系都没有啦。jsp里的out是

pageContext.getOut();而不是response.getWriter()
做做实验看看结果就知道2个是不是同一个东西咯
<% out.println("first jsp out";
response.getWriter().println("second response out";%>看看结果

如果底层是同一个流对象应该输出的顺序是一样的。再说明明是2个不一样的对象你为什么非要把他们2个拉上关系啊。要么你看看PageContext源码咯,每个产商实现又不见得完全一样,你哪个问题就属于他们细节上实现不一样。

response.getWriter()是SERVLET的一个方法调用,即是用来输出输出流的。而out是JSP的一个隐含对象,它自动初始化,用out.println()来输出数据流。servlet和JSP中的隐含对象是一致的

jsp里的out是JspWriterImpl类的实例

PrintWrite是java.io.PrintWriter类
PrintWrite在println()方法和print()方法中都不会有ioexception
而jsp的out的同名方法在缓冲区溢出切没有自动刷新时候会产生ioexception
其他两者则较类似
需要注意的是,这个jspwriterimpl是容器继承自标准接口产生的  

最近回过头来看Servlet,发现原来一些理解的东西不是很深,现在向大家请教。!

PrintWriter out = response.getWriter();
我的理解是调用对象response对象的getWriter方法,以次来获得PrintWriter这个输出。
请问有人能讲的更详细点吗?

我也一直有疑问:PrintWriter到底是做什么用的呢?

网页上的输出不是用的JspWriter吗?

PrintWriter用处是将结果以HTML的形式返回给客户端

response.getWriter().是在Servlet中调用,而JspWriter()是在Jsp中使用。关于Jsp和Servlet的区别,可以具体查看一下文档,包括Sun公司提出Jsp技术的背景等等。

PrintWriter out = response.getWriter();当一个Servlet响应的时候将响应信息通过out对象输出到网页上,当响应结束时它自动被关闭。所以也可以理解为:当我们调用response.getWriter()这个对象同时获得了网页的画笔,这时你就可以通过这个画笔在网页上画任何你想要显示的东西。

response.getWriter()和response.getOutputStream()这两个方法中只能调用其中一个,并且只能调用一次,不可以重复调用

jsp里的out是JspWriterImpl类的实例   

   PrintWrite是java.io.PrintWriter类   

out.println根本不换行啊?

out.println("1");
out.println("2");
以上代码的结果我想是这样:
1
2
可是结果是:
1 2
多了一个空格而言啊。

response.getWriter().print(" <br>")

这个不可以换行吗?
out.println("1");
out.println("2");
这个只是html源码换行而已 你看见的页面换行必须输出 <br>

 

转载地址:http://gatci.baihongyu.com/

你可能感兴趣的文章
coursesa课程 Python 3 programming course_2_assessment_8 sorted练习题
查看>>
在unity中建立最小的shader(Minimal Shader)
查看>>
1.3 Debugging of Shaders (调试着色器)
查看>>
关于phpcms中模块_tag.class.php中的pc_tag()方法的含义
查看>>
vsftp 配置具有匿名登录也有系统用户登录,系统用户有管理权限,匿名只有下载权限。
查看>>
linux安装usb wifi接收器
查看>>
多线程使用随机函数需要注意的一点
查看>>
getpeername,getsockname
查看>>
关于对象赋值及返回临时对象过程中的构造与析构
查看>>
VS 2005 CRT函数的安全性增强版本
查看>>
Visual Studio 2010:C++0x新特性
查看>>
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
在C++中使用Lua
查看>>
一些socket的编程经验
查看>>
socket编程中select的使用
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
为什么读了很多书,却学不到什么东西?
查看>>