《回顾》
上一篇,说了一个超简单的定时任务处理方案。还说到了怎么编译War包,把项目运行在Tomcat中。
这篇,依旧不难,而且很短,介绍怎么给自己的项目,开启HTTP/2,并使用HTTPS协议。
短,不一定都是缺陷。
一、简单了解HTTP/2
HTTP/2 (原名HTTP/2.0)即超文本传输协议2.0,是下一代HTTP协议
HTTP/2 更高效、更简单、更强大,它在传输层解决了以前我们HTTP1.x中一直存在的问题。
新的二进制格式
HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性需要考虑的场景必然很多,二进制则不同,只认0和1的组合。
多路复用
即连接共享,即每一个request都是连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。
header压缩
HTTP2.0使用HPACK 压缩格式,压缩请求和响应表头源数据,来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。
服务器推送
服务器可以对一个客户端请求发送多个响应。 换句话说,除了对最初请求的响应外,服务器还可以向客户端推送额外资源,而无需客户端明确地请求。
二、生成HTTPS证书
虽然,HTTP/2支持使用明文的HTTP协议,但是SpringBoot开启HTTP/2必须使用HTTPS。
1、进入Java安装目录
执行命令:
bin/keytool -genkey -alias localhost -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -dname "CN=localhost, OU=zhoudong, O=zhoudong, L=bj, ST=bj, C=CN"
查看证书是否生成:(就在执行命令的路径下)
三、为项目配置HTTP/2、HTTPS
1、将已经生成的证书,复制到项目resources目录
2、配置文件增加配置
#端口号
server.port=8443
#配置ssl (https)
# keystore.p12的路径
server.ssl.key-store=classpath:keystore.p12
# 之前输入的口令
# 之前输入的口令
server.ssl.key-store-password=mypassword
#配置ssl (https) end
#使用http2
3、编写一个用于测试的接口
@GetMapping("/index")
publicMap index(){
log.info("访问index....");
returnMap.of("msg","hello.");
}
4、启动应用
访问:
https://localhost:8443/index
5、关于提示"不安全连接"问题
因为属于自签名证书,所以不被浏览器信任,忽略掉就可以。工作中,公司会花钱去买证书。
2018年,最后一篇技术文章。祝:假期愉快。
四、源码获取
SpringBoot2.1系列的的文章,每一篇都会对应一个单独的项目。
所有项目源码,均托管在Gitee,并会持续更新。
对技术,我始终充满敬畏之心,我也是怀着这种敬畏,去写每一篇文章,如果你觉得我写的对你有帮助,那就关注或帮忙分享朋友圈吧。
实在不行,点个「好看」也是爱。
领取专属 10元无门槛券
私享最新 技术干货