当前课程知识点:Web后端开发技术 > 第2章 Servlet技术基础 > 2.8 HttpServletResponse接口 > 2.8.1 HttpServletResponse接口
好
欢迎大家回来继续学习
web后端开发技术
而这一小节我们将学习Http
Servlet
Response接口
HTTP
Response接口
它继承于瑞Response接口
它的主要功能就是用于封装
HTTP
响应消息
下面我们看一下它的创建过程
当一个请求到达web服务器的时候
由servlet的容器首先创建了一个
ServletResponse对象
然后在HttpServlet当中
进一步将对象转化
成为HttpServletResponse对象
那么接下来我们就可以使用这个对象
来完成一些相关的业务处理了
下面我们介绍一下HttpServletResponse
接口它的主要功能
第1个功能是用来设置响应状态
第2功能用来构建响应头
第3个用来响应正文
我们首先看一下响应报文
响应报文有这么三部分构成
响应行响应头和响应的正文
在响应行当中包含了协议的版本
状态码以及对这个状态码的解释
响应行下边就是由各种名和值构成的
这个响应头
在他的下边就是响应的正文了
下面我们看一个事例
那么这个事例是一个响应的报文
那么在第1行当中
我们看到它返回的是Http1.1这样
一个协议及其版本
然后后边有个空格
是200 200表明服务器正确
完成处理的一个请求
OK是他的描述
接下来就是关于响应头了
那么这响应头是由名和值构成的一个集合
一会我们会看一下响应头的名称都有哪些
响应正文通常情况下是这种html格式的文本
当然在开发当中根据需要也可能返回
txt文件
也可能返回的是Xmail还可能
返回的是Jason数据
在浏览器当中
大多数浏览器都提供了查看响应报文这个功能
我们在Firefox当中访问百度首页的时候
我们就可以通过他的查看报文工具
看到响应报文的情况
这里面它有个选项叫做原始头
这样的话就可以看到它真正响应回来的
原始头到底是什么样子的
这一页是他的响应的正文
具体的操作请大家自己研究一下
浏览器它开发者工具
在这里我们进一步来介绍Http响应的状态
为什么要有响应要状态
这个问题大家应该知道
一个请求到达服务器以后 他肯定有
一个是否正确响应
或者说是有错误这样一个问题
那么就有了设置状态的状态码的问题
那么这状态码共计分为5类
每一类用三位数字表示
首位数字表明了一类的状态
我们下面简单介绍一下
第一以一开始的这种状态码表明
服务器收到请求
还没有处理完
第2类是以2开始这种请求
以2开始这种状态码
它表示的是服务器已经处理完毕
并且成功返回这样一个数据
第3类是三开始的这状态码
它表示的是服务器还没有完成处理
需要客户端做进一步的处理
4开始的三位数字状态码表示的是
在处理过程当中存在问题
主要是客户端存在的问题
5
开始那种状态码表示的是服务器端
出现了问题
下面我们具体的看两个常见的这种状态码
那么我们在开发当中会经常看到
这个状态码是404
它表示的就是请求的服务器当中的
资源并不存在
这里面很可能的问题是我们在开发
当中请求的地址书写错误
或者说请求的url
地址
出现了这个错误
会出现这种404的情况
还有一种情况
这也是我们经常见到的
就是返回的状态码是500
它表明的是服务器端错误
通常情况下这种错误都是由于我们
编写Java
代码出现的问题
希望大家在出现这种错误的时候
仔细去看它上面这些信息
你就可以找到具体的错误的位置
比如这里面他是说这里面出错了
这是我们看到的状态码
那么对于HttpServletResponse接口
那么对于HttpServletResponse接口
它提供了设置状态码的一些方法
这里面有setStaus
然后setError
等等这些方法
对于我们来说
这个状态码并不需要主动去设置
而应该由服务器根据程序的运行状况
自动的进行设置
下面我们接着来看一下Http响应头
的一些内容
Http响应头是由它这个头名称以及它的值构成的
刚才我们在事例当中已经看到了很多响应头
下面我们简单的给大家做一下解释
第1个响应头的名称是Server
它代表的就是服务器的软件的版本
软件及版本号
第2个是Content-Type
就是返回的文本的类型是什么
第3个是content-Length
content-Length是返回当中正文的长度
接下来cache是说是否接受缓存
下面那个是创建的日期
接下来还有一个Content encoding
指明页面在传输过程中采用的编码
方式是什么
接下来是Expires它是指文件文档的
过期的时间
再下来
这是Refresh他就是通知浏览器
说你多长时间刷新一次页面
在他的下边是location
那么location他是告诉浏览器
将页面转向他所location指向的这样
一个地址
那么其实这个功能就可以使得浏览器
进行页面的跳转了
最后一个选项是Set-Cookie
就是将Cookie返回给客户端这样一个
响应头对应于这样响应头
在HttpServletResponse
接口当中提供了如下的
设置响应头的方法
这些方法整体上可以分为两类
一类是set
响应头的方法
比如setString setInt
setdate
那么就是说如果响应头的名称是int类型的
你就调用这个如果是date类型你就调用这个
还有一类它的方法是add什么东西
比如这里面addHeader
那么它的add什么样的
响应的
是add这种string类型的
就添加
那么
set和add之间的区别就是
set这类响应头它的类型
它的这种响应的名称只有一个
而add响应名称可能有多个
下面我们看一个事例
这个事例是使用setHeader方法
实现页面当中显示这个时间的方法
那么这个方法它是使用setHeader来完成的
它的基本思路就是让页面每一秒钟
刷新一次
所以这里面就有一个这个响应名称是
Refresh
然后这是时间
1代表的是一秒
每一秒钟刷新一次
然后每一秒钟刷新一次的同时
它在页面上面new出来一个这样一个
对象出来
时间的对象
那么时间对象再以这种格式输出出来
这样就形成了动态显示时间这种效果
我们自己可以编写代码
看一下这种效果
我们会看到浏览器在不停的刷新
每刷新一次时间就变了一次
接下来我们看一下如何响应正文
其实大家关于响应正文已经很熟练了
在这之前的程序当中
大家肯定用过这个方法
getWriter方法
它返回的是一个获取字符输出流对象
也就是说我们向客户端返回的都是
文本类型的数据
那么对于HttpServletRespones接口
除了这个方法之外
还有一个用于返回字节流数据的对象
下面这个方法叫getOutputStream
这种方法它用来返回什么样的数据呢
比如我们的图片
就可以使用它进行返回
因为图片它不属于文本
不管你是使用哪种方式
这两种方式不管使用哪种方式
它所输出的内容都会作为响应报文的正文
连同响应行和响应头一起组成一个
响应报文返回给客户端
在这里面我们看一下
这个代码我们应该非常熟悉了
这是向客户端返回数据
那么这里面我们取到的就是这种字符流输出对象
再下一小节
我们将使用代码演示如何使用
ServletOutputStream
对象响应输出一个服务器端的图片
好
今天这小节我们讲到这里
谢谢
-1.0 导学
--1.0.1 导学
-1.1 Web应用开发概述
--1.1.3 测试
-1.2 准备Java Web应用开发环境
--1.2.2 测试
-1.3 任务实现:Hello World Web项目
--1.3.2 测试
-1.4 小结
--1.4.1 小结
-本课程所有代码
--课程参考代码
-2.0 导学
--2.0.1 导学
-2.1 Servlet概述
--2.1.3 测试
-2.2 创建Servlet
--2,2,3 作业
-2.3 Servlet应用
--2.3.4 测试
-2.4 任务实现:某高校毕业生信息发布系统-注册与登录(Servlet版)
--2.4.3 测试
-2.5 ServletConfig接口
-2.6 ServletContext接口
-2.7 HttpServletRequest接口
--2.7.5 测验
-2.8 HttpServletResponse接口
--2.8.3 测试
-2.9 任务实现:某高校毕业生信息发布系统-简历添加
--2.9.1 任务实现:某高校毕业生信息发布系统-简历添加
-2.10 小结
-动画演示:Java Web应用服务器处理客户端请求的过程
-3.0 导学
--3.0.1 导学
-3.1 Cookie技术
--3.1.3 测试
-3.2 Session技术
--3.2.2 Session技术-Session技术应用购物车
--3.2.3 测试
-3.3 URL重写与隐藏表单域
--3.3.2 测试
-3.4 任务实现:某高校毕业生信息发布系统-简历修改
--3.4.1 任务实现:某高校毕业生信息发布系统-简历修改
-3.5 小结
--3.5.1 小结
-4.0 导学
-4.1 jsp概述
--4.1.2 测试
-4.2 脚本元素
--4.2.2 测试
-4.3 指令元素
--4.3.2 测试
-4.4 动作元素
--4.4.3 测试
-4.5 内置对象
--4.5.3 测试
-4.6 JavaBean
--4.6.3 测试
-4.7 任务实现:某高校毕业生信息发布系统-首页(JSP版)
--4.7.1 任务实现:某高校毕业生信息发布系统-首页(JSP版)
-4.8 小结
--4.8.1 小结
-5.0 导学
--5.0.2 测试
-5.1 el语法
--5.1.2 测试
-5.2 el隐含对象
--5.2.2 测试
-5.3 任务实现:某高校毕业生信息发布系统-学生详细信息展示
--5.3.1 任务实现:某高校毕业生信息发布系统-学生详细信息展示
--5.3.2 测试
-5.4 小结
--5.4.1 小结
-6.0 导学
--6.0.2 测试
-6.1 核心标签库
--6.1.5 测试
-6.2 任务实现:某高校毕业生信息发布系统-首页(JSTL版)
--6.2.1 任务实现:某高校毕业生信息发布系统-首页(JSTL版)
--6.2.2 测试
-6.3 小结
--6.3.1 小结
-7.0 导学
--7.0_导学
-7.1 过滤器
--7.1.3 测试
-7.2 监听器
--7.2.1.1与ServletContext相关的监听器
--7.2.4 测试
-7.3 任务实现:某高校毕业生信息发布系统-单态登录
--7.3.1 任务实现:某高校毕业生信息发布系统-单态登录
--7.3.2 测试
-7.4 小结
--7.4.1小结
-8.0 导学
--8.0_导学
-8.1 JDBC API
--8.1.2 测试
-8.2 JDBC API访问MySQL基本步骤
--8.2.2 测试
-8.3 任务实现:某高校毕业生信息发布系统-注册与登录
--8.3.1 任务实现:某高校毕业生信息发布系统-注册与登录(JDBC版)
--8.3.2 测试
-8.4 小结
--8.4.1小结
-9.0导学
--9.0导学
-9.1 技术准备
--9.1.5 测试.
-9.2 系统设计
-9.3 系统实现
-9.4 小结
--9.4.1小结




