目录

前言

相关技术:

一.使用idea创建springboot项目

二.搭建三层框架dao层、service层、controller层+实体model层:

三.实现登录注册接口


前言

相关技术:

框架:springboot

IDE: IDEA

数据库: MySQL

测试工具: Postman(非必须,但方便测试且安装和使用都挺简单的)

一.使用idea创建springboot项目

步骤一:

步骤二:

二.搭建三层框架dao层、service层、controller层+实体model层

Controller(UI)界面控制层
Service(BLL)业务逻辑服务层
Dao(DAL),dao层也叫mapper层,数据持久层

model层也叫pojo层或者entity层包括实体函数层(具体实现)Domain类:表映射实体,类名名是表名,属性是字段,主要用于Java数据和数据库表的映射与类Dto:数据传输对象(Data Transfer Object),用于前后端数据交互,Dto用在Controller和Service层。

具体目录如下:

三.实现登录注册接口

1.设计数据库列表

2.连接数据库

application.yml

#更改项目的端口号
server:port: 8080# 数据库数据源
spring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMTdriver-class-name: com.mysql.cj.jdbc.Driver

3.根据框架特点,我们将自底向上开发,所以将按照model层-dao-service-serviceImpl-controller 的顺序逐步开发。

3.1 编写model层:

package com.example.demospringboot.domain;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;//User类主要用于Java数据和数据库表的映射
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String id;private String username;private String password;private String phone;private int isDelete;}
package com.example.demospringboot.dto;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;//登录模块数据传输对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserLoginDto {private String username;private String password;
}
package com.example.demospringboot.dto;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;//注册模块数据传输对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserRegisterDto {private String username;private String password;private String phone;
}

3.2 编写dao层(即mapper层)

package com.example.demospringboot.mapper;import com.example.demospringboot.domain.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;import java.util.List;@Mapper //这个注解表示了本类是一个mybatis 的mapper类
//或者在主类写@MapperScan("com.example.demosprongboot.mapper")
@Repository
public interface UserMapper {@Select(value = "select * from user where username=#{username} and password = #{password}")
//使用注解方式,也可用xml方式(编写.xml文件放在resources下且要在application.yml中配置localtion等)User selectOneUser (User u);//List<User> queryUserList();
@Insert(value = "insert into user values (#{id},#{username},#{password},#{phone},#{isDelete})")void insertUser(User U);
}

3.3 编写service层

package com.example.demospringboot.service;import com.example.demospringboot.domain.User;import java.util.List;public interface UserService {void saveUser(User u);User selectUser(User u);List<User> findAll();}
package com.example.demospringboot.service.impl;import com.example.demospringboot.domain.User;
import com.example.demospringboot.mapper.UserMapper;
import com.example.demospringboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;
import java.util.UUID;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic void saveUser(User u){u.setId(UUID.randomUUID().toString());u.setIsDelete(0);userMapper.insertUser(u);}@Overridepublic User selectUser(User u){if(u.getUsername()==null||u.getPassword()==null){return null;}return userMapper.selectOneUser(u);}}

3.4 编写controller层

package com.example.demospringboot.controller;import com.example.demospringboot.domain.User;
import com.example.demospringboot.dto.UserLoginDto;
import com.example.demospringboot.dto.UserRegisterDto;
import com.example.demospringboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController//@Controller 代表这个类会被springboot 接管
//被@Controller这个注解的类,中的所有方法,如果返回值是String,并且有具体的页面可以跳转,那么就会被视图解析器解析
public class UserController {@Autowiredprivate UserService userService;@PostMapping("/save")//用@RequestMapping,则什么请求类型都可以//restful接口风格,可以用不同的请求方式实现不同的效果//使用@PathVariable注解,让方法参数的值对应绑到一个URL模板变量上public String saveUser(@RequestBody UserRegisterDto userRegisterDto){if(userRegisterDto ==null){return "操作失败";}if(userRegisterDto.getUsername()==null|| userRegisterDto.getPassword()==null|| userRegisterDto.getPhone()==null){return "操作失败";}User user=new User();user.setUsername(userRegisterDto.getUsername());user.setPassword(userRegisterDto.getPassword());user.setPhone(userRegisterDto.getPhone());if(!(userService.selectUser(user)==null)){return "此账号与密码已重复";}userService.saveUser(user);return "操作成功";}@PostMapping("/login")public String loginIn(@RequestBody UserLoginDto userLoginDto){if(userLoginDto==null){return "操作失败";}User user=new User();user.setUsername(userLoginDto.getUsername());user.setPassword(userLoginDto.getPassword());if(userService.selectUser(user)==null){return "无此账号";}return "登录成功";}
}

具体目录如下:

3.5 测试

参考链接:

(24条消息) springboot三层架构(4块)_魔图啊的博客-CSDN博客_springboot三层架构图

(24条消息) 快速上手Springboot项目(登录注册保姆级教程)_Maker_Hu的博客-CSDN博客_springboot登录

springboot后台搭建及登录注册接口编写相关推荐

  1. 后端实现分布式登录注册接口,细节拉满~~

    后端实现分布式登录注册接口 前言 一.项前工作 涉及技术栈 准备工作 流程讲解 二.代码编辑 2.1 拦截器使用 定义拦截器 注册拦截器 2.2 短信服务调用 工具类 短信接口 2.3 数据库操作 S ...

  2. 简单的后台管理:登录+注册接口

    所需:Express+MySQL数据库 +Vue 首先在Express创建服务端并且连接数据库 // 连接数据库 var mysql = require('mysql'); var connectio ...

  3. 谷粒学院 Day12.登录页面模式、整合JWT、整合QQ邮箱、用户登录注册接口【后端】、用户登录注册【前端】

    项目结构: 配置文件 application.properties配置类 spring.jackson.time-zone=GMT+8# nacos注册中心 spring.cloud.nacos.di ...

  4. AIP 封装与搭建及登录注册关于token的一些理解

    前言 一. API搭建 二.API的封装 三.登录注册 1.token的理解 总结## 标题 一.搭建脚手架,创建基本目录 在这里插入图片描述 以上是一个vue.3.0标准目录结构 1.man.js ...

  5. 【Java实战篇】SpringBoot+MyBatis快速实现登录注册

    目录 项目结构: 数据库表: 项目依赖:POM文件 Properties配置文件: 静态页面: Login.html: Reg.html: Success.html: END1.html: END2. ...

  6. Springboot只允许进入登录注册的页面,没登录页面进行拦截。

    首先是index.html页面: <body style="text-align:center;"><form action="/denglu" ...

  7. springboot 整合 MongoDB 实现登录注册,html 页面获取后台参数的方法

    springboot简介: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...

  8. SpringBoot后台搭建-创建restful接口,使用mybatisPlus实现分页

    1.创建一个父类工程 1.删除src文件夹,并引入pom文件 <!-- springboot依赖 --><parent><groupId>org.springfra ...

  9. SpringBoot+Vue实现邮箱登录注册找回密码(附接口文档)

最新文章

  1. Cmake 实例学习 一
  2. impala 本年格式化时间_hive,hbase,impala之间的对比
  3. Window Server 2008 R2系统备份
  4. 矩阵计算的理论与方法_钢筋焊接网片实际重量与理论重量相差多少以及计算方法...
  5. 在 Mac上接收、暂停或停止接收通知操作方法
  6. [Oracle]ORA-600[kdBlkCheckError]LOB坏块处理
  7. vue.js中的路由vue-router2.0使用
  8. HttpClient ip直连域名问题那些事
  9. 游戏音效制作的基本步骤
  10. activiti7(三):Activiti7简介与HelloWorld
  11. 计算机无法共享访问受限,设置组策略解决共享访问受限问题
  12. Python语言程序设计--猫和老鼠小游戏
  13. tcpdump 安装 使用及详解
  14. 2021年华为总监知乎1867赞的Java面试题全集解析助我修行,不吃透感觉都对不起他(上)
  15. C语言:歌德巴赫猜想:2000以内的正偶数(不包括2)都能够分解为两个质数之和
  16. 如何自动执行Excel的多次替换--Excel批量替换工具
  17. oracle amm和asmm,AMM与ASMM
  18. [转]清华梦的粉碎——写给清华大学的退学申请
  19. java shell 127_java执行shell命令返回127 :No such file or directory
  20. C语言游戏脚本:一个简单的内存脚本!

热门文章

  1. 问题 A: 三角函数计算(python)
  2. linux 校园网 自动认证,关于在Linux操作系统下校园网 瑞捷的认证(xrgsu)
  3. 微信小程序实现vtt视频字幕
  4. A Beginner‘s Guide To Understanding Convolutional Neural Networks(part 1)
  5. 第四届“绽放杯”5G应用征集大赛圆满落幕 中国移动参与项目获奖数量四年蝉联第一
  6. [人工智能-深度学习-14]:神经网络基础 - 常见loss损失函数之逻辑分类,对数函数,交叉熵函数
  7. pgAdmin4 汉化
  8. OA的岗位管理功能模块的实现总结
  9. snp maf_Oracle MAF中的LOV
  10. 专业商标设计、logo免费在线设计