response的outputstream(十)

ServletOutputStream getOutputStream()

获得字节流,通过该字节流的write(byte[] bytes)可以向response缓冲区中写入字节,再由Tomcat服务器将字节内容组成Http响应返回给浏览器。

上一节展示了response.getWriter().write("字符串"),这个方法只能写字符串。如果要写字节,比如,传个图片,怎么办呢?就要靠response.getOutputStream()

我们从服务器往客户端发送一张图片。

package com.ken.content;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ByteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 使用response获得字节输出
		ServletOutputStream out = response.getOutputStream();

		// 获得服务器上的图片
		String realPath = this.getServletContext().getRealPath("a.jpg");
		InputStream in = new FileInputStream(realPath);

		int len = 0;
		byte[] buffer = new byte[1024];
		while ((len = in.read(buffer)) > 0) {
			out.write(buffer, 0, len);
		}

		in.close();
		out.close();
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}


我们看一下response


源码下载

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: OutputStreamresponse 的组合使用主要用于将数据写入 HTTP 响应体中。 首先,需要从 response 对象中获取 OutputStream,然后使用 OutputStream 写入数据。下面是一个示例代码: ``` OutputStream outputStream = response.getOutputStream(); outputStream.write("Hello, World!".getBytes()); outputStream.flush(); outputStream.close(); ``` 上面的代码中,我们先获取了 response 对象的 OutputStream,然后使用 write() 方法写入数据,最后使用 flush() 将缓冲区的数据刷新到响应体中,并使用 close() 方法关闭 OutputStream。 注意,当使用完 OutputStream 后,一定要记得调用 close() 方法关闭 OutputStream,以释放系统资源。 ### 回答2: OutputStream是Java IO库提供的一个输出流类,用于向目标位置输出数据。在网络编程中,可以通过OutputStream将数据发送给客户端或者其他网络设备。 而responseServlet中的一个对象,用于向客户端发送响应。在处理Web请求时,服务器端程序可以向response中写入数据,然后将该响应发送给客户端。 为了使用OutputStreamresponse进行组合,我们可以使用response的getOutputStream()方法获取一个OutputStream对象,然后通过该对象进行数据的输出。 具体使用方法如下: 1. 首先,在Servlet中,可以通过HttpServletRequest对象获取到response对象,代码如下: ```java HttpServletResponse response = request.getSession().getResponse(); ``` 2. 然后,可以通过response对象的getOutputStream()方法获取到OutputStream对象,代码如下: ```java OutputStream outputStream = response.getOutputStream(); ``` 3. 接下来,可以使用OutputStream对象进行数据的输出,例如写入字节数据,代码如下: ```java String content = "Hello, World!"; byte[] bytes = content.getBytes("UTF-8"); outputStream.write(bytes); ``` 4. 最后,记得在输出完数据后,需要关闭OutputStream对象,以释放相关资源,代码如下: ```java outputStream.close(); ``` 通过以上步骤,我们可以将数据通过OutputStream输出到response中,然后发送给客户端。这样就实现了利用OutputStreamresponse进行组合使用的目的。 ### 回答3: OutputStreamresponse可以进行组合使用来实现向浏览器发送数据。 在Java Web开发中,当我们需要向浏览器发送数据时,可以通过HttpServletResponse的getOutputStream()方法获取一个OutputStream对象,然后将数据写入OutputStream中,最后通过response对象将数据发送给浏览器。 具体的使用方法如下: 1. 获取OutputStream对象:调用response.getOutputStream()方法,该方法会返回一个OutputStream对象。 2. 向OutputStream中写入数据:可以使用OutputStream的write()方法将数据写入OutputStream。例如,可以使用write()方法将字符串转换为字节流并写入OutputStream。 3. 发送数据给浏览器:在将数据写入OutputStream之后,使用response对象将数据发送给浏览器。调用response对象的flush()方法将OutputStream中的数据发送到浏览器。 示例代码如下: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应类型为文本类型 response.setContentType("text/html;charset=UTF-8"); // 获取OutputStream对象 OutputStream out = response.getOutputStream(); // 向OutputStream中写入数据 out.write("Hello, World!".getBytes("UTF-8")); // 发送数据给浏览器 out.flush(); } ``` 通过将OutputStreamresponse对象进行组合使用,可以很方便地向浏览器发送数据,实现与浏览器的交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值