用户中心项目总结
第一个学习到的东西是企业做项目流程
我觉得最重要的是两个点
1:做功能之前,你要思考好这个功能究竟要做什么,采用什么技术去做这个功能,实现代码的步骤,罗列清楚,既方便写代码,又方便去理解。
2:一定要在本地测试好!测试好!再测试好!再把代码打包给云服务器
企业做项目流程
需求分析 => 设计(概要设计、详细设计)=> 技术选型 => 初始化 / 引入需要的技术 => 写 Demo => 写代码(实现业务逻辑) => 测试(单元测试、系统测试)=> 代码提交 / 代码评审 => 部署 => 发布上线
重新知道了一些技术是什么用的
spring(依赖注入)
springmvc(web框架,提供接口访问、restful接口等能力)
springboot(快速启动/快速集成项目,整合框架,管理配置,yml文件)
知道了怎么使用MyBatisX插件,根据数据库生成
要注意:mybatis-plus有自动驼峰命名配置,记得关掉,还有配置全局逻辑删除字段,yml配置完,还要在实体类加上@TableLogic,虽然会参与sql查询,但是会过滤掉逻辑删除的。然后删除不是真删掉数据,而是把数据的isDelete(逻辑删除字段) 改成1 (mybatis-plus中逻辑已删除值)
▼text复制代码mybatis-plus: configuration: map-underscore-to-camel-case: false # 关闭驼峰命名,不过直接@TableField(value = "isDelete")这个注解,可以不用管这个 开启的话domain的字段例子:userAccount 会变成 user_account log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl global-config: db-config: # 逻辑删除字段会参与查询,但是会被过滤掉 logic-delete-field: isDelete # 全局逻辑删除字段名 logic-delete-value: 1 # 逻辑已删除值 logic-not-delete-value: 0 # 逻辑未删除值
写业务逻辑的参考
注册逻辑设计
接受参数:用户账号,密码,验证密码
请求类型: POST (基本上只有查询就用GET,其它都用POST就可)
请求体:JSON格式的数据
返回值:true或异常
- 用户在前端输入账户和密码、以及校验码(todo)
- 校验用户的账户、密码、校验密码,是否符合要求
- 传入字段非空(账户、密码、校验密码)
- 账户长度 不小于 4 位
- 密码和确认密码就 不小于 8 位吧
- 账户不包含特殊字符
- 密码和校验密码相同
- 密码强校验,密码由四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。
- 账户不能重复
- 对密码进行加盐加密(密码千万不要直接以明文存储到数据库中)
- 向数据库插入用户数据
多环境
后端多环境类似application-dev.yml ,在通用的application.yml中配置共用的,不共用的,比如数据库,jwt之类的信息,在多环境中额外配置。
建议建议最好在 application.yml中
▼text复制代码spring: datasource: url: jdbc:mysql://${hm.db.host}:3306/hmall?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver username: ${hm.db.username} password: ${hm.db.pw}
类似这样,
然后在具体的环境中
▼text复制代码hm: db: host: 192.168.88.129
不过在后面的微服务网关中,先通过 bootstrap.yaml 中配置的Nacos信息去获取Nacos的通用配置,然后再加载 application.yml 中的具体应用配置。
后端启动多环境 java -jar .\user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
项目部署上线
其实就是把项目放到一个配置很好的电脑上面,然后要求它24小时不关机供人访问
而要把项目放到另一台电脑上,需要一些软件配置。
比如说运行Java程序,需要JDK,项目有用到数据库,那就要在另一台电脑上把东西都配置好
只看了原始部署和宝塔部署,docker部署大概了解一些
关于宝塔
感触最深的应该是放行的端口了,有时候在宝塔这里
放行了,还要在阿里云服务器安全组也放行才能用
宝塔连接mysql
宝塔内mysql先创建数据库
然后指定允许可以连的IP(自己的公网IP,去百度查)
域名部分
前端项目访问流程:用户输入网址 => 域名解析服务器(把网址解析为 ip 地址 / 交给其他的域名解析服务)=> 服务器 =>(防火墙)=> nginx 接收请求,找到对应的文件,返回文件给前端 => 前端加载文件到浏览器中(js、css) => 渲染页面
后端项目访问流程:用户输入网址 => 域名解析服务器 => 服务器 => nginx 接收请求 => 后端项目(比如 8080端口)
域名解析服务器(把网址解析为 ip 地址 / 交给其他的域名解析服务) 这个地方设置要解析的规则,它会自动转换成对应的IP或者其它域名服务再解析
然后在线上可能产生跨域问题:浏览器为了用户的安全,仅允许向 同域名、同端口 的服务器发送请求。
我是因为前端访问是http://47.121.196.172/,默认80端口,
前端项目在生产环境下访问后端的地址http://47.121.196.172,也是默认80端口,只需要在nginx做反向代理,代理到8080端口就可以
做的扩展点
1:AOP实现统一判断管理员权限,全局请求拦截器统一记录请求日志
2:项目登录使用redis实现分布式session,单点登录,设置了set-cookie domain 让域名更通用
3:使用Redis实现限制用户登陆次数

