本文开发一用户注册与登录的后端java平台。开发完后的网页效果:http://user-front.66bond.com/
后端主要提供用户的注册、查询、删除等操作。使用到的开发工具:
- IDEA2021; 关注公众号”青椒工具”,发送”IDEA”,获取windows下的IDEA安装包
- mysql 5.7;关注公众号”青椒工具”,发送”mysql”,获取windows下的mysql5.7安装包;
前面我们实现了注册和登录的业务逻辑,我们本章实现controller层,编写对接前端的网络访问的接口。
1、整体逻辑
前端访问一般会带上url,比如127.0.0.1/user/login等;
那我们的后端就要对接”/user/login”这个访问请求,将/user/login这个访问路径对应到java的某个方法;
而这个方法再去调用我们之前的userRegister或者userLogin等执行实际业务的代码。
2、代码框架:
在/com.tfzhang.backend/controller/中新建UserController.java文件,代码结构:
1 |
|
此处头部的路径”/user”,然后每个方法前的路径名为”/register”和”/login”,与前端访问的路径/user/register和/user/login分别对应。
3、接口代码实现:
我们先从userRegister入手开始编写代码,要解决的两个问题:
- 如何接收前端的参数;
- 代码中如何调用service接口;
根据spring web特性,当客户端发送一个POST或PUT请求,并且请求体中包含JSON或XML数据时,我们需要使用@RequestBody注解来接收这些数据。在这种情况下,通常还需要将请求体绑定到一个Java对象上,因此也需要进行封装。
所以为了接收数据,我们在/com.tfzhang.backend/model下创建request包,然后在其中创建UserRegisterRequest类:
1 | package com.tfzhang.backend.model.request; |
有几个点需要说明下:
- @Data标签,用于自动生成get、set等方法,免去代码的手动编写;
- 实现Serilizable接口用于序列化,实现
Serializable接口意味着这个类的对象可以被序列化,通常用于网络传输或保存到文件中,上述的serialVersionUID可以借助插件来生成,插件名称:GenerateSerialVersionUID;
完成上述的UserRegisterRequest后,我们再来书写userRegister的代码:
1 |
|
为什么参数中要使用@RequestBody标签,我们前面已经提过;至于为什么是返回null,因为Long虽然是长整数,但它是对象型数据。
对于userLogin的代码也是同样,我们先在model/request/中创建UserLoginRequest类,然后再实现controller/UserController中的userLogin方法;
UserLoginRequest.java的代码:
1 | package com.tfzhang.backend.model.request; |
userLogin的方法:
1 |
|
4、代码测试
测试的步骤:
1、启动我们的BackendApplication,等待连接请求;
2、利用 IDEA自带的网络访问工具,创建访问,并发起访问;
我们先启动BackendApplication,如图1所示:

然后利用IDEA自带网络测试工具,如图2所示:

我们先创建登录的测试访问,如图3所示,测试成功过,后端的确返回user数据:

按照同样的方式,我们再来测试注册接口,注册成功返回大于0的正数,否则返回负数;
逻辑删除的测试
假设我们现在将”tfzhang2” 用户的逻辑删除位设置为1,那么再用tfzhang2登录应该失败,我们来尝试下。
至于如何将tfzhang2的isDelete设置为1,则参考图4:

当isDelete设置为1时,再次登录,发现返回数据为空,说明逻辑删除的确发挥作用。
至此,对于login和register我们的controller开发完成,后续我们要完成用户管理接口:查找用户和删除用户。
5、参考资料:
本文参考自如下知识星球中的视频教程,更多的完整的相关视频教程,见如下的收费知识星球,近3万人的学习社区,
