Response响应字符数据及响应字节数据

简介: Response响应字符数据及响应字节数据

一、Response响应字符数据

使用:


1、通过Response对象获取字符输出流

PrintWriter writer = resp.getWriter();


2、写数据

writer.write("aaa");


代码示例:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
 * 响应字符数据:设置字符数据的响应行
 */
@WebServlet("/resp3")
public class ResponseDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        //1、获取字符输出流
        PrintWriter writer = response.getWriter();
        writer.write("你好");
        writer.write("<h1>aaa</h1>");
        //细节:流不需要关闭
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

执行结果:

d9b6f6aa18d443b8a08887de0fc6a995.png

注意:


1、该流不需要关闭,随着响应结束,response对象销毁,由服务器关闭


2、中文数据乱码:原因通过Response获取的字符输出流默认编码:ISO-8859-1

resp.setContentType("text/html;charset=utf-8");

二、Response响应字节数据

使用:


1、通过Response对象获取字符输出流

ServletOutputStream outputStream = resp.getOutputStream();


2、写数据

outputStream.write(字节数据);


代码示例:

import jdk.swing.interop.SwingInterOpUtils;
import org.apache.commons.io.IOUtils;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
/**
 * 响应字符数据:设置字节数据的响应行
 */
@WebServlet("/resp4")
public class ResponseDemo4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1、读取文件
        FileInputStream fis = new FileInputStream("d://a.png");
        //2、获取response 字节输出流
        ServletOutputStream os = response.getOutputStream();
        //3、完成流的copy
//        byte[] buff = new byte[1024];
//        int len = 0;
//        while((len = fis.read(buff)) != -1){
//            os.write(buff,0,len);
//        }
        //3、利用工具类进行copy
        IOUtils.copy(fis,os);
        fis.close();
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

执行结果:

d7c8c49f45ce43dbaab788bb3f97f82b.png

以上是利用IOUtils工具类copy数据使用示例,使用方法如下:


1、导入坐标

<dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
       <version>2.6</version>
</dependency>

2、使用

IOUtils.copy(输入流,输出流);
目录
相关文章
|
语音技术
发送octet-stream格式的请求返回乱码处理
octet-stream格式的请求返回乱码处理
|
2月前
|
XML JSON JavaScript
HttpGet 请求的响应处理:获取和解析数据
HttpGet 请求的响应处理:获取和解析数据
|
5月前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
70 1
|
9月前
|
存储 缓存
ETag的值是如何在HTTP响应中传递给客户端的
ETag的值是如何在HTTP响应中传递给客户端的
|
9月前
Response设置响应数据功能介绍及重定向
Response设置响应数据功能介绍及重定向
104 0
|
Web App开发 JSON 缓存
HTTP的请求方法,空行,body,介绍请求报头的内部以及粘包问题
HTTP的请求方法,空行,body,介绍请求报头的内部以及粘包问题
RichEdit 2.0响应回车换行
RichEdit 2.0响应回车换行
110 0
Response响应字符数据
Response响应字符数据
96 0
Response响应字符数据
Response响应字节数据
Response响应字节数据
111 0
Response响应字节数据