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是什么关系?
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>