电脑商城项目(springboot+mybatis)
文章目录
项目环境搭建
1.项目分析
2.项目基本环境
3.项目创建
4.项目测试
4.1 测试能否成功连接数据库
4.2 测试静态资源能否正常加载
用户注册功能
1.创建数据表
2.创建用户的实体类
3.注册-持久层
3.1 规划需要执行的 SQL 语句
3.2 设计接口和抽象方法及实现
3.3 编写映射
3.4 单元测试
4.注册-业务层
4.1 规划异常
4.2 设计接口和抽象方法
4.3 单元测试
5.注册-控制层
5.1 创建响应
5.2 设计请求
5.3 处理请求
5.4 控制层优化设计
6.注册-前端页面
6.1 熟悉 ajax
6.2 前端 js 编写
用户登录功能
1.登录-持久层
规划需要执行的 SQL 语句
2.登录-业务层
2.1 规划异常
2.2 设计接口和抽象方法及实现
2.3 单元测试
3.登录-控制层
3.1 处理异常
3.2 设计请求
3.3 处理请求
4.登录-前端页面
5.用 session 存储和获取用户数据
6.拦截器
修改密码
1.修改密码-持久层
1.1 规划需要执行的 ...
acwing-springboot 8. 创建对战列表与排行榜页面
AcWing:SpringBoot 框架课 - 创建对战列表与排行榜页面遗留操作
游戏结束更新积分
将 userMapper 修改为 public,因为要在对局结束,修改玩家积分
1234567891011121314backend/consumer/WebSocketServer.javapackage com.kob.backend.consumer;...@Component// url链接:ws://127.0.0.1:3000/websocket/**@ServerEndpoint("/websocket/{token}") // 注意不要以'/'结尾public class WebSocketServer { public static UserMapper userMapper; ...}
12345678910111213141516171819202122232425262728293031323334353637backend/consumer/utils/Game. ...
acwing-springboot 7. 实现微服务:Bot代码的执行
项目结构和课程内容
项目结构
红色为当节课内容
代码执行,此项目只支持 java 代码的执行,用的是 joor java 8 实现
可扩展为docker实现,设置内存上限,时间,用命令可执行所有语言代码,并具备一定安全性,因为docker与运行环境隔绝
让 BotRunning System 获得到前端选择的 Bot1.新建 Bot 执行微服务项目
右键backendcloud->新建->模块
2.导包
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657botrunningsystem/pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...
acwing-springboot 6. 实现微服务:匹配系统
流程分析
整个匹配的过程是异步过程,也就是在 Matching system 中执行匹配的过程,会执行一个未知的时间,当出现符合条件的匹配结果时,才会立即将结果返回给前端。这种流程很难用之前的 Http 来达到预期效果(http 为请求一次返回一次,且一般立即响应)。对于匹配系统,请求一次,返回的时间位置,而且可能多次返回。
用 websocket 协议,不仅客户端可以向服务器主动发送请求,服务器也可以主动向客户端发送请求,是一种对称的通信方式。
之前的地图生成方式,是在用户本地(浏览器中)随机生成,如果两名玩家都在本地实现地图,地图就会产生冲突。因此,需要将生成地图的整个过程,由服务器统一完成。此外,判断游戏是否失败的逻辑(蛇撞击),如果在用户本地(浏览器)中实现,就可能会导致用户作弊。所以,不仅是生成地图,而是整个游戏的过程(蛇的移动、判定),都要做服务器端统一完成,服务器端的相关参数、判定结果返回给前端,前端只用来渲染画面,不做任何判定逻辑。
websocket 原理将前端建立的每个 websocket 连接在后端维护起来
添加consumer.WebSocketServer ...
acwing-springboot 创建个人中心页面(下)
1. 整体框架
2. 前端页面布局使用 bootstrap 的 grids system 进行布局。页面规划如下:
在 bootstrap 的网址搜索 grids system。
一行分为 12 份,左边 3 份,为头像;右边 9 份,白色区域 cards,加上按钮创建 bot,获取 Bot 列表
在 views.user.bot.UserBotIndexView.vue 下修改,实现基本的个人 bot 信息展示。
123456789101112131415161718192021222324252627282930313233343536373839404142434445<template> <div class="container"> <div class="row"> <div class="col-3"> <div class="card" style=" ...
acwing-springboot 创建个人中心页面(上)
1. 整体框架
2. 新建表 bot在数据库中新建表 bot
表中包含的列:
id: int:非空、自动增加、唯一、主键
pojo 中定义主键的注解:@TableId(type = IdType.AUTO)
user_id: int:非空注意:在 pojo 中需要定义成 userId,在 queryWrapper 中的名称仍然为 user_id
title: varchar(100)
description: varchar(300)
content:varchar(10000)
rating: int:默认值为 1500
createtime: datetimepojo 中定义日期格式的注解:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
modifytime: datetimepojo 中定义日期格式的注解:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
3.实现后端 API3.1 连接数据库和后端
在 pojo 目录下新建新的文件 Bot ...
acwing-springboot 配置Mysql与注册登录模块(下)
1. 整体框架
1. 前端页面授权当我们登录网站的时候,如果没有登录,强制让用户重定向到 登录界面
在 router 目录下的 index.js 文件下实现。 router -> index.js
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182import store from '../store/index'// 把一些额外信息放到一个额外的域里面,meta信息里面存一下是否要授权,如果需要授权而且没有登录,重定向到登录页面,重定向到登录界面。const routes = [ { path: "/", name: "home", redirect: "/pk/", meta: { r ...
acwing-springboot 配置Mysql与注册登录模块(中)
1. 整体框架
2. 实现 JwtToken 验证
2.1 添加依赖在 pom.xml 中添加下列依赖:
jjwt-apijjwt-impljjwt-jackson
添加之后点击重新加载。
1234567891011121314151617<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.2</version></dependency><dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.11.2</version> <scope>runtime</scope>< ...
acwing-springboot 配置Mysql与注册登录模块(上)
1. 整体框架
应用模型:SpringBoot 的角色是用来处理用户请求,client 端向 spring Boot 发送请求,然后向数据库请求数据,数据库返回数据给前端。在我的理解下 SpringBoot 类似于 管家 的角色。
2. 配置 MySQL
2.1 下载 MySQL
Windows 下载地址
建议下载第二个:
2.2 安装 MySQL点击下载成功的安装包:
其他页面全选默认即可。
2.3 配置 MySQL1. 将C:\Program Files\MySQL\MySQL Server 8.0\bin(如果安装到了其他目录,填写相应目录的地址即可)添加到环境变量PATH中,这样就可以在任意目录的终端中执行mysql命令了。我这里使用的是自己电脑原来安装的MySQL Server 5.7,本质上没有什么区别。
2. mysql服务的关闭与启动(默认开机自动启动,如果想手动操作,可以参考如下命令)打开命令行,输入以下命令关闭:net stop mysql80启动:net start mysql80
或者右击我的电脑,选择 管理 -> ...
acwing-springboot 创建菜单与游戏界面(下)
上节课的问题;地图大小是 13x13 的,初始的时候,假如两条蛇起始的坐标为(11,1)(1,11); 调整一下才不会使得两条蛇在同一时刻进入同一个格子(平局) 把地图变为偶数 x 奇数。 不使用轴对称,使用中心对称。
12345678910111213141516171819// 创建随机障碍物 for (let i = 0; i < this.inner_walls_count / 2; i++) { for (let j = 0; j < 1000; j++) { let r = parseInt(Math.random() * this.rows); let c = parseInt(Math.random() * this.cols); //修改为中心对称 if (g[r][c] || g[this.rows - 1 - r][this.cols - 1 - c]) { ...