HTTP
- 概念:HyperText Transfer Protocal,超文本传输协议,规定了浏览器和服务器之间数据传输的规则
- HTTP协议特点
- 基于TCP协议;面向连接,安全
- 基于请求-响应模型的:一次请求对应一次响应
- HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的
1.请求行:请求数据的第一行。其中GET表示请求方式。 /表示请求的资源路径,HTTP/1.1表示协议版本
2.请求头:第二行开始,格式为key:value形式
3.请求体:POST请求的最后一部分,存放请求参数
- 常见的HTTP请求头:
- host:表示请求的主机名
- User Agent:浏览器版本,例如Chrome浏览器标识类似Mozlia/5.0
- Accept:表示浏览器能接收的资源类型。如text/,image/或者/表示所有;
- Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同的语言网页
- Accept:Encoding:表示浏览器可以支持的压缩类型,例如gzip,deflate等。
- Get请求和Post请求的区别
1.Get请求请求参数在请求头中,没有请求体
POST请求请求参数在请求体中
2.GET请求请求参数大小有限制,POST没有
HTTP-响应数据格式
- 响应数据分为3部分
1.响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码。OK表示状态码描述
2.响应头:从第二行开始,格式为Key:value形式
3.响应体:最后一部分,存放响应数据
常见的HTTP响应头:
- Content-type:表示该响应内容的类型,例如text/html
image/jpeg:
- Content-Length:表示该响应内容的长度(字节数)
- Content:Encoding:表示该响应压缩算法:例如GZIP
- Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒
常见状态码:
各类别常见状态码:
2xx (3种)
200 OK:表示从客户端发送给服务器的请求被正常处理并返回;
204 No Content:表示客户端发送给客户端的请求得到了成功处理,但在返回的响应报文中不含实体的主体部分(没有资源可以返回);
206 Patial Content:表示客户端进行了范围请求,并且服务器成功执行了这部分的GET请求,响应报文中包含由Content-Range指定范围的实体内容。
3xx (5种)
301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL;
302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL;
301与302的区别:前者是永久移动,后者是临时移动(之后可能还会更改URL)
303 See Other:表示请求的资源被分配了新的URL,应使用GET方法定向获取请求的资源;
302与303的区别:后者明确表示客户端应当采用GET方式获取资源
304 Not Modified:表示客户端发送附带条件(是指采用GET方法的请求报文中包含if-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中任一首部)的请求时,服务器端允许访问资源,但是请求为满足条件的情况下返回改状态码;
307 Temporary Redirect:临时重定向,与303有着相同的含义,307会遵照浏览器标准不会从POST变成GET;(不同浏览器可能会出现不同的情况);
4xx (4种)
400 Bad Request:表示请求报文中存在语法错误;
401 Unauthorized:未经许可,需要通过HTTP认证;
403 Forbidden:服务器拒绝该次访问(访问权限出现问题)
404 Not Found:表示服务器上无法找到请求的资源,除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用;
5xx (2种)
500 Inter Server Error:表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时;
503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求;
Servlet
快速入门
provide的依赖范围是编译环境和测试环境有效,但是在运行环境无效,如果是web项目打成war包是没有这个jar包的,他就不会报错,tomcat内嵌了servlet这个jar包,如果web项目有这个jar包将来会冲突,所以在运行环境把这个jar包排除掉。
Servlet执行流程
Servlet生命周期
Servlet体系结构
因为各种请求get和post请求方式它们的请求消息不太一样,我们要去分别的处理呀。不同的方法是如何调用的呢就是获取不同的请求方式,不同的逻辑判断
Servlet urlPattern配置
XML 配置方式编写Servlet