out.flush和response out.flushBuffer有什么区别

关于response flushbuffer and printwriter flush的疑惑
关于response flushbuffer and printwriter flush的疑惑
发布时间: 7:32:25
编辑:www.fx114.net
本篇文章主要介绍了"关于response flushbuffer and printwriter flush的疑惑",主要涉及到关于response flushbuffer and printwriter flush的疑惑方面的内容,对于关于response flushbuffer and printwriter flush的疑惑感兴趣的同学可以参考一下。
关于response flushbuffer and printwriter flush的疑惑关于response flushbuffer and printwriter flush的困惑
我用的spring mvc,ajax框架用的是ext的。我用ajax 访问我继承于multiactioncontroller的类中的方法,每次我都用response.getwriter将信息发送给客户端,然后调用response.flushbuffer,清除buffer。晚上我在做一个更新测试的时候,发现每次我重启tomcat(从eclipse启动的)后,ajax第一次访问服务器之后都会返回空信息(不管更新成功与否,我都是要返回信息的),但是服务器端却是将更新的信息保存到了数据库的。但是第二次访问就好了,response.getwriter().write的内容就能被ajax接收到。我用firebug在firefox下面看了,第一次访问的时候,请求一直在那里等服务器的返回信息。后来,我放弃了response.flushbuffer,改用printwriter的flush()方法。在firefox下面,ajax第一次访问服务器,能够收到返回结果,但是在ie下面和chrome下面问题依旧。不知道大家有没有遇到过这样的问题,我现在很困惑,希望高人能指点一下。(我想这个问题应该不会关spring mvc的问题吧,难道和浏览器有关?)还有,我的tomcat是本地的。============================================================================其实是我自己太白痴了!我把timeout设置成了500,第一次访问的时候tomcat还要编译class呢,所以才出现这个问题。把timeout设置大一点比如3000就没问题了!
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:本帖子已过去太久远了,不再提供回复功能。用户名:韩立伟
文章数:284
评论数:67
访问量:276537
注册日期:
阅读量:1297
阅读量:3317
阅读量:427887
阅读量:1115894
51CTO推荐博文
&&&&&*&@author&liweihan
&&&&&*&@time&&11:56
&&&&&*&@description&&返回JSON格式!如果含有&br/&&,text/html就显示变化了!
&&&&&*&@param&request
&&&&&*&@param&response
&&&&&*&@param&result
&&&&&*&@param&callBack
&&&&&*&参考:.cn/s/blog_a03d702f010143tw.html
&&&&&*&&text/html&&&&&&&&&&&HTML
&&&&&&&&text/plain&&&&&&&&&&TXT
&&&&&&&&text/xml&&&&&&&&&&&&&XML
&&&&&&&&application/json&&&&&&&&&&&json字符串
&&&&&&&&text/html的意思是将文件的content-type设置为text/html的形式,浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理。
&&&&&&&&text/plain的意思是将文件设置为纯文本的形式,浏览器在获取到这种文件时并不会对其进行处理。
&&&&public&void&printJsonAutoEncodeNoCache(HttpServletRequest&request,&HttpServletResponse&response,&String&result,&String&callBack)&{
&&&&&&&&if&(StringUtils.isNotBlank(callBack))&{
&&&&&&&&&&&&result&=&new&StringBuffer(ToolUtil.filterHtml(callBack)).append("(").append(result).append(")").toString();
&&&&&&&&byte[]&outB
&&&&&&&&try&{
&&&&&&&&&&&&String&encoding&=&"gbk";
&&&&&&&&&&&&if&(StringUtils.isNotBlank(request.getParameter("encoding")))&{
&&&&&&&&&&&&&&&&encoding&=&request.getParameter("encoding");
&&&&&&&&&&&&}
&&&&&&&&&&&&if&("gbk".equalsIgnoreCase(encoding.trim()))&{
&&&&&&&&&&&&&&&&response.setContentType("application/&charset=GBK");
&&&&&&&&&&&&&&&&outBytes&=&result.getBytes("gbk");
&&&&&&&&&&&&}&else&{
&&&&&&&&&&&&&&&&response.setContentType("application/&charset=UTF-8");
&&&&&&&&&&&&&&&&outBytes&=&result.getBytes("utf-8");
&&&&&&&&&&&&}
&&&&&&&&&&&&response.setHeader("Pragma",&"No-cache");
&&&&&&&&&&&&response.setHeader("Cache-Control",&"no-cache");
&&&&&&&&&&&&response.setDateHeader("Expires",&0);
&&&&&&&&&&&&response.getOutputStream().write(outBytes);
//&&&&&&&&&&&&response.flushBuffer();
&&&&&&&&&&&&/**
&&&&&&&&&&&&&*&-han-add&-&explain:
&&&&&&&&&&&&&*&response.flushBuffer():Forces&any&content&in&the&buffer&to&be&written&to&the&client.
&&&&&&&&&&&&&*&A&call&to&this&method&automatically&commits&the&response,&meaning&the&status&code&and&headers&will&be&written.
&&&&&&&&&&&&&*
&&&&&&&&&&&&&*&java.lang.Object
&&&&&&&&&&&&&&&&extended&byjava.io.OutputStream
&&&&&&&&&&&&&&&&extended&byjavax.servlet.ServletOutputStream
&&&&&&&&&&&&&&&OutputStream.flush():&刷新此输出流并强制写出所有缓冲的输出字节。
&&&&&&&&&&&&&&&OutputStream.close():关闭此输出流并释放与此流有关的所有系统资源。
&&&&&&&&&&&&&*/
&&&&&&&&&&&&response.getOutputStream().flush();
&&&&&&&&&&&&response.flushBuffer();
&&&&&&&&&&&&response.getOutputStream().close();
&&&&&&&&}&catch&(IOException&e)&{
&&&&&&&&&&&&logger.error("&======&print&result&error",&e);
&&&&}注意一下,如果我们要返回JSON格式的数据,尽量设置response.setContentType()为application/json,这样可以防止运营商劫持!然后在我们的返回结果中加一些广告的JS代码!本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 response out 的文章

 

随机推荐