Response响应数据

1. response将字符数据返回到浏览器

需要两步:

  1. 通过response对象获取字符输出流PrintWriter writer = resp.getWriter();
  2. 通过字符输出流写数据:writer.writer(“aaa”);
    案例
    浏览器中打印出字符
/*** 响应字符数据:设置字符数据的响应体*/
@WebServlet("/resp3")
public class ResponseDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");//1. 获取字符输出流PrintWriter writer = response.getWriter();writer.write("aaa");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

还可以返回html字符串,并且浏览器能解析出来,如下:

PrintWriter writer = response.getWriter();
//content-type,告诉浏览器返回的数据类型是HTML类型数据,这样浏览器才会解析HTML标签
response.setHeader("content-type","text/html");
writer.write("<h1>aaa</h1>");

注意: 一次请求响应结束后,response对象就会被销毁,所以不要手动关闭流

提醒 如果要返回一个中文字符串你好,需要设置响应数据编码为utf-8

//设置响应的数据格式及数据的编码
response.setContentType("text/html;charset=utf-8");
writer.write("你好");

2. response响应字节数据

需要将字节数据写回到浏览器,我们需要两个步骤:

  • 通过response对象获取字节输出流:servletOutputStream outputStream = resp.getOutputStream();
  • 通过字节输出流写数据:outputStream。write(字节数据);
    1.返回一个图片文件到浏览器,如下:
/*** 响应字节数据:设置字节数据的响应体*/
@WebServlet("/resp4")
public class ResponseDemo4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 读取文件FileInputStream fis = new FileInputStream("d://a.jpg");//2. 获取response字节输出流ServletOutputStream os = response.getOutputStream();//3. 完成流的copybyte[] buff = new byte[1024];int len = 0;while ((len = fis.read(buff))!= -1){os.write(buff,0,len);}fis.close();}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

上述代码中,对于流的copy的代码还是比较复杂的,所以我们可以使用别人提供好的方法来简化代码的开发,具体的步骤如下:

  1. pom.xml添加依赖
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version>
</dependency>
  1. 调用工具类方法
//fis:输入流
//os:输出流
IOUtils.copy(fis,os);

优化代码之后:

/*** 响应字节数据:设置字节数据的响应体*/
@WebServlet("/resp4")
public class ResponseDemo4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 读取文件FileInputStream fis = new FileInputStream("d://a.jpg");//2. 获取response字节输出流ServletOutputStream os = response.getOutputStream();//3. 完成流的copyIOUtils.copy(fis,os);fis.close();}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

Response对象-响应字符数据相关推荐

  1. Response响应字符数据(解决乱码问题),字符数据(文件输出)

    Response响应字符数据(解决乱码问题),字符数据(文件输出) Request:使用request对象来获取请求数据 Response:使用response对象来设置响应数据 Reponse的继承 ...

  2. Response设置响应数据、Response完成重定向(对比 forword)、路径问题、Response响应字符数据、Response响应字节数据

    文章目录 Response Response 设置响应数据功能介绍 Response 完成重定向 与请求转发(forword)对比 路径问题 Response 响应字符数据 Response 响应字节 ...

  3. Response响应字符流和字节流数据

    文章目录 一.Response响应字符数据(这个流不需要关闭) 1.1 通过对象获取字符输出流 1.2 通过字符输出流输出数据 1.3 问题:输出中文乱码 1.3.1 setHeader 1.3.2 ...

  4. Response设置响应数据,重定向,目录问题,字节流,字符流

    响应数据分为3部分: 1:响应行  HTTP/1.1 200  OK void  setStatus(int sc)  设置响应状态码 2响应头  Content-type :text/html vo ...

  5. Java Request和Response对象 - Response篇

    文章目录 Response Response体系结构 Response设置响应数据 Response完成重定向 Response响应字符数据 Response 响应字节数据 Request: 使用 r ...

  6. 【Servlet篇】Response对象详细解读

    文章目录 Response 继承体系 Response 设置响应数据 设置响应行数据 设置响应头数据 设置响应体数据 Response 重定向 Response 响应字符数据 Response 响应字 ...

  7. 使用Response对象实现数据传输

    引言 大家有想过咱们平时通过三层的形式搭建的项目,数据是如何在页面与页面之间传递的吗?下面的图片大家一定不陌生. 是的,就像图片上面的用户名和密码是怎么从登陆页面传递到显示页面的呢?下面我就来介绍他们 ...

  8. DRF 中Request对象中获得数据

    DRF 中response对象中获得数据 1.Request 1).data request.data 返回解析之后的请求体数据.类似于Django中标准的request.POST和 request. ...

  9. 服务器可以响应字符类型的数据吗,HTTP - Response

    HTTP - Response 基本概念 数据格式 Response对象 功能 设置响应消息 1. 完成重定向 重定向和转发的区别(forward 和 redirect): 路径的写法 1. 路径的分 ...

最新文章

  1. AppleWatch开发-AlertController
  2. R语言观察日志(part12)--关于.Rprofile文件
  3. 一文说通Blazor for Server-Side的项目结构
  4. 是否显示展开_Creo7.0教程之绝对精度对钣金件展开的作用详解
  5. 知识管理≈内容管理≈文档管理≈项目文档管理
  6. JdbcTemplate(操作数据库-查询返回对象、查询返回集合)
  7. win2003 iis上运行asp.net配置
  8. can't connect local MySql Server though socket /tmp如何解决
  9. 浙江高级职称英语 计算机考试时间2016,浙江省2016年度全国专业技术人员职称外语等级统一考试时间...
  10. JavaWeb笔记 黑马程序员课程
  11. 数字信号处理知识点总结(三):离散傅里叶变换(DFT)
  12. 【转】死链-百度百科
  13. 汇编语言、寄存器分类及程序计数器
  14. 信息安全实验四:RSA公钥加密算法 2019.04.28
  15. 7个视频素材网站,不用再为素材发愁
  16. 开箱即用,这些 Vue3 后台管理系统模板绝对让你爽歪歪!
  17. 微信小程序绑定手机号js代码
  18. 探究 LightHouse 工作流程
  19. Java新手学习指南(2020最新推荐版)
  20. Mapreduce 跑的慢的原因

热门文章

  1. Java多重继承的两种方式
  2. Windows下qt安装,qt在哪里打开
  3. 解剖NetGuard
  4. 【计算机网络】网线规格的鉴别与接线方法
  5. matlab:plot线型和颜色
  6. openshift学习手册
  7. HDU 6194 string string string
  8. 将yyyyMMdd转成yyyy-MM-dd格式和yyyy-MM-dd格式转成yyyyMMdd
  9. 学生宿舍管理mysql设计_学生宿舍管理系统设计与实现(SSH,MySQL)
  10. 正则表达式\\s+ - 匹配任意空白字符