1.直接跑通Demo,修改配置文件。导入数据库sql文件即可。
2.跟着一步一步实现。
当然你也可以先跑通Demo,在尝试自己跟着来一遍

1.跑通Demo

需要源码和Demo 跳转新项目 跳转新项目

Demo地址: https://github.com/wangzhifengroot/login
只需要两步
1.修改这里的IP地址、数据库名称、用户和密码

2.创建数据库和表
导入下面sql文件
user.sql

2. 一步一步实现。

环境

需要安装一下开发工具
1.IDEA https://www.jetbrains.com/zh-cn/idea/
2.mysql https://www.mysql.com/downloads/
3.maven
4.Navicat mysql

选择spring initializr

选择1.8的JDK,当然你可以选择更高的。(推荐使用和我一样的)
选default 点击net

修改artifact 为login、type修改为maven 、语言选择java、版本依然选8,点击net

这一步我们可以直接跳过,后面添加就行.

下一步直接finish

完善代码

找到pom.xml 文件

修改pom.xml

<dependencies><!-- web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- myBatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.0</version></dependency><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency></dependencies>

完整pom.xml 参考使用

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.0</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example.login</groupId><artifactId>login</artifactId><version>0.0.1-SNAPSHOT</version><name>login</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><!-- web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- myBatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.0</version></dependency><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

找到下面的application文件, 修改后缀为.yml和图一样

修改yml 替换你的mysql地址+username、密码

server:port: 9090
spring:datasource:url: jdbc:mysql://mysql地址/sanguo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMTusername: 用户password: 密码

新增4个包
bean 为数据类、controller 对外提供调用、dao 数据库操作、serivce 对数据操作

在bean包下创建User 数据类


/*** 用户Data类*/
public class User {// 用于数据库主键private long id;// 用户名,不能重复private String account_number;// 用户密码private String password;// 手机号private String phone;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getAccount_number() {return account_number;}public void setAccount_number(String account_number) {this.account_number = account_number;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

创建数据库的表,如果有mysql基础的可以直接按上面的User类创建。

没有基础的可以使用Navicat mysql 来创建,避免深陷sql语句中。
下载sql文件,在Navicat mysql 点击数据库选择运行sql文件。

或者复制我这个sql到mysql中

CREATE TABLE `user` (`id` bigint(32) NOT NULL AUTO_INCREMENT,`account_number` varchar(255) NOT NULL,`password` varchar(255) NOT NULL,`phone` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

创建Result类,用于规范数据返回。方便前端和Android同学。(很重要)

public class Result<T> {// 返回信息private String msg;// 返回code -1等于失败 200成功private int code;// 具体返回的数据private T detail;public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getDetail() {return detail;}public void setDetail(T detail) {this.detail = detail;}public void setCode(int code) {this.code = code;}public int getCode() {return code;}@Overridepublic String toString() {return "Result{" +"msg='" + msg + '\'' +", code=" + code +", detail=" + detail +'}';}
}

创建UserController类


// 相当于@Controller+@RequestBody
@RestController
// 访问目录
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;/*** 注册** @param user 参数封装* @return Result*/@PostMapping(value = "/register")public Result register(User user) {Result regist = userService.register(user);return regist;}/*** 登录** @param user 参数封装* @return Result*/@PostMapping(value = "/login")public Result login(User user) {return userService.login(user);}}

创建HelloController 这个可以不创建,只是为了test使用的。

@RestController
public class HelloController {@GetMapping(value = "/hello")public String hello() {return "hello";}
}

创建UserMapper 这个是操作数据库的

@Mapper
@Repository
public interface UserMapper {/*** 查询用户名是否存在,若存在,不允许注册* 注解@Param(value) 若value与可变参数相同,注解可省略* 注解@Results  列名和字段名相同,注解可省略** @param account_number* @return*/@Select(value = "select u.account_number,u.password from user u where u.account_number=#{account_number}")@Results({@Result(property = "account_number", column = "account_number"),@Result(property = "password", column = "password")})User findUserByName(@Param("account_number") String account_number);/*** 注册  插入一条user记录** @param user* @return*/@Insert("insert into user values(#{id},#{account_number},#{password},#{phone})")// 加入该注解可以保存对象后,查看对象插入id@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")void register(User user);/*** 登录** @param user* @return*/@Select("select u.id from user u where u.account_number = #{account_number} and password = #{password}")Long login(User user);
}

创建UserService用于逻辑操作


@Service
@Transactional(rollbackFor = RuntimeException.class)
public class UserService {@Autowiredprivate UserMapper userMapper;/*** 注册** @param user 参数封装* @return Result*/public Result register(User user) {Result result = new Result();result.setCode(-1);result.setDetail(null);try {User existUser = userMapper.findUserByName(user.getAccount_number());if (existUser != null) {//如果用户名已存在result.setCode(-1);result.setMsg("用户名已存在");} else {userMapper.register(user);result.setMsg("注册成功");result.setCode(200);result.setDetail(user);}} catch (Exception e) {result.setMsg(e.getMessage());e.printStackTrace();}return result;}/*** 登录** @param user 用户名和密码* @return Result*/public Result login(User user) {Result result = new Result();result.setCode(-1);result.setDetail(null);try {Long userId = userMapper.login(user);if (userId == null) {result.setCode(-1);result.setMsg("用户名或密码错误");} else {result.setCode(200);result.setMsg("登录成功");user.setId(userId);result.setDetail(user);}} catch (Exception e) {result.setMsg(e.getMessage());e.printStackTrace();}return result;}
}

在resources创建resources文件

复制html
登录 login.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>用户登录</title>
</head>
<body>
<form action="/user/login" method="post">账 号:<input name="account_number" type="text"/><br>密 码:<input name="password" type="password"> <br><input type="submit" value="登录">
</form>
</body>
</html>

注册 register.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>用户注册</title>
</head>
<body>
<form action="/user/register" method="post">账 号:<input name="account_number" type="text"/><br>密 码:<input name="password" type="password"> <br><input type="submit" value="注册">
</form>
</body>
</html>

一切准备就绪了
运行项目

访问 http://localhost:9090/regist.html
试试能否注册成功

(旧)springboot 快速实现登录、注册功能(附Demo源码)相关推荐

  1. 微信小程序:游戏助手王者战力查询扫码登录多功能小程序源码

    这是一款游戏多功能助手小程序 内由王者战力查询(支持微信QQ双端查询,安卓IOS) 游戏扫码登录(内支持多种游戏扫码登录) 短视频去水印功能(支持各大平台) 游戏改名助手(支持空白名生成,符号名生成) ...

  2. 微信小程序开发之文件上传下载应用场景(附Demo源码)

    微信小程序开发之文件上传下载应用场景(附Demo源码),Demo为小相册应用,源码在附件中,本示例需要腾讯云支持. http://www.henkuai.com/forum.php?mod=viewt ...

  3. 最新小程序授权+php后端(附demo源码)

    参考博客:小程序授权+php后端(附demo源码)_流情的博客-CSDN博客_php小程序 正所谓计划永远赶不上变化,鉴于小程序端已经更改了微信授权登录的接口,因此特来补充一下.原先的wx.getUs ...

  4. echarts圆柱形柱状图 源码_jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】...

    jQuery插件echarts实现的多柱子柱状图效果示例[附demo源码下载] 发布时间:2020-09-08 07:46:02 来源:脚本之家 阅读:74 作者:翱翔天地 本文实例讲述了jQuery ...

  5. C语言3D矢量操作有关的功能(附完整源码)

    3D矢量操作有关的功能 3D矢量数据类型定义 geometry_datatypes.h 3D矢量操作有关的功能以下几个接口 3D矢量操作有关的功能的完整源码(定义,实现,main函数测试) 3D矢量数 ...

  6. 分享基于白鹭Egret联合Matchvs开发的足球游戏(附Demo源码)

    Demo简介 本游戏使用Matchvs的实时联网SDK和白鹭Egret开发,并提供了简洁的Demo来展示多人实时联网游戏的开发过程和效果,用于演示多人匹配.数据传输.帧同步.创建房间.获取房间列表.消 ...

  7. winserver的consul部署实践与.net core客户端使用(附demo源码)

    前言 随着微服务兴起,服务的管理显得极其重要.都知道微服务就是"拆",把臃肿的单块应用,拆分成多个轻量级的服务,每个服务可以在短周期内重构.迭代.交付.随着微服务的数量增多,因量变 ...

  8. 【Kotlin】Android-使用WebDAV协议云存储文件(详细)—附demo源码

    比起云服务器.云数据库.云存储等等方式将文件存储至云端,网盘的WebDAV协议对新手就友好的多,不仅仅有免部署.使用方式简单等等原因,更重要是免费,国内首推坚果云网盘! 三个注意点: 使用第三方库Sa ...

  9. 用SpringBoot简单实现登录注册功能

    登录注册   这是SpringBoot整合MyBatis实现的简易登陆注册.这个demo,我已经上传到资源下载和GitHub仓库了,链接如下:   资源下载地址:CSDN资源下载   GitHub仓库 ...

最新文章

  1. 15级团队学习成果汇报 -- 利用C#语言实现展览厅
  2. 【MAC】记mac中django-admin.py 调用失败的解决方案
  3. 安卓项目查手机电量功能_不做低头族,一键开启手机上的这一功能,手机信息随时查...
  4. |Vijos|树状数组|P1512 SuperBrother打鼹鼠
  5. fatal error LNK1169: 找到一个或多个多重定义的符号 的解决方案
  6. Haproxy安装与配置
  7. controller调用controller的方法_SpringBoot 优雅停止服务的几种方法
  8. 在Linux中查看ftp状态,linux中ftp常见操作启动ftp状态,终止ftp会话
  9. LeetCode 452 用最少数量的箭引爆气球
  10. 人工智障学习笔记——机器学习(16)降维小结
  11. 常用的色彩名、色彩值的对照表
  12. 功能安全 李艳文_李艳文:智能网联全新安全问题凸显 相关自动驾驶事故逐年增加...
  13. 详细说明自学Python需要具备什么?
  14. HTML网上书店静态HTML网页作业作品 大学生三联书店网页设计制作成品 简单DIV CSS布局网站
  15. 广东科技学院计算机学院院长,陈强-广东科技学院-计算机学院
  16. 全国电话区号->地址映射表
  17. JS编写 三角形三边求面积
  18. C语言编写一个函数,实现计算并返回一个整数的平方(或立方)
  19. 深圳物联网培训:要想成为一名物联网工程师,需要学习哪些知识?
  20. 度量衡计算工具_搴﹂噺琛″埗寮忔崲绠楀伐鍏�

热门文章

  1. 为什么 MySQL 使用 B+ 树
  2. 视频字幕识别(百度AI开放平台OCR | python | opencv)
  3. 利用Python进行粗糙的视频字幕识别
  4. 整理下OSS方面的资料,免得到处找,linux音频编程,open sound system
  5. GPS基带P码处理总结——P码处理的要素及方法
  6. android8虚拟键布局,Android 虚拟按键在不同版本上的位置问题
  7. SH7001单电池恒压线性充电IC
  8. 现在还没多少人知道的商业模式,月入百万不是梦——消费盲返模式
  9. 华三模拟器:路由备份路由聚合
  10. Debian9.5 系统配置NFS详细说明