http协议响应数据-response

1.1 使用工具查看响应数据组成

http响应=响应行+响应头+响应体

1.2 响应行(状态行)

1.2.1 状态行的组成

  • 响应行是http响应内容的第一行。
  • 响应行一般数据为:HTTP/1.1  200(tomcat8.5) 或者 HTTP/1.1  200  OK(tomcat7)
  • 响应行分为三个部分: 
  1. HTTP/1.1:协议版本
  2. 200:响应状态码
  3. OK:对响应状态码的解释

 1.2.2 常见的响应状态码

  • 200 OK:请求已成功,服务器通信正常。
  • 302 Move temporarily :设置重定向页面跳转的动作执行。
  • 304 Not Modified :从浏览器缓存中读取数据,不从服务器重新获取数据。
  • 404 Not Found :请求失败,请求所希望得到的资源未被在服务器上发现。一般是用户输错了url导致。
  • 405 Method Not Allowed :请求行中指定的请求方法不存在。例如,发送 post请求,服务器没有doPost方法,就会报这个错误。
  •  500 Internal Server Error :服务器发生了错误。一般服务器代码错误 。
  • 如何使用java对象操作响应。 

 2.1 响应头

2.1.1 常用的响应头介绍

  • 响应头的数据构成,响应头的数据是响应给浏览器,一般我们不用读取,但是我们可以设置响应头的数据,让浏览器按照我们指定的设置进行执行响应的功能。响应头信息如下:
  • Location: http://www.home1j.com/index.jsp --跳转方向
    Server:apache tomcat --服务器型号
    Content-Encoding: gzip --数据压缩
    Content-Length: 80 --数据长度
    Content-Language: zh-cn --语言环境
    Content-Type: text/html; charset=GB2312 --编码
    Last-Modified: Tue, 11 Jul 2018 18:23:51 GMT --最后修改时间
    Refresh: 1;url=http://www.home1j.com --定时刷新
    Content-Disposition: attachment; filename=aaa.zip --下载
    Set-Cookie:SS=Q0=5Lb_nQ; path=/search
    Expires: -1 --缓存
    Cache-Control: no-cache --缓存
    Pragma: no-cache --缓存
    Connection: close/Keep-Alive --连接
    Date: Tue, 11 Jul 2018 18:23:51 GMT --时间
  1. refresh:定时刷新跳转页面。
  2. location:重定向操作:通常告知浏览器马上向该地址发送 请求,通常和响应码302一起使用。 
  3. content-encoding:设置当前数据的压缩格式,告知浏览器以何种压缩格式解压数据。比如像浏览器输出一个压缩文件,可以设置这个响应头通知浏览器解压显示数据,但是目前浏览器只支持“gzip”格式解压。
  4. content-disposition: 通过浏览器以何种方式获取数据(直接解析数据(网页、图片文本)),或者以附件方式(下载文件)
  5. content-type:实体头部用于指定资源的MIME类型(MIME类型:用于提示当前文件的媒体类型,例如图片(image/png)、音频--(audio/ogg)。它的作用与传统上Windows上文件的扩展名相同。该名称源于 最初用于电子邮件的MIME标准。)
  • 注意:我们content-type常用的设置一般都是—“text/html;charset=utf-8”,其中“text/html;”---设置浏览器以文件格式解析数据;“charset=utf-8” ---响应数据的编码表。

 2.1.2 response对象的概念

  • 官方文档如下所示:

http协议响应数据-response_第1张图片 

  •  HTTPServletResponse对象封装了向客户端发送数据、发送响应头,发送响应状态码的方法。开发人员必须学会使用HTTPServletResponse,才能给浏览器发送 数据。

2.1.3 response常用API

  1.  void setStatus(int sc):设置此响应的状态代码。
  2. void setHeader(String name,String value):用给定名称和值设置响应头。

3.1 响应头:Location

  •  作用:响应头location的作用是通知浏览器要进行页面跳转的目标地址。
  • http状态码302的作用是通知浏览器进行页面跳转的动作执行,所有响应头location和http状态码302配合起来才可以完成页面跳转。

 3.1.1 实现跳转代码:

//需求:跳转到资源CountServlet
//response.setHeader(name, value); 设置响应头key-value 格式
response.setHeader("location", "index.html");
//设置http 状态码为302
response.setStatus(302);

3.1.2 优化跳转资源代码

//一句搞定页面跳转,实现原理就是上面的2 句代码
//工程名不能写死在代码中,防止修改工程名字,建议使用servletContext 获取工程名字
response.sendRedirect(“index.html”);

3.1.3 请求转发与请求重定向的区别(重点)

  • 完成重定向操作之后,之前我们的转发和现在的重定向都可以完成跳转,那么他们之间有什么区别呢?
  • request页面跳转请求转发实现原理: 
  1. 请求转发用户只发出了一次请求,所以一次请求对应一个url,所以url不变。
  2. 请求转发跳转的动作是发生在服务器内部,服务器内部跳转只能跳转到服务器当前工程内部的资源。无法访问外部的资源。
  3. 跳转前后的两个资源共享同一个request和response。
  4. request和response在请求来到服务器到被创建,在响应给浏览器结束后被销毁,所有request和response的作用域是一次请求内。

 http协议响应数据-response_第2张图片

  • response 页面跳转重定向实现原理: 
  1.  用户一共发出了2次请求,每一次请求对应一个url,所以url变了,这就是重定向页面跳转。
  2. 重定向跳转动作是在浏览器端跳转的,重定向跳转浏览器可以访问任意资源位置的资源。
  3. 页面跳转前后2个资源不共享同一个request和response。

 http协议响应数据-response_第3张图片

  •  总结:
  1. 转发在一次请求中完成,重定向是两次请求。
  2. 转发操作发生在服务器内部,重定向是浏览器执行操作。
  3. 转发地址栏不变(只有一次请求,一个地址),重定向,地址栏变化(两次请求,两个地址)
  4. 转发可以在一次请求中共享数据,重定向不行(重定向两次请求)

 3.1.4 什么时候用请求转发,什么时候用重定向

  • 根据实际情况需要使用,由于request是请求域对象,如果页面跳转在一次请求域内需要传递数据使用请求转发,否则建议使用重定向。

4.1 响应头:Content-Type

4.1.1 格式

Content-Type: text/html; charset=GB2312 --编码

 4.1.2 介绍

  • 官方叫法,设置响应正文类型,报文类型,一共包含2部分内容。
  • 第一部分text/html,设置响应的数据类型(Mime-Type),这里设置的是响应文本字符串html代码。服务器可以响应任何类型的资源给客户端,资源不同,Mime-Type不同。例如:
text/html Html代码
text/plain Txt文本文件
image/jpeg Jpg图片文件
Application/json Json数据

 第二部分charset=GB2312,响应的字符码表gb2312
通知浏览器以什么码表解码数据

4.1.3 作用

  • content-type 用于服务器通知浏览器采用什么码表对服务器响应的数据进行解码。由于服务器响应数据默
    认采用iso8859-1 码表,然而中国大陆浏览器默认采用GBK 码表,所以通过设置响应头content-type 来统一码
    表,解决响应中文数据乱码问题。

 5.1 服务器端输出中文数据有2 种方式

 

 

你可能感兴趣的:(tomcat服务器,Servlet)