Response介绍

HttpServletResponse对象,通过它的方法可以设置HTTP响应消息的内容
在Servlet API中,定义了一个HttpServletResponse接口,它继承自ServletResponse接口,专门用来封装HTTP响应消息。由于,因此,在HttpServletResponse接口中定义了向客户端发送响应状态码、响应消息头、响应消息体的方法。
通俗来说,Response对象通过设置响应码,响应头,响应体等这些东西,可以向客户端返回数据,如:文件,图片,文件等;

一个HTTP响应包括哪些东西


Response设置响应行

setStatus(int status);  200  302  304
sendError(int sc);      404  500

sendError方法有tomcat默认的错误提示页面,setStatus只是设置状态码,没有提示页面;

Response设置响应头

响应头是一组键值对,可以通过response对象的setHeader(String s,String s1)方法设置响应头。

resp.setHeader("Content-Type","text/html;charset=UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Refresh", "5;url=/login/index.html");//5秒后跳转index页面

Response的重定向:

  1. 通过设置响应头完成
response.setStatus(302);
response.setHeader("Location","/javaweb/login");
  1. 通过sendRedirect方法
response.sendRedirect("/Location/login");

Response设置响应体

Response响应文字及乱码

getWriter()
response通过getWriter方法可以获得字符流,向response的缓冲区写数据。然后tomcat将response缓冲区中的字符返回给浏览器

resp.getWriter().println("第" + number + "访问该网站的人");

如果输出的字符是中文的话,前台页面展示会出现乱码,原因是response缓存区的编码是ios-8859-1,通过response的setCharacterEncoding()方法可以将response缓存区的编码设置为想要的编码格式

resp.setCharacterEncoding("utf-8");

结果发现仍然为乱码,那是因为很多浏览器默认的编码格式是GBK,除了可以手动的修改浏览器的编码格式之外,还可以指定浏览器解析页面所用的格式

response.setContentType("text/html;charset=UTF-8");
resp.setHeader("Content-Type","text/html;charset=UTF-8");

这两种方法都可以,setContentType()方法也包含setCharacterEncoding()方法的功能,所以只需设置response.setContentType(“text/html;charset=UTF-8”)即可

Response响应文件数据

response除了可以响应文字以外,还可以响应图片,音频,视频等二进制文件。因为这些不能用字符流进行处理,所以我们需要用字节流。

//获取字节输出流ServletOutputStream outputStream = response.getOutputStream();

该方法可以获得一个输往response缓冲区的字节输出流,可以往里输入文字和文件数据

Response字节流输出文字

字节流输出中文文字可以不必考虑字符编码,不会出现乱码

ServletOutputStream outputStream = response.getOutputStream();
byte[] bytes = "中国".getBytes();
outputStream.write(bytes);
outputStream.close();

Response字节流输出文件数据

输出文件数据需要一个输入流,如何获取文件的输入流在上一节已经讲了,用ServletContext或类加载器获取,然后将输入流中的数据拷贝到输出流,以图片输出为例:
1.web/img目录下有一张a.jpg图片

2.在servlet中编写代码

//获取输入流  在web目录下的采用ServletContext对象获取InputStream is = this.getServletContext().getResourceAsStream("img/a.jgp");//获取输出流ServletOutputStream os = resp.getOutputStream();//设置缓存的传输数组byte[] bytes = new byte[1024];//偏移量int len;//进行拷贝while ((len= is.read(bytes))!=-1){os.write(bytes,0,len);}is.close();os.close();


02.Response相关推荐

  1. [习题]如何触发 GridView 身体里面的「子控件」的事件 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充)...

    [习题]如何触发 GridView 身体里面的「子控件」的事件?#1 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充) 這個範例是要補充書本「上集」(ASP.NET專題實務) ...

  2. 01.swagger

    01.swagger 01.初步swagger 01.初步swagger API详细说明 注释汇总 作用范围 API 使用位置 对象属性 @ApiModelProperty 用在出入参数对象的字段上 ...

  3. PolarDB-X 1.0和RDS性能对比之吞吐量对比(三)

    测试环境: PolarDB-X 标准版:16C64G(1台) RDS MySQL5.7: 16C64G(4台) ECS 压测机: 8C16G(1台) sysbench 0.5 通过前期的测试,Pola ...

  4. PolarDB-X 1.0和RDS性能对比之吞吐量对比(二)

    测试环境: PolarDB-X 标准版:16C64G(1台) RDS MySQL5.7: 16C64G(4台) ECS 压测机: 8C16G(1台) sysbench 0.5 通过阿里云官方文档,找到 ...

  5. Jmeter响应断言以及JSON断言

    jmeter中有个元件叫做断言(Assertion),用于检查测试中得到的响应数据是否符合预期,用以保证性能测试过程中的数据交互与预期一致. 那我们使用它的目的是为了什么? 因为返回的结果是成功的,但 ...

  6. sysbench-0.5基本使用

    简介 sysbench是一个基于LuaJIT的多线程基准测试工具.它最常用于数据库基准测试,但也提供了CPU,文件io,内存等的基准测试 安装 卸载mariadb-libs yum remove ma ...

  7. 黑马程序员Javaweb学习笔记02【request和response】

    该博客主要记录在学习黑马程序员Javaweb过程的一些笔记,方便复习以及加强记忆

  8. 【Linux就该这么学 20期培训笔记 02】新手必须掌握的 Linux 命令

    本章知识点 强大好用的SHELL 执行查看帮助命令 常用系统工作命令 系统状态检测命令 工作目录切换命令 文本文件编辑命令 文件目录管理命令 打包压缩与搜索命令 Linux命令大全(手册) 强大好用的 ...

  9. Response.Redirect() 跳转中的ThreadAbortException

    最近写一个login用的handler,发现了一个以往没太注意的问题:         public void ProcessRequest(HttpContext context)          ...

最新文章

  1. java byte 转 c_C 和 Java 之间的byte数据的转换问题
  2. 逆向知识第十讲,循环在汇编中的表现形式,以及代码还原
  3. java 防止sql xxs注入,Java-JSP网站 防SQL注入,防XSS等攻击有什么好的处理办法?...
  4. poj 2378 树型dp
  5. 由一个bug引发的SQLite缓存一致性探索
  6. Python fullstack系列【2】Python数据类型
  7. configure: error: You requested G729 audio codec but not found...die
  8. 模板字符串竟然还有这种用法
  9. Linux内核参考链接与书籍
  10. android 对称加密完毕,通过 Android keystore 和 fingerprint 结合实现数据加密和解密
  11. 帝国cms 首页php,帝国CMS新增加专题页面
  12. java毕业设计餐饮类网站Mybatis+系统+数据库+调试部署
  13. CentOS7安装lepus
  14. 陈臣java_小菜学设计模式——享元模式
  15. Java学习预科知识
  16. markdown 高级复杂表格技巧
  17. zabbix6.0安装成功路上的小插曲
  18. 我们年轻时,为什么要辛苦赚钱,这是我听过的最好回答!
  19. 步态识别 数据集 (一)
  20. BZOJ2648: SJY摆棋子2716: [Violet 3]天使玩偶

热门文章

  1. 字符串截取字符串截取,substring
  2. elastic-php实现多个OR并列查询的优化
  3. 孤独和寂寞也是一种美
  4. DSO Framer _ WinForm 使用
  5. DSO Framer 使用介绍(ZZ)转
  6. 计算机怎么复制公式,excel怎么复制公式 -电脑资料
  7. A081_Lucene_ElasticSearch
  8. scum服务器 指定资源,SCUM服务器配置详解 参数设置推荐
  9. c++重写卷积网络的前向计算过程,复现theano的测试结果
  10. npm 的 --unsafe-perm 参数