1 Response对象概述

负责对浏览器进⾏响应的对象

什么是响应: 服务器接收到请求需要进行处理,将处理以后的结果显示回浏览器端(将这个过程称为是响应Response)。

查看Servlet中的service方法得知, Servlet中使用的ServletResponse接口, 而我们使用的是 ServletResponse的子接口HttpServletResponse, 它继承自ServletResponse, 是与HTTP协议相关 的Response响应对象

我们使⽤的⼦接⼝HttpServletResponse, 此接⼝对象由Tomcat引擎提供

可以实现对客户端的响应, 响应内容包括: 响应⾏,响应头,响应体

2 Response设置响应⾏

⽅法

返回值

描述

setStatus(int sc)

void

设置响应的状态码

设置响应的状态码

200 正确

302 重定向

304 查找本地缓存

404 请求资源不存在

500 服务器内部错误

response.setStatus(500);

3 Response设置响应头

HTTP协议的响应头,数据格式键值对 k:v

包含指导性信息,指导客户端

⽅法

返回值

描述

addHeader(String key,String value)

void

添加响应头,值为String类型

addIntHeader(String key,int value)

void

添加响应头,值为int类型

addDateHeader(String key,long l)

void

添加响应头,值为⽇期类型

setHeader(String key,String value)

void

更改响应头,值为String类型

setIntHeader(String key,int value)

void

更改响应头,值为int类型

setDateHeader(String key,long l)

void

更改响应头,值为⽇期类型

add开头的⽅法:针对⼀个key对应多个value的情况。

⽐如已有⼀个响应头 blossom:java

然后执⾏ addHeader(“blossom”,”java2222”);

最终得到响应头的结果:blossom:java,java2222

set开头的⽅法:针对⼀个key对应⼀个value的情况

⽐如已有⼀个响应头 blossom:java

然后执⾏ setHeader(“blossom”,”java2222”);

最终得到响应头的结果:blossom:java2222

演示:

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

/*

* response对象设置响应头

*/

response.addHeader("blossom","java");

response.addHeader("blossom","java111");

response.setHeader("blossom","java2222");

}

4 Response设置响应体

HTTP的响应体,就是⻚面的正文部分

字符流向浏览器写数据

⽅法

返回值

描述

write()

PrintWriter

使⽤字符串数据,没有差别, 输出是整数,查询编码表

print()

PrintWriter

⽆论是什么,原样打印

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

/*

* response对象⽅法getWriter()

* 打印流的响应体

* write() 字符流,使⽤字符串数据,没有差别, 输出是整数,查询编码表

* print() ⽆论是什么,原样打印

*/

PrintWriter pw = response.getWriter();

pw.write(100);

pw.print(100);

}

字符流的中⽂乱码问题

产⽣乱码原因: 编码和解码不⼀致

提问:在Servlet中编写以下代码,向⻚⾯输出中⽂是否会产⽣乱码?

response.getWriter().print("中⽂");

会乱码:

原因:

字符流是有缓冲区的,response获得字符流,response设计默认的缓冲区编码是ISO-8859-1。这个字符集不⽀持中⽂的。

解决:

设置response获得字符流缓冲区的编码 与 设置浏览器默认打开时候采⽤的字符集⼀致即可。

|⽅法 |放回值| 描述| |---|---| |setHeader("Content-Type","text/html;charset=UTF-8") |void| 设置浏览器打开⻚⾯时采⽤的字符集| |setContextType(String type) |void |设置浏览器打开⻚⾯时采⽤的字符集|

// 设置浏览器默认打开的时候采⽤的字符集:

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

// 简化代码

response.setContentType("text/html;charset=UTF-8");

// 输出中⽂汉字

response.getWriter().println("中⽂");

字节流向浏览器写数据

⽅法

返回值

描述

getOutputStream()

OutputStream

返回字节输出流OutputStream,响应⾮⽂本类型的数据

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

/*

* response对象的⽅法getOutputStream,响应⾮⽂本类型的数据

*/

//获取图⽚的绝对路径

String aFile = getServletContext().getRealPath("download/a.png");

FileInputStream fis = new FileInputStream(aFile);

OutputStream out = response.getOutputStream();

int len = 0;

byte[] bytes = new byte[1024];

while ((len = fis.read(bytes))!=-1){

out.write(bytes,0,len);

}

fis.close();

}

5 重定向

重定向的写法

浏览器进⾏重新的定向:

设置302状态码: setStatus(302)

设置重定向资源的地址: setHeader("location","资源")

通过HttpServletResponse对象中的以下⽅法实现重定向

⽅法

返回值

描述

sendRedirect(String location)

void

重定向

重定向的代码实现

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

/*

* 浏览器进⾏重新的定向:

* 设置302状态码: setStatus(302)

* 设置重定向资源的地址: setHeader("location","/webtest/servlet2")

*/

//response.setStatus(302);

//response.setHeader("location","/webtest/servlet2");

response.sendRedirect("servlet2");

}

java response 对象_82 Java基础 Response对象相关推荐

  1. java object... arguments_Java面试之基础题---对象Object

    参数传递:Java支持两种数据类型:基本数据类型和引用数据类型. 原始数据类型是一个简单的数据结构,它只有一个与之相关的值.引用数据类型是一个复杂的数据结构,它表示一个对象.原始数据类型的变量将该值直 ...

  2. java对象比较 hashcode_java基础----比较对象 hashcode 与 equals 与 ==

    介绍 hashcode和equals是Object类中定义的方法: hashCode 源码: public native int hashCode(); equals()源码: public bool ...

  3. 实例化Java对象_Java面向对象基础之对象实例化

    1.实例化对象的过程可以分为两部分,例如下面代码: Person per = new Person(); 该代码分为两部分: 第一,声明对象:Person per,这部分是在栈内存中声明的,与数组一样 ...

  4. vb6 方法‘ ’作用于对象 失败_JS基础入门-对象的使用

    今日背诵小纸条 对象是一组属性+方法的组合,其中可包含基本值.对象和函数 对象的定义 1 对象字面量 var hero{ name: '产品小姐姐', age: 16, weapon: [ '头盔', ...

  5. Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(一)

    作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn.net/zhangerqing(转载请说明出处) ...

  6. Java基于对象基础 基于对象和面向对象的区别(转)

    Java基于对象基础 基于对象和面向对象的区别 JavaScript设计者想把javascript语言设计成基于对象(object-based)的语言,他想把这个与面向对象(object-orient ...

  7. java集合对象声明_Java基础————集合类

    原标题:Java基础----集合类 理解集合类 集合类存放于java.util包中. 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(refere ...

  8. Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(三)

    Java面试宝典之数据结构基础 -- 线性表篇 作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn. ...

  9. java基础知识-对象和类

    前言: 因为要准备Java面试,所有将java基础知识点重新复习一遍,主要笔记来源于菜鸟教程和java核心技术的书籍中,也有一些博客上的资料(这些只供我个人学习使用) Java 对象和类 对象:对象是 ...

最新文章

  1. 双数组Trie树(DoubleArrayTrie)Java实现
  2. Vue.js-Day06-AM【项目实战(附带 完整项目源码)-day01-am:移动端响应式(响应式尺寸、视口问题、实现rem变化、rem设计)、实战项目搭建(初始化项目、处理rem、搭建路由)】
  3. 块存储、文件存储、对象存储意义及差异
  4. HTML5该怎么学?HTML5入门知识汇总
  5. 第八篇: UpdateProgress 控件--显示正在处理中的信息
  6. 谁先看到苏神咬人? 世界杯直播背后的云
  7. socket和udp
  8. 将vscode改成中文界面
  9. 如何在官网下载hbase
  10. 改变空间参考,文本框显示prj文件内容
  11. php 依赖倒置原则,PHP:依赖注入,控制反转,依赖倒置原则
  12. 大容量U盘计算机会不识别吗,电脑无法识别U盘?学会这5步操作,不求人自己也能解决...
  13. 计算机毕业设计android的学生考勤请假app(源码+系统+mysql数据库+Lw文档)
  14. svn绿色符号消失的解决办法
  15. 加密市场的牛熊周期;NFT 定义的争论
  16. 黄芪和当归的分量是5:1的比例,如黄芪30克,当归6克
  17. 排气控制系统--中英文翻译
  18. 维天运通冲刺港股:9个月经调整利润降56% 蚂蚁集团是股东
  19. Facebook最新Libra币开发指南---接口服务器开发
  20. 学生老师的家教服务平台小程序制作

热门文章

  1. 基于.net技术的代码高亮显示组件
  2. 在线转flv+flash在线录制视频
  3. MySQL之索引分类
  4. 猎头出500万年薪挖百度某高T,却被对方拒绝!网友:钱不是最重要的!
  5. Docker不香吗?为什么还要用k8s
  6. 被迫重构代码,这次我干掉了 if-else
  7. 面试官:连框架都没用熟练,就这还来面试?
  8. 不理解Zookeeper一致性原理,谈何异地多活改造
  9. 千万级高德服务单元化方案和架构实践
  10. zabbix监控快速搭建--云平台技术栈10