导入黑马项目
本项目不采用微服务的方式,是一个单体的项目,因为核心是学习redis的用法,但是采用前后端分离的模式。springcloud教程属于微服务。
后端将来肯定是部署在tomcat上,但暂时在idea上开发和部署,前端部署在NGINX服务器上。移动端或者pc端请求页面,首先都是想NGINX请求,等到页面资源,然后NGINX向服务端发起请求来查询数据,数据可能来自于Redis集群,也可能来自MySql集群,然后数据再依次返回给用户。虽然是个单体项目,但还是要考虑到将来的并发能力,项目一点要具备水平扩展的能力,即将来部署再tomcat上之后,一个扛不住压力,水平扩展为多个tomcat,做一个tomcat负载均衡的集群,如下图所示。一旦部署集群以后,将来就会出现集群间数据共享的一些问题,也会在后续讲解。
导入后端项目
- 在idea中打开hm-dianping项目
- 启动项目
- 在浏览器访问http://localhost:8081/shop-type/list,如果可以看到数据则表示后端部署成功
导入前端项目
已经把整个前端代码部署到了NGINX上,我们不需要做任何的配置,只需要去启动。资料在D盘的lesson中
- 在nginx所在目录下打开一个CMD窗口(按住shift右击),输入命令:start nginx.exe
- 打开chrome浏览器,在空白页面点击鼠标右键,选择检查,即可打开开发者工具
- 然后打开手机模式
- 然后访问:http://127.0.0.1:8080,即可看到页面
基于Session实现登录
三个步骤
.
发送短信验证码:用户发送请求,服务端校验手机号是否格式正确,不符合则重来,若符合则生成验证码,咋发给用户之前,还要保存在session中,便于后续与用户提交的验证码进行对比。
短信验证码登录、注册:用户收到验证码之后提交验证码和手机号,首先校验验证码,不符合重来,若一致则根据手机号查询数据库,用户若存在,保存用户到session,若用户不存在,快速创建用户,并且保存用户信息到数据库,然后保存用户到session。
校验登录状态:我们将用户保存在session中,将来就要基于session进行校验,session基于cookie,每一个session都有一个sessionID保存在浏览器cookie中,当用户访问时,携带浏览器的cookie,而cookie中有sessionID,从而获得sessionID,从而从session中获取用户,如果session中是否存在该用户,将用户信息缓存起来,因为后续的业务可能会用到用户的信息。此处我们选择缓存到ThreadLocal中,即线程域对象。在业务当中,每一个请求到达我们的微服务,都是一个线程,ThreadLocal会把数据保存到每一个线程的内部,在线程内部创建一个map去保存,这样每一个线程都有自己独立的存储空间,相互不干扰。最后放行。