Web高级三 HTTP&Response

第一章 HTTP响应报文详解

HTTP协议:
HTTP请求报文及HttpServletRequest对象。
HTTP响应报文及HttpServletResponse对象。
响应报文

1. HTTP响应报文

HTTP是基于请求和响应的协议,一次请求对应一次响应。请求和响应的数据格式都遵从HTTP的超文本传输协议。
与HTTP的请求一样,HTTP响应的数据也分为3部分:响应行 ,响应头 ,响应体 这3部分组成。所以,请求是通过浏览器将数据传送到服务器,而响应是将服务器处理的结果响应到浏览器。

2. 抓包查看响应数据

创建一个web项目,将下面的代码复制到hello.html文件中,启动项目,通过:url:http://localhost:8080/hello.html访问这个页面。使用chrome工具抓包(F12)。
【素材】hello.html静态页面

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF‐8">
<title>Insert title here</title>
</head>
<body>
	<h2>hehe world 你好</h2>
<form action="" method="get">
	用户名:<input type="text" name="username" value="jack" /> <br/>    
	密码:<input type="text" name="password" value="1234" /> <br/>    
	<input type="submit" value="get提交" />
</form>
<form action="" method="post">
	用户名:<input type="text" name="username" value="jack" /> <br/>    
	密码:<input type="text" name="password" value="1234" /> <br/>    
	<input type="submit" value="post提交" />    
</form>
</body>
</html>

抓取的响应报文如下图所示:
抓取的响应报文
【响应行】
响应行格式:协议/版本 状态码

常见状态码 :
常见状态码

【响应头】
响应头也是用的键值对key:value,服务器基于响应头通知浏览器的行为。
响应头

常见响应头 :
常见响应头

【响应体】
响应体,就是服务器发送给浏览器的数据。当前请求的资源是hello.html,所以浏览器响应的数据是一个html页面。
响应体

总结 :
响应行:200 404 500 302 304

响应头:

refresh:定时刷新

content-type:告诉浏览器文件类型 解决中文乱码问题

location:和状态码302一起使用实现重定向功能

content-disposition: 告诉浏览器以附件形式解析 通常用于下载

第二章 HttpServletResponse对象

一切皆对象,Servlet程序接受客户端请求之后,通过HttpServletResponse对象来完成客户端的响应。
通过该对象,将数据(可以是文本数据,也可以是二进制数据) 返回给客户端。

1. HttpServletResponse对象作用

HttpServletResponse对象代表服务器响应,tomcat创建HttpServletResponse对象,并将该对象作为参数传递给servlet的service方法。
HttpServletResponse对象作用 :
通过HttpServletResponse对象提供的API,设置响应行,头,体。

2. HttpServletResponse对象常用API

2.1 响应行
setStatus(int code); 向浏览器发送状态码

常用状态码 :
常用状态码

2.2 响应头
setHeader(String name,String value); 设置响应头信息

//	Content-Disposition	告诉浏览器以附件的形式打开这个文件

respon.setHeader("Content-Disposition","attachment;filename="+filename);

常见响应头
常见响应头

2.2.1处理响应乱码 :
乱码产生原因 :
服务器如果需要响应给浏览器中文数据,tomcat使用getWriter()输出字符时,对于中文需要进行编码处理,而tomcat8 默认编码是ISO-8859-1,该码表是不支持中文编码的。所以响应给浏览器,出现乱码。

乱码解决方案 :
通过response.setContentType(“text/html;charset=utf-8”);

1.设置响应的数据类型(mime-type);
2.设置响应的数据编码(utf-8);
处理乱码

2.2.2 重定向
重定向可以去一个servlet,也可以去一个html静态资源
重定向

注 : 开发中使用 response.sendRedirect(“otherServlet”);来实现重定向。

2.3 转发的重定向的区别
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

转发和重定向怎么选择

  1. 如果需要共享request域,必须使用转发;
  2. 如果需要将浏览器地址栏地址变为第二次请求的地址,必须使用重定向;

2.4 响应体
响应体

猜你喜欢

转载自blog.csdn.net/wenzhengzheng/article/details/83044915
今日推荐