文章目录
一、Response响应字符数据(这个流不需要关闭)1.1 通过对象获取字符输出流1.2 通过字符输出流输出数据1.3 问题:输出中文乱码1.3.1 setHeader1.3.2 setContentType 二、Response响应字节数据2.1 通过Response对象获取字节输出流2.1.1 读取文件2.1.2 获取response字节输出流 2.2 字节流输出2.2.1 方法一 :将一个一个的字节输出2.2.2 方法二 : 在pom.xml文件中添加 commons-io 2.3 关闭字节流提示:在Maven Web项目下,创建的Servlet中的doGet方法中演示。
一、Response响应字符数据(这个流不需要关闭)
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
1.1 通过对象获取字符输出流
// 示例代码如下:// response 为doGet方法中获取来的response对象PrintWrite out = response.getWrite();
1.2 通过字符输出流输出数据
out.write(" I got");
1.3 问题:输出中文乱码
设置返回客户端的数据类型,在通过response对象获取字符输出流的前面加上(两种方法):
1.3.1 setHeader
response.setHeader("content-type,text/html");
1.3.2 setContentType
response.setContentType("text/html;charset=utf-8");
完整代码展示:
@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();out.write("你好");out.write("<h1>hello</h1>");}
浏览器运行结果:
二、Response响应字节数据
可以用来输出图片等
2.1 通过Response对象获取字节输出流
2.1.1 读取文件
输入流
// 这里以绝对路径为例子,输出abc.jpgFileInputStream files = new FileInputStream("e://code.jpg");
2.1.2 获取response字节输出流
输出流
ServletOutputStream os = response.getOutputStream();
2.2 字节流输出
2.2.1 方法一 :将一个一个的字节输出
byte[] by = new byte[1024];int len = 0;while((len = files.read(by)) != -1) {os.write(by,0,len)}
2.2.2 方法二 : 在pom.xml文件中添加 commons-io
pom.xml:
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>
添加后调用相对应的方法:
IOUtils.copy(files,os);
2.3 关闭字节流
files.close();