秒杀项目(前后端分离)

1P/11P项目开篇

技术点总结

1、安装开发工具

2P/11p 项目架构介绍

在这里插入图片描述

  • 常见的请求:返回前端页面HTML:Model+HTML模板
  • ajax异步请求:返回json数据【返回特定格式的字符串只返回Model】
  • 本项目采用前后端分离架构,从视图层返回的数据是json
  • 浏览器先发送请求到静态资源服务器(niginx服务器中部署静态资源文件)或静态页面,然后再页面渲染结束时;发送一个异步的ajax请求,ajax程序从controller层中得到响应的json数据,执行
  • 回调函数。将数据渲染到静态页面上去。浏览器先后发送两次请求。
  • 45:00:讲解项目代码目录结构【后端】
  • 48:00: 前端代码结构
    在这里插入图片描述
  • mysql数据库表一共5张表
    在这里插入图片描述
  • 1、用户表
  • 2、商品表
  • 3、商品库存表【商品表和库存表为什么要分开,是因为要考虑到下单时扣减库存,如果不分开的话,就要在商品列表中对商品加行锁,会影响并发效率】
  • 4、商品活动
  • 5、订单表
  • 面试题:为什么要拆分那么多层?降低耦合度。比如说dao层和业务层对数据的要求不一样,从dao层查询得到一个完整的用户数据,肯定是包含用户的密码的,但是不能将用户密码直接返回给前端页面,有风险。所以要通过有任务层去进行处理。

2p/11p 项目架构与运行

在这里插入图片描述

  • 使用华为云服务器
    在这里插入图片描述
  • 开放端口号,在控制台,安全组中配置
    在这里插入图片描述
  • 27:00之前,部署服务器,mysql
  • 安装JDK1.8
  • 安装maven,修改maven的镜像地址为阿里云仓库。
  • 安装idea开发工具
  • 安装VSVCode
  • 安装workbench【也可以在idea中进行查看】
  • 打开idea,配置maven,打开项目,将项目部署。
  • 修改配置文件
    在这里插入图片描述
  • 启动服务进行测试。
  • 配置前端,打开vscode
  • 安装插件
    在这里插入图片描述
  • 打开项目,配置后台路径
    在这里插入图片描述
  • open inlive server
  • 成功。
  • 再次总结流程
    在这里插入图片描述

热点问题1:00开始

在这里插入图片描述
在这里插入图片描述

  • 演示springboot快速构建项目
    在这里插入图片描述

Spring

  • Ioc的好处? 自动注入@Autowird。管理bean。
  • Ioc的字面意思是控制反转,程序员自己创建对象并管理对象之间的关系叫正转。而控制反转的意思就是将创建对象管理对象的任务交给容器。就是把bean的管理的权力交给spring。好处就是降低我们程序中bean之间的耦合度,bean可以实现可插拔,如果在程序中想要置换某一个bean,非常方便。通常来说像实体类这种频繁发生变化的对象就不去用ioc去管理,而像service和dao这种单例的东西、可以复用的东西会采用ioc去管理。
  • Ioc还能管理bean的作用域和生命周期!
  • 自定义方法,添加以下注解即可。
    在这里插入图片描述
    在这里插入图片描述
  • BeanFactory和applicationContext的区别?

beanfactory就是一个bean的工厂,Ioc通过它来管理bean,applicationContext继承于beanfactory,beanfactory是给内部人士用的,applicationContext是一个子接口,功能更强,给开发者使用的。

  • getBean方法,applicationContext的核心功能?
    在这里插入图片描述

springboot

  • springboot如何实现自动装配?
    在这里插入图片描述
    答案

在这里插入图片描述

AOP的一些理解
一些注解的使用理解
在这里插入图片描述

SpringMvc

  • SpringMvc的一些操作流程?
    在这里插入图片描述
  • 最好是看一下源码,现在看了一遍,不太理解。下次再看。
  • 把这个流程背下来,跟着源码走一下断点。

Mybatis1:00,再看一次,整理一下。

在这里插入图片描述

  • 查看mybatis源码【下次再看】

开始登录注册功能的开发【1:24开始】

3p/11p 用户登录与注册

介绍公共代码部分

后端部分

  • 统一异常处理, -所有的异常抛出,在controller层统一处理。
    在这里插入图片描述

  • 统一定义返回前端json数据的格式
    在这里插入图片描述

  • 工具箱中新建方法:md5加密方法

  • 还有一个日期的格式化方法

  • 在controller中使用统一异常处理

  • springmvc提供一个机制,类似于aop,只针对springmvc这一层。当任何一个controller报异常时,就会调用此方法处理。
    在这里插入图片描述

  • 修改logback-spring-dev.xml中的日志文件保存位置
    在这里插入图片描述

前端部分,使用bootstrap+jquery,轻量级的。
在这里插入图片描述
在这里插入图片描述
用户注册功能

  • 先看user_info表,再看user实体类,user实体类中有非空校验,虽然在前台也有校验,但是有个别请求如果不走前台逻辑,直接通过地址栏访问,很容易就出问题,所以在后台也要做校验。
    在这里插入图片描述
  • 校验工具如下:按照工具要求对实体类进行注解。
    在这里插入图片描述
  • 上面的注解是由objectValidator使用,具体如下:
    在这里插入图片描述
  • 查看dao层。
  • 查看userMapper,补充一个根据手机号查询用户的方法
    在这里插入图片描述
  • 查看service层,userservice接口
    在这里插入图片描述
    在这里插入图片描述
  • controller层,看userController,模拟发送验证码
    在这里插入图片描述
  • 注册方法
  • 登陆就是将user保存在session中。session保存在服务器上,相当于一个私人保险柜。
  • 注销登录就是销毁session中的数据
  • 查看登录状态
  • 前端注册登录的逻辑。主要看js代码
  • register.js代码。
    在这里插入图片描述
    在这里插入图片描述
  • 注册成功后跳转到注册页面
  • login.js
  • 如果一旦controller报错后,直接跳转到ExceptionAdvice进行处理
    在这里插入图片描述
  • 解决跨域问题
    在这里插入图片描述

第四节 商品列表与详情

  • Aop和拦截器的区别?使用场景?

很多地方都需要去验证用户是否登录,在这样情况下,很容易就想到aop实现,但是在这种情况下,应该使用拦截器实现。Aop是面向方法名,面向方法去过滤的。拦截器是面向url去过滤的。Filter是更高层的过滤,一般不用filter。

  • 定义拦截器
    在这里插入图片描述
  • 注册拦截器,配置需要拦截的路径。
    在这里插入图片描述
  • 显示登录用户的登录信息(登录状态)
    在这里插入图片描述

主要关键是说清楚拦截器,以及拦截器的三个方法的执行时机。为什么要使用prehandle。

热点问题1:跨域问题

方法1:代理方式,不管是访问前台服务器还是后台服务器,都通过代理服务器Nigix进行访问,
在这里插入图片描述

  • 缺点:不灵活。

方法2:通过纯前端方法解决,是一种欺骗行为,浏览器其实是要访问动态资源,但是假装访问静态资源。
在这里插入图片描述

  • 局限性很大【请求方式只能是Get,不能是post】,不建议使用,理解就行

方法3:通过后端注解实现。只需要后台代码中允许就可以。
在这里插入图片描述
在前端ajax请求中设置一下:
在这里插入图片描述

  • cookie中就可以携带允许跨域的路径。
    在这里插入图片描述

热点问题2:cookie和session

cookie是会员卡,用户可以带走,不安全,可以篡改。session是保险柜,存放在服务器上,用户只保存一个保险柜编号,比较安全。敏感信息使用session。cookie携带的信息有限,2k。session不限制。
在这里插入图片描述

  • cookie是手动创建的,session是tomcat自动创建的。
  • session是依赖于cookie实现的,可以保存Object类型的数据。
    在这里插入图片描述
    在这里插入图片描述
  • 注意的是session是保存在服务器的tomcat内存中,不能保存在硬盘上,在硬盘保存效率太低了。因为每次请求都要访问。
  • 但是session的缺点是服务器压力过大,保存太多的session。session默认30分钟后过期。
  • 搞清楚状态管理和权限管理的区别,先记住用户状态,权限管理是依赖于状态,判断用户类型,决定角色的权限。

但是上面的情况只适用于单个服务器的情况,不适用于分布式。
分布式:使用redis存储session。
多个服务器就可以共享session。
在这里插入图片描述

  • 但是对于多客户端的情况下,使用session不能解决问题。使用tocken解决。用户请求后server1,就给他创建一个tocken
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值