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

ops/2025/1/13 9:59:22/

接下来我将使用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/ops/149693.html

相关文章

【JavaEE进阶】获取Cookie/Session

🍀Cookie简介 HTTP协议自身是属于 "⽆状态"协议. "⽆状态"的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信,和下次通信之间没有直接的联系.但是实际开发中,我们很多时候是需要知道请求之间的关联关系的. 例如登陆⽹站成…

android分区和root

线刷包内容: 线刷包是一个完整的android镜像,不但包括android、linux和用户数据,还包括recovery等。当然此图中没有recovery,但是我们可以自己刷入一个。 主要分区 system.img 系统分区,包括linux下主要的二进制程序。 boot.img…

【excel】VBA股票数据获取(搜狐股票)

文章目录 一、序二、excel 自动刷新股票数据三、付费获取 一、序 我其实不会 excel 的函数和 visual basic。因为都可以用matlab和python完成。 今天用了下VBA,还挺不错的。分享下。 上传写了个matlab获取股票数据的,是雅虎财经的。这次是搜狐股票的数…

Web前端界面开发

前沿:介绍自适应和响应式布局 自适应布局:-----针对页面1个像素的变换而变化 就是我们上一个练习的效果 我们的页面效果,随着我们的屏幕大小而发生适配的效果(类似等比例) 如:rem适配 和 vw/vh适配 …

负载均衡概述

nginx是典型的负载均衡组件,还有haproxy,这些是软件负载均衡。另一种是硬件负载均衡,像F5等。在微服务开发过程中,还会有像ribbo,loadbalance等等。 从大的方面,可以把负载均衡分两类: 1. 服务端负载均衡 …

ChatGPT 主流模型GPT-4/GPT-4o mini的参数规模是多大?

微软论文又把 OpenAI 的机密泄露了??在论文中明晃晃写着: o1-preview 约 300B;o1-mini 约 100BGPT-4o 约 200B;GPT-4o-mini 约 8BClaude 3.5 Sonnet 2024-10-22 版本约 175B微软自己的 Phi-3-7B,这个不用约…

在Node.js中借助腾讯云SDK调用混元大模型

前言 随着人工智能技术的不断发展,强大的大模型如腾讯的混元大模型(HunYuan)为开发者提供了丰富的智能服务能力。本文将详细介绍如何在 Node.js 环境中使用腾讯云提供的 SDK 调用混元大模型,构建一个简单的 API 接口来实现与模型…

使用conda出现requests.exceptions.HTTPError 解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…