HttpServletResponse 内容输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpServletResponse 内容输出相关的知识,希望对你有一定的参考价值。

我想取得HttpServletResponse中OutputStream()里的全部内容(例如编码信息,头信心之类的东西),然后以string的形式保存起来,有什么好方法吗?
我补充一下,不是一个变量一个变量的输出,是有什么办法把“所有”的信息保存起来。 OutputStream().toString() 输出的是OutputStream()对象的名称。问题已经解决了,用程序好像无法实现,我用了一个软件截取了response的全部头信息。谢谢大家的回答。分数就给第一个回答的人吧。

参考技术A 我没有运行,但是你可以打印一下
OutputStream().toString() 看看出来的字符串你能不能接受
参考技术B response.getContentType();
a String specifying the content type,
for example, text/html; charset=UTF-8, or null

response.getCharacterEncoding();
a String specifying the name of the character encoding,
for example, UTF-8本回答被提问者采纳

HttpServletResponse的手动响应以及sendRedirect()方法

HttpServletResponse的手动响应

HttpServletResponse实例对象获得输出流有
两种方式:

  1. PrintWriter out=response.getWriter();
    out对象·用于输出字符流数据·
  2. ServletOutputStream os=response.getOutputStream();
    os用于输出字符流数据或者二进制的字节流数据

浏览器和服务器端关闭response的输出流图

只要有一个流被创建了,并且已经完成了流的输出那么servlet容器就会将response对象交给服务器服务器将response对象中的内容做拆解响应给客户端。然后在检查该response的输出流有没有关闭,如果没有关闭就将输出流关闭。当response再有另外一个流被创建并尝试做输出时就会发生异常。所以response的两个输出流只能使用一个,不能同时使用两个输出流。这也是为我们没有关闭流程序不出错的原因,当然更提倡我们自己关闭流。

2个流一起用会报错,以及手动关闭流demo

sendRedirect重定向

我们这里假设有三个页面
LoginServlet:登陆页面
LoginControlServlet:登陆验证处理类
ShowServlet:显示登陆成功页面
重定向不可以在页面中共享HttpServletRequest对象中的数据。但是可以通过重定向的url中携带需要
的参数,但这里的参数只能携带字符串的参数。但是其优点是重定向时浏览器默认是使用get请求方式,这样的请求方式速度
更快一点。但是安全性却不高。

以上是关于HttpServletResponse 内容输出的主要内容,如果未能解决你的问题,请参考以下文章

如何获取jsp输出内容用HttpServletResponseWrapper

HttpServletResponse对象

HttpServletResponse对象

解决HttpServletResponse输出的中文乱码问题

HttpServletResponse的手动响应以及sendRedirect()方法

如何从 HttpServletResponse 获取 HTML 内容?