java response 对象_82 Java基础 Response对象
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对象相关推荐
- java object... arguments_Java面试之基础题---对象Object
参数传递:Java支持两种数据类型:基本数据类型和引用数据类型. 原始数据类型是一个简单的数据结构,它只有一个与之相关的值.引用数据类型是一个复杂的数据结构,它表示一个对象.原始数据类型的变量将该值直 ...
- java对象比较 hashcode_java基础----比较对象 hashcode 与 equals 与 ==
介绍 hashcode和equals是Object类中定义的方法: hashCode 源码: public native int hashCode(); equals()源码: public bool ...
- 实例化Java对象_Java面向对象基础之对象实例化
1.实例化对象的过程可以分为两部分,例如下面代码: Person per = new Person(); 该代码分为两部分: 第一,声明对象:Person per,这部分是在栈内存中声明的,与数组一样 ...
- vb6 方法‘ ’作用于对象 失败_JS基础入门-对象的使用
今日背诵小纸条 对象是一组属性+方法的组合,其中可包含基本值.对象和函数 对象的定义 1 对象字面量 var hero{ name: '产品小姐姐', age: 16, weapon: [ '头盔', ...
- Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(一)
作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn.net/zhangerqing(转载请说明出处) ...
- Java基于对象基础 基于对象和面向对象的区别(转)
Java基于对象基础 基于对象和面向对象的区别 JavaScript设计者想把javascript语言设计成基于对象(object-based)的语言,他想把这个与面向对象(object-orient ...
- java集合对象声明_Java基础————集合类
原标题:Java基础----集合类 理解集合类 集合类存放于java.util包中. 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(refere ...
- Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(三)
Java面试宝典之数据结构基础 -- 线性表篇 作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn. ...
- java基础知识-对象和类
前言: 因为要准备Java面试,所有将java基础知识点重新复习一遍,主要笔记来源于菜鸟教程和java核心技术的书籍中,也有一些博客上的资料(这些只供我个人学习使用) Java 对象和类 对象:对象是 ...
最新文章
- 双数组Trie树(DoubleArrayTrie)Java实现
- Vue.js-Day06-AM【项目实战(附带 完整项目源码)-day01-am:移动端响应式(响应式尺寸、视口问题、实现rem变化、rem设计)、实战项目搭建(初始化项目、处理rem、搭建路由)】
- 块存储、文件存储、对象存储意义及差异
- HTML5该怎么学?HTML5入门知识汇总
- 第八篇: UpdateProgress 控件--显示正在处理中的信息
- 谁先看到苏神咬人? 世界杯直播背后的云
- socket和udp
- 将vscode改成中文界面
- 如何在官网下载hbase
- 改变空间参考,文本框显示prj文件内容
- php 依赖倒置原则,PHP:依赖注入,控制反转,依赖倒置原则
- 大容量U盘计算机会不识别吗,电脑无法识别U盘?学会这5步操作,不求人自己也能解决...
- 计算机毕业设计android的学生考勤请假app(源码+系统+mysql数据库+Lw文档)
- svn绿色符号消失的解决办法
- 加密市场的牛熊周期;NFT 定义的争论
- 黄芪和当归的分量是5:1的比例,如黄芪30克,当归6克
- 排气控制系统--中英文翻译
- 维天运通冲刺港股:9个月经调整利润降56% 蚂蚁集团是股东
- Facebook最新Libra币开发指南---接口服务器开发
- 学生老师的家教服务平台小程序制作