java 如何取ServletOutputStream中的数据

鸿尚法师 发布于 2014/08/22 16:01
阅读 20K+
收藏 5
ServletOutputStream中已经有数据了,我现在想取出来,实现方式不限,寻求高手!
加载中
1
鸿尚法师
鸿尚法师
结贴 :目前使用  HttpServletResponseWrapper 类型转换前保存原有 response 用 ResponseWrapper取到数据后 把数据写入原有 response ,返回原有response。至此成功拿到数据。spring mvc 使用ResponseWrapper 无法输出数据(没去找原因,有高手可以去研究下)。
世贸组织
世贸组织
你使用的是 SpringMVC,可以自实现一个 Convertor 就可以了吧。完全自己来一遍不是好麻烦。
0
Fersox
Fersox
可以先写出到本地,在进行读取,在删除本体文件。
0
hibegin
hibegin
可以实现services 这里可以得到out的数据。。
0
vidy_tu
vidy_tu
HttpServletResponseWrapper这个类可以帮到你。具体的用法你可以参考tkfilters,一个用来压缩返回数据的过滤器
0
空杯子
空杯子

1、输出流是用于输出数据的,而不是用于读取数据的,所以不存在输出流中已经有数据的情况(字节数组流除外),因为数据已经输出了,再读取数据也应该从接收了输出流的对象中获取;

2、如果想处理向输出流中输出的数据,那么应该再输出之前完成,而不应该在输出之后处理;

3、ServletOutputStream可以通过response.getOutputSteam()得到,通过这个流,直接将信息传输给浏览器或访问客户端;

4、问题本身不成立,建议你最好将你的实际需求描述出来;如何提交的请求,如何获取的请求数据,如何响应信息,需要对响应信息做什么样的处理,希望什么时候将响应信息输出给客户端;

鸿尚法师
鸿尚法师
看你写这么多字很辛苦,回一下,之所以想取是因为只能在拦截器最后阶段取才有意义,系统考虑的是代码0污染。
0
大汉刺史
大汉刺史
输出流怎么能取数据,输入流才能取
0
逝水fox
逝水fox
加个过滤器,使用HttpServletResponseWarp代替原有的response,返回自己定义的ServletOutputStream,这样就能拿到里面的输出了
鸿尚法师
鸿尚法师
目前是这样尝试的,这样写后自己能拿到,框架又取不到了。
0
whaon
whaon

ByteArrayOutputStream 

先往内存中写,再读

0
大汉刺史
大汉刺史

引用来自“whaon”的评论

ByteArrayOutputStream 

先往内存中写,再读

不行吧 servletoutputstream 是从response获取的,写的话只能写到客户端,不可能写到内存。
0
如比如比
如比如比
哥们,怎么搞成负了。昨天想了一天同样的问题,感觉自己扩展个 Response可能有出路。看到你这个,就算定下了。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部