关于servlet和http协议

学习笔记

注:此文仅为个人学习笔记,走过路过前辈们,如果文章有问题还请批评指正,博主本人时刻虚心请教!
b站视频链接https://www.bilibili.com/video/av47730661?p=13
http简书:https://www.jianshu.com/p/f1ab6182d6fc
(持续更新ing…)

一、Servlet:

1) server applet:运行在服务器端的小程序

就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则
在这里插入图片描述
我们可以自定义一个类,来实现servlet接口,复写方法
A创建java EE选项
B定义一个类,实现Servlet接口
C实现接口中的抽象方法
D配置servlet

2) Tomcat执行servlet原理:

1.当服务器接收到客户端浏览器请求时,会解析请求的url路径,获取访问的servlet的资源路径
2.查找web.xml文件,是否有对应的标签体内容
3.如果有,则找到对应的全类名
4.Tomcat会将字节码文件加载进内存,并创建其对象
5.调用其方法

3) Servlet生命周期5个方法

1.被创建:执行init方法,只执行一次
2.提供服务:执行service方法,可执行多次
3.被销毁:执行destroy,只执行一次
4.Servletconfig:获取Servlet配置对象;
5.Getservletinfo:获取servlet信息,版本/作者等

4) Service

// 判断请求方式
String method =req.getMethod();
If(“Get”.equal(method)){doGet()}
Else if(“Post”.equal(method){doPost()}

二、HTTP

1) 超文本传输协议

定义了客户端与服务器通信时,发送的数据格式
特点:
1.基于TCP/IP的高级协议
2.默认端口:80
3.基于请求/响应模型的,一次请求对应一次响应
4.无状态:每次请求之间相互独立,不能交互数据

2) http版本:

1.0 单连接短连接,定义了三种请求方法: GET, POST 和 HEAD方法
1.1 连接复用,新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
在这里插入图片描述

3) 请求消息数据格式

ServletRequest
**1.请求行:**请求方式 请求url 协议 /版本
Get方式,参数在请求头中,url长度有限制,不安全;
Post方式,参数在请求体中,url长度没有限制,相对安全
2.请求头
Host:请求主机localhost
User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
通过这里获取浏览器信息,可用于解决浏览器兼容性问题
Accept/Accept-Language/Accept-Encoding
Referer:
A:防盗链(盗版网站盗取正版视频链接)if(referer.equals(“优酷首页”){播放影音}else{})
B:统计工作
3.请求空行
**4.请求体(正文):**存放post参数

4) 响应消息数据格式

ServletResponse
1.状态码:
常用状态码
200:响应成功
302:重定向跳转,跳转地址通过响应头中的Location属性指定
400:客户端请求有语法错误,参数错误,不能被服务器识别
403:服务器接收到请求,但是拒绝提供服务(认证失败)
404:请求资源不存在
500:服务器内部错误
2.响应头部,与请求头部类似,为响应报文添加了一些附加信息
Server - 服务器应用程序软件的名称和版本
Content-Type - 响应正文的类型(是图片还是二进制字符串)
Content-Length - 响应正文长度
Content-Charset - 响应正文使用的编码
Content-Encoding - 响应正文使用的数据压缩格式
Content-Language - 响应正文使用的语言
3.响应正文,是请求响应的最终结果,都在响应体里。可以是字符串可以是字符流

三、HTTP2

HTTP2详解参考简书:https://www.jianshu.com/p/e57ca4fec26f
http2细节讲解,没用上,没详细看https://blog.csdn.net/whatday/article/details/101927361

1)http/1.1存在的问题:

1.TCP链接数限制,对于同一个域名,浏览器最多只能同时创建 6~8个TCP 连接,此时采用域名分片技术,但占用CPU和内存,会造成网络拥挤堵塞等;
2.线头阻塞
3.Header内容多,没有压缩优化方案
4.为了尽可能减少请求数,需要做合并文件、雪碧图、资源内联等优化工作,但是这无疑造成了单个请求内容变大延迟变高的问题,且内嵌的资源不能有效地使用缓存机制
5.明文传输不安全

2)http2的优势

1.二进制分帧层:帧是数据传输的最小单位,以二进制传输代替原本的明文传输,原本的报文消息被划分为更小的数据帧
2.多路复用
3.服务端推送
4.Header压缩:使用 HPACK 算法来压缩首部内容
5.应用层的重置连接
6.请求优先级设置
7.流量控制
8.HTTP/1 的几种优化可以弃用
合并文件、内联资源、雪碧图、域名分片对于 HTTP/2 来说是不必要的,使用 h2 尽可能将资源细粒化,文件分解地尽可能散,不用担心请求数多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值