您的位置:首页 > 其它

response.getWriter().write()产生乱码及response.getWriter().write和out.print的区别

2011-08-09 11:13 106 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: