项目实战--网页五子棋(用户模块1)

news/2025/1/13 5:14:32/

接下来我将使用Java语言,和Spring框架,实现一个简单的网页五子棋。

主要功能包括用户登录注册,人机对战,在线匹配对局,房间邀请对局,积分排行版等。

这篇文件讲解用户模块的后端代码

1. 用户表与实体类

用户需要用户名,密码,以及自己的积分,对战次数以及获胜次数:

drop table if exists user;
create table user (user_id     int primary key auto_increment,username    varchar(16) unique,password    varchar(16),score       int, -- 积分total_count int, -- 比赛次数win_count   int  -- 获胜次数
);
java">public class User {private int id;private String username;private String password;private int score;private int totalCount;private int winCount;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}public int getTotalCount() {return totalCount;}public void setTotalCount(int totalCount) {this.totalCount = totalCount;}public int getWinCount() {return winCount;}public void setWinCount(int winCount) {this.winCount = winCount;}}

 

2. 后端接口实现

2.1 登录接口 

 mapper:

java">@Mapper
public interface UserMapper {@Select("select * from user where username = #{username}")User getUserByName(String username);
}

service:

java">@Service
public class UserService {@AutowiredUserMapper userMapper;public User login(String username, String password) {User user = userMapper.getUserByName(username);if(user == null || !user.getPassword().equals(password)) {//用户名不存在或者密码错误,返回一个空的用户信息return new User();}return user;}
}

controller:

java">public class UserController {@AutowiredUserService userService;@RequestMapping("/login")public User login(String username, String password, HttpServletRequest request) {if(!StringUtils.hasLength(username) || !StringUtils.hasLength(password)) {//用户名或密码为空,返回空用户信息return new User();}User user = userService.login(username, password);//把登录用户信息储存在session中,方便后续获取,或验证登录状态HttpSession session = request.getSession(true);//参数true表示回话不存在时允许创建新会话session.setAttribute("user", user);return user;}
}

使用postman测试:

可以看到用户名密码正确时能够返回正确的用户信息 

 2.2 注册接口

  mapper:

java">@Mapper
public interface UserMapper {@Select("select * from user where username = #{username}")User getUserByName(String username);@Insert("insert into user(username, password) values (#{username}, #{password})")Integer insertUser(User user);
}

service:

java">public Integer register(User user) {return userMapper.insertUser(user);}

controller:

java">    @RequestMapping("/register")public User register(String username, String password) {if(!StringUtils.hasLength(username) || !StringUtils.hasLength(password)) {//用户名或密码为空,返回空用户信息return new User();}try {User user = new User();user.setUsername(username);user.setPassword(password);userService.register(user);return user;}catch (DuplicateKeyException e) {//用户名存在,引发异常,返回空对象return new User();}}

使用postman进行测试:

用户不存在时注册成功:

用户存在时注册失败:

 

2.3 获取用户信息接口 

 

java">    @RequestMapping("/getLoginUser")public User getLoginUser(HttpServletRequest request) {HttpSession session = request.getSession(false);//回话不存在时不允许创建会话try{return (User)session.getAttribute("user");}catch(NullPointerException e) {//session为null返回空对象return new User();}}


http://www.ppmy.cn/news/1562717.html

相关文章

mac homebrew配置使用

本文介绍mac上homebrew工具的安装、配置过程。homebrew功能类似于centos的yum,用于软件包的管理,使用上有命令的差异。 本次配置过程使用mac,看官方文档,在linux上也可以用,但我没试过,有兴趣的同学可以试试…

【MySQL】第四章 表的操作

系列文章目录 《【MySQL】第一章 MySQL 5.7的安装与卸载》 《【MySQL】第二章 初识数据库》 《【MySQL】第三章 库的操作》 《【MySQL】第四章 表的操作》 《【MySQL】第五章 数据类型》 文章目录 系列文章目录创建表结构语法介绍创建表结构的案例 查看表结构查看当前数据库里…

【OpenCV】第五章 图像滤波与边缘检测

5.1 线性滤波与非线性滤波 图像滤波是图像处理中常用的操作,主要用于去噪、平滑、增强对比度等目的。根据滤波器的特性和应用方法,滤波可以分为线性滤波和非线性滤波两大类。本节将详细介绍这两种滤波的基本概念、区别及其在OpenCV中的实现方法。 线性…

Python从0到100(八十三):神经网络-使用残差网络RESNET识别手写数字

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

css面试常考布局(圣杯布局、双飞翼布局、三栏布局、两栏布局、三角形)

两栏布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &…

HTML 音频(Audio)

HTML 音频(Audio) HTML5 引入了新的音频标签 <audio>,使得在网页上嵌入音频文件变得更加简单。在此之前,播放音频通常需要依赖于第三方插件,如 Flash。但随着 HTML5 的普及,浏览器原生支持音频播放,极大地提升了用户体验和网页性能。 基本用法 要使用 HTML5 的音…

ES中的仓库和快照

文章目录 简介仓库&#xff08;Repository&#xff09;快照&#xff08;Snapshot&#xff09;常用命令记录 简介 在Elasticsearch&#xff08;简称ES&#xff09;中&#xff0c;仓库&#xff08;repository&#xff09;和快照&#xff08;snapshot&#xff09;是两种重要的备份…

nginx 日志规范化意义及实现!

一. 场景&#xff1a; 首先&#xff0c;我们需要明白 log的重要性。服务的log&#xff0c;将是我们分析用户行为的不可缺少的一个核心组件&#xff1b;通过log我们可以获取用户的访问量&#xff0c;qps&#xff0c;rt&#xff0c;pv&#xff0c;状态&#xff0c;通过log进行相应…