当前位置: 首页 > news >正文

服务器搭建:从零开始创建自己的Spring Boot应用【含登录、注册功能】

当然,你可以先按照IDEA搭建SSM框架【配置类、新手向】完成基础框架的搭建

步骤 1:设计并实现服务器端的用户数据库

在这个示例中,我们将使用MySQL数据库。首先,你需要安装MySQL并创建一个数据库以存储用户信息。以下是一些基本步骤:

  1. 安装MySQL,并确保MySQL服务器正在运行。
  2. 使用MySQL客户端工具登录到MySQL服务器。
  3. 创建一个新的数据库,例如 “android”。
CREATE DATABASE android_db;
  1. 创建一个用户表,用于存储用户信息,包括用户名和密码。
USE android_db;CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(255) NOT NULL,password VARCHAR(255) NOT NULL
);

在这里插入图片描述

步骤 2:使用Spring Boot搭建Web服务器

1. 创建一个Spring Boot项目

你可以使用Spring Initializer(https://start.spring.io/)来生成项目模板,包含Web和MySQL依赖。

2. 配置数据库连接信息

application.propertiesapplication.yml 文件中添加以下内容:

spring.datasource.url=jdbc:mysql://localhost:3306/userdb
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///数据库名称?useSSL=false&useUnicode=true&characterEncoding=utf8username: 数据库用户名password: 数据库密码
mybatis:mapper-locations: classpath:mappers/*.xmltype-aliases-package: com.leo.springbootbackend.pojo.doconfiguration:map-underscore-to-camel-case: true

确保替换 your_usernameyour_password 为你的数据库用户名和密码。

3. 导入lombook

在项目中引入 Lombok 依赖并启用 Lombok 插件,以便编译器能够正确处理 Lombok 注解。如果你使用的是 Maven,你可以在pom.xml添加以下依赖:

        <!--    lombook   --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version> <!-- 版本号可能会有所不同 --><scope>provided</scope></dependency>

在这里插入图片描述

如果你使用的是 Gradle,你可以在 build.gradle 文件中添加以下依赖:

implementationOnly 'org.projectlombok:lombok:1.18.22' // 版本号可能会有所不同
annotationProcessor 'org.projectlombok:lombok:1.18.22' // 版本号可能会有所不同

确保配置正确,以使 Lombok 能够在你的项目中正常工作。

4. 创建一个实体类 User 用于表示用户信息。

package com.leo.springboot.pojo.entity;import lombok.Data;
import lombok.NonNull;@Data
public class User {@NonNull private Long id;@NonNull private String username;@NonNull private String password;
}

5. 创建一个用户仓库接口 UserDAO

package com.leo.springboot.dao;import com.leo.springboot.pojo.entity.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;@Mapper
public interface UserDao {@Select("SELECT * FROM users WHERE username = #{username}")User findByUsername(String username);@Insert("INSERT INTO users (username, password) VALUES (#{username}, #{password})")Integer save(User user);
}

方法一:使用注解:

package com.leo.springboot.dao;import com.leo.springboot.pojo.entity.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;@Mapper
public interface UserDao {@Select("SELECT * FROM user WHERE username = #{username}")User findByUsername(String username);@Insert("INSERT INTO user (username, password) VALUES (#{username}, #{password})")User save(User user);
}

上面的代码中,通过@Select注解在findByUsername方法上定义了查询操作的SQL语句。

方法二:使用XML映射文件:

如果你更愿意将SQL语句定义在XML映射文件中,你可以在XML文件中定义findByUsername方法的SQL语句,就像之前所示。

UserMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.leo.springboot.dao.UserDao"><select id="findByUsername" parameterType="java.lang.String" resultType="com.leo.springboot.pojo.entity.User">SELECT * FROM user WHERE username = #{username}</select><insert id="save" parameterType="java.lang.Integer">INSERT INTO user (username, password) VALUES (#{username}, #{password})</insert>
</mapper>

然后,再次确保你的application.propertiesapplication.yml中指定了映射文件的位置:

mybatis.mapper-locations=classpath:mapper/*.xml

6. 创建用户服务(Service)

1.创建一个UserService接口和实现类UserServiceImpl

UserService.java:

package com.leo.springboot.service;import com.leo.springboot.pojo.entity.User;
import org.springframework.stereotype.Service;public interface UserService {User getByUsername(String username);Integer save(User user);
}

UserServiceImpl.java:

package com.leo.springboot.service.impl;import com.leo.springboot.dao.UserDao;
import com.leo.springboot.pojo.entity.User;
import com.leo.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userRepository;@Overridepublic User getByUsername(String username) {return userRepository.findByUsername(username);}@Overridepublic Integer save(User user) {return userRepository.save(user);}
}

7. 创建用户控制器(Controller)

package com.leo.springboot.controller;import com.leo.springboot.pojo.entity.User;
import com.leo.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@PostMapping("/login")public Boolean loginUser(@RequestBody User user) {String username = user.getUsername();String password = user.getPassword();User storedUser = userService.getByUsername(username);if (storedUser != null && storedUser.getPassword().equals(password)) {return true;}return false; // Return null or an error message for failed login}@PostMapping("/register")public Integer registerUser(@RequestBody User user) {// You can add validation and error handling herereturn userService.save(user);}
}

使用@RestController注解标识这是一个REST控制器。@RequestMapping注解定义了控制器的基本路径。

8. 运行应用

  1. 使用IDE运行Spring Boot应用程序。

  2. 应用将启动并监听端口8080(可以在application.propertiesapplication.yml文件中进行配置)。

并在数据库中插入数据
在这里插入图片描述

步骤8:测试API

你可以使用工具如Postman或curl来测试你的API。以下是一些示例API调用:

  • 注册用户:POST请求 http://localhost:8080/user/register,并在请求体中传入JSON数据,例如:
{"username": "abc","password": "123"
}

在这里插入图片描述

  • 用户登录:POST请求 http://localhost:8080/users/login,并在请求体中传入JSON数据,例如:
{"username": "leo","password": "123"
}

在这里插入图片描述

相关文章:

服务器搭建:从零开始创建自己的Spring Boot应用【含登录、注册功能】

当然&#xff0c;你可以先按照IDEA搭建SSM框架【配置类、新手向】完成基础框架的搭建 步骤 1&#xff1a;设计并实现服务器端的用户数据库 在这个示例中&#xff0c;我们将使用MySQL数据库。首先&#xff0c;你需要安装MySQL并创建一个数据库以存储用户信息。以下是一些基本步…...

家用小型洗衣机哪款性价比高?公认好用四款内衣洗衣机推荐

小型的内衣洗衣机由于体积小巧&#xff0c;而且实用&#xff0c;非常适合没有太多空闲时间的上班族以及小型住户的使用。想要挑选到一款能够满足每日清洗需要&#xff0c;同时拥有便携与高效率的小型内衣洗衣机&#xff0c;也许会让你选择得有些烦恼。我们为大家挑选了一些性价…...

Sui zkSend,创建链接可直接发送SUI,快来体验吧

基于zkLogin和Sui的本机密码学构建&#xff0c;zkSend允许用户创建包含特定数量SUI的链接。该链接可以通过任何消息客户端发送&#xff0c;例如电子邮件和直接消息&#xff0c;甚至可以在媒体上转换成QR码。 使用zkSend发送SUI比复制和粘贴钱包地址&#xff0c;然后授权token转…...

SQL面试

#(1)请写出要查询员工J开头的名字其工号(EMPNO)及部门名称(DEPTNA)的 SQL语句SELECT e.emp,e.name,d.deptna FROM emp e left join dept d on d.deptno e.deptno where e.name like J%#(2)请写出要查询 Kevin 所在部门的部门代号(DEPTNO)及部门名称(DEPTNA)的 SQL 语句SELECT e…...

Elasticsearch(一)---介绍

简介 Elasticsearch是一个基于Lucene的实际的分布式搜索和分析引擎。设计用于云计算中&#xff0c;能够达到近实时搜索&#xff0c;稳定&#xff0c;可靠&#xff0c;快速&#xff0c;安装使用方便。基于RESTful接口。 官网地址&#xff1a;Elasticsearch 平台 — 大规模查找…...

Vscode LinuxC++环境配置

C环境配置 文章目录 C环境配置一、Visual Studio Code相关信息二、Python开发环境配置三、C 开发环境配置四、第一个C程序五、附录&#xff1a;vs code 中变量解释 一、Visual Studio Code相关信息 Visual Studio Code 下载地址&#xff1a;https://code.visualstudio.com/dow…...

【tensorboard打开失败】No dashboards are active for the current data set.

这里我再跟视频学的时候&#xff0c;找了很多的指令&#xff0c;说是对应版本不一样&#xff0c;但是发现用了很多指令都可以弹出来跳转的url&#xff0c;那应该就不是输入指令的问题 直到我想把logs里面的文件删掉重新跑的时候&#xff0c;我突然注意到这里有中文字符&#xf…...

客服管理者如何调动客服人员的积极性?

客户是企业的财富&#xff0c;良好的客户服务体验可以有效地促进企业的销售和声誉&#xff0c;因此&#xff0c;客服工作显得尤为重要。而客服人员的积极性直接影响了整个客服部门的质量和效率。如何调动客服人员的积极性&#xff0c;成为了每个客服管理者都需要面对的难题。本…...

Jenkins自动化部署简单配置

下载安装jenkins 安装Jenkins步骤 点击Next的时候会有jdk版本跟Jenkins版本不符合的情况 1. 看下任务管理器内Jenkins服务是否启动&#xff0c;在浏览器里面输入localhost:2023&#xff08;端口号是安装时输入的&#xff09; 2. 根据路径找到放置密码的文件&#xff08;C…...

Linux————内置命令大全

&#xff08;一&#xff09;内置命令 Shell 内置命令&#xff0c;就是由 Bash Shell 自身提供的命令&#xff0c;而不是文件系统中的可执行脚本文件。内置命令的执行速度通常优于外部命令&#xff0c;因为执行外部命令不仅会导致磁盘I/O操作&#xff0c;而且还需要为其fork一个…...

从用户角度出发,如何优化大数据可视化体验|北京蓝蓝UI设计公司

作者&#xff1a;蓝蓝设计-鹤鹤 大数据已经成为人们探索世界的新工具。但是&#xff0c;对于普通用户而言&#xff0c;大数据往往比较抽象和难以理解&#xff0c;因此&#xff0c;大数据可视化作为一种非常有效的工具工具被广泛应用。然而&#xff0c;在实际应用中&#xff0c…...

【vue】封装树形下拉框组件 el-popover+el-tree+el-select

父组件使用 <template><div>{{ array }} 更多属性详见wgyTreeSelect组件<wgyTreeSelectv-model"array":list"list":multiple"true":disabled-ids"[111,113,2]"/></div> </template><script> /*…...

docker安装Kafka,SpringBoot整合Kafka

#拉取镜像 docker pull wurstmeister/zookeeper #运行容器 docker run --restartalways --name zookeeper -p 2181:2181 \ -v /etc/localtime:/etc/localtime -d wurstmeister/zookeeper#拉取镜像 docker pull wurstmeister/kafka#运行容器 docker run --restartalways --name …...

MySQL - InnoDB 的事务支持、锁机制

InnoDB 存储引擎实现了强大的事务支持和锁机制&#xff1a; 事务原理&#xff1a; ACID 属性&#xff1a;InnoDB 支持 ACID&#xff08;原子性、一致性、隔离性、持久性&#xff09;属性&#xff0c;确保数据的一致性和可靠性。事务是一组 SQL 操作&#xff0c;要么全部执行&…...

Android Studio的笔记--Module新建和使用

Module新建和使用 新建module使用module android studio 中module的建立和使用。比如修改工程为module的步骤&#xff0c;引用module的步骤。 新建module 1、新建android工程&#xff0c;New Project.包名为com.lxh.serialport 2、修改工程为module。 2.1、在app下的build.pro…...

Git统计个人提交代码行数

目录 一、git bash打开二、查看个人提交的代码行数统计三、查看项目每个人提交的代码行数统计四、查询所有用户的提交总次数五、统计用户一段时间内的提交代码量 在实际开发中&#xff0c;常常会想查看自己对于某个项目的贡献&#xff0c;管理者会查看项目下各成员的贡献&#…...

Collction的List方法,list特有方法,遍历方式,迭代器选择

[to] list特有方法 //插入指定元素//list.add(1,"ddd");//System.out.println(list);//[aaa, ddd, bbb, ccc]//这个表示在一索引的位置插入ddd//他会把原来一索引位置的元素往后移动一位在添加//删除指定元素//String remove list.remove(1);//System.out.println(…...

奇偶校验码和循环冗余码

在数据链路层的传输中&#xff0c;1可能变成0&#xff0c;0可能变成1&#xff0c;这是比特差错。 为了应对比特差错&#xff0c;有两种方式&#xff0c;即自动重传请求ARQ&#xff08;Automatic Repeat-reQuest&#xff09;和前向纠错FEC&#xff08;Forward Error Correction&…...

Recommender System复习(考试向)

Recommender System Review OverviewCollaborative Filtering基于用户的CF&#xff08;User CF&#xff09;基于物品的CF&#xff08;Item CF&#xff09;Similarity CalculationBias in CF Evaluation of Recommender SystemFactorization MachinesLatent factor modelLFM算法…...

SpringBoot绑定配置文件中变量的四种方式-解析

当在Spring Boot中需要绑定配置文件中的变量时&#xff0c;可以使用以下注解&#xff1a; PropertySource&#xff1a;用于指定要加载的属性文件。可以将该注解放置在Configuration类上。 Configuration PropertySource("classpath:application.properties") public…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...