一、javase、javaweb、javaee的关系图
CS架构:客户机-服务器,类似要在手机上使用某个软件,需要去下载,用户操作界面的体验感好,但是更新功能需要发布,需要兼容不同类型的系统,
BS架构:浏览器-服务器,类似访问某个网站,不需要下载,用户操作界面的体验感需要网络加载快,并且可以快速体验更新的功能,不需要兼容不同类型的系统。
URL(统⼀资源定位符,获取服务器资源的一种):
格式: 协议://服务器IP:端⼝/路径? key1=value1 & key2=value2
协议:不同的协议有不同的解析;
端口:一台主机运行着很多进程,通过端口来对应进程;
二、HTTP协议是什么?
HTTP协议是建⽴在TCP协议之上的⼀种应⽤;
HTTP连接的特点是客户端发送的每次请求都需要服务器回送响应,从建⽴连接到关闭连接的过程称为“⼀次连接”;
包含HTTP请求跟HTTP响应(响应码)。
下面画个图方便理解一下:
拓展:
-
协议是⼀种约定,规定好⼀种信息的格式,如果发送⽅按照这种请求格式发送信息,那么接 收端就要按照这样的格式解析数据,这就是协议
-
json协议
{
“name”:"jack",
"age":23
}
-
xml协议
<user>
<name> jack </name>
<age> 234 </age>
</user>
三、http常见的请求方法
GET方法: 向服务器获取资源,一般在用于浏览器发起请求,比如常见的查询请求
POST方法: 向服务器提交数据而发送的请求,一般用于表单提交
四、Http常见的响应状态码
浏览器向服务器发起请求时,服务端响应的响应行有个状态码,表示请求结果的状态。
重定向:
浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取;
用处:域名过期、网站改版、域名迁移等,多个域名指向同个主站导流
五、http常见请求头
- 服务端据此获取客户端的基本信息
-
- Accept: 浏览器支持的 MIME 媒体类型, 比如 text/html,application/json,image/webp,/ 等
- Accept-Encoding: 浏览器发给服务器,声明浏览器支持的编码类型,gzip, deflate
- Accept-Language: 客户端接受的语言格式,比如 zh-CN
- Connection: keep-alive , 开启HTTP持久连接
- Host:服务器的域名
- Origin:告诉服务器请求从哪里发起的,仅包括协议和域名 CORS跨域请求中可以看到response有对应的header,Access-Control-Allow-Origin
- Referer:告诉服务器请求的原始资源的URI,其用于所有类型的请求,并且包括:协议+域名+查询参数; 很多抢购服务会用这个做限制,必须通过某个入来进来才有效
- User-Agent: 服务器通过这个请求头判断用户的软件的应用类型、操作系统、软件开发商以及版本号、浏览器内核信息等; 风控系统、反作弊系统、反爬虫系统等基本会采集这类信息做参考
- Cookie: 表示服务端给客户端传的http请求状态,也是多个key=value形式组合,比如登录后的令牌等
- Content-Type: HTTP请求提交的内容类型,一般只有post提交时才需要设置,比如文件上传,表单提交等
六、Http响应头
- Allow: 服务器支持哪些请求方法
- Content-Length: 响应体的字节长度
- Content-Type: 响应体的MIME类型
- Content-Encoding: 设置数据使用的编码类型
- Date: 设置消息发送的日期和时间
- Expires: 设置响应体的过期时间,一个GMT时间,表示该缓存的有效时间
- cache-control: Expires的作用一致,都是指明当前资源的有效期, 控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据,优先级高于Expires,控制粒度更细,如max-age=240,即4分钟
- Location:表示客户应当到哪里去获取资源,一般同时设置状态代码为3xx
- Server: 服务器名称
- Transfer-Encoding:chunked 表示输出的内容长度不能确定,静态网页一般没有,基本出现在动态网页里面
- Access-Control-Allow-Origin: 定哪些站点可以参与跨站资源共享