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

【2025最新】05 Spring Security 构建 RESTful Web 注册服务 - 2

背景

上一篇文章应用Spring Security 构建了 RESTful Web 注册服务,但并没有真正操作数据库,完成功能,本篇将继续上一篇文章,说明如何使用spring security,以及mybatis完成整个注册的后台功能(请参考【05 Spring Security 构建 RESTful Web 注册服务 - 1】)。
该注册为使用email 及 密码 进行注册。

修改pom文件

在 pom.xml 文件中 dependencies 中加入 mybatis 及 mysql 的 配置,如下:

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope>
</dependency>

创建 DAO 层访问数据库进行注册

  1. 在 java\com\cn\edu 下新建文件夹dao,加入注册使用的dao接口,如下:
package com.cn.edu.dao;import org.apache.ibatis.annotations.Mapper;@Mapper
public interface UserDao {public int registerByEmail(String uid, String pwd);
}
  1. 在 resources 目录下,新建文件application-dev.properties,并加入下面内容:
#set datasource
spring.datasource.url=jdbc:mysql://localhost:3306/edu?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=1314521888nv
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver#set mybatis
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis.configuration.call-setters-on-nulls=true
  1. 修改 resources 目录下的文件application-dev.properties ,如下:
spring.application.name=edu
spring.profiles.active=dev
  1. 在 resource 目录下新建文件夹 mapper,并在 mapper 下,新建文件 UserDaoMapper.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"><!-- 命名空间需与UserDao接口全类名一致 -->
<mapper namespace="com.cn.edu.dao.UserDao"><!-- 注册功能:通过邮箱和密码插入用户记录 --><insert id="registerByEmail" parameterType="map">INSERT INTO e_user (email, password, u_status, create_time, update_time, isTeacher) VALUES (#{uid},  #{pwd},  1,  CURRENT_TIMESTAMP,  CURRENT_TIMESTAMP,  0 )</insert></mapper>

创建 Services 层,作为前端接口与数据库访问层中间的逻辑层

  1. 在 java\com\cn\edu 下新建文件夹 services,加入注册使用的 UserServices 接口,如下:
package com.cn.edu.services;public interface UserServices {public int registerByEmail(String uid, String pwd);
}
  1. 在文件夹 services 下,新建文件夹 imp,并在其下新建类 UserServicesImp.java 实现接口 UserServices,这里对密码做加密,如下:
package com.cn.edu.services.imp;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;import com.cn.edu.dao.UserDao;
import com.cn.edu.services.UserServices;@Service
public class UserServicesImp implements UserServices{@Autowiredprivate UserDao userDao;@Autowiredprivate PasswordEncoder passwordEncoder;@Overridepublic int registerByEmail(String uid, String pwd) {String encodePassword = passwordEncoder.encode(pwd);this.userDao.registerByEmail(uid, encodePassword);return 0;}}

修改接口层 UserController.java

在 restful 接口文件 UserController.java 中,定义并注入 services,然后调用该 services 中的注册功能,代码如下:

package com.cn.edu.controller;import java.util.concurrent.atomic.AtomicLong;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import com.cn.edu.common.ApiResponse;
import com.cn.edu.dto.Greeting;
import com.cn.edu.dto.UserDTO;
import com.cn.edu.services.UserServices;@RestController
public class UserController {@Autowiredprivate UserServices userServices;@PostMapping("/register")public ApiResponse<UserDTO> register(@RequestBody UserDTO registerUser) {this.userServices.registerByEmail(registerUser.id(), registerUser.pwd());return ApiResponse.success(registerUser); // 直接使用record的静态方法构建}}

测试

使用 Run Java 命令启动服务器,进入cmd中,执行 curl 命令:

curl -X POST http://localhost:8080/register -H "Content-Type:application/json" -d "{\"id\":\"cherry\", \"pwd\":\"1234\"}"

进入数据库查看数据,成功即可看到刚刚注册的用户信息。

http://www.dtcms.com/a/606217.html

相关文章:

  • 《C++在LLM系统底座中的深度赋能逻辑》
  • 做网站没有数据库wordpress导航主题haow
  • 如何选择企业微信SCRM?2025年3个选型参考维度
  • Biotin-Gln,谷氨酰胺-生物素,Biotin-谷氨酰胺,偶联反应
  • 研发管理知识库(9)浅析各类API
  • 高质量营销型网站定做价格网站建设的资金
  • 玩游戏CPU高性价比推荐:i5-14600K深度解析——2K高帧率+直播推流全搞定的全能U
  • 设置开机自动运行的文件
  • 自蒸馏学习方法
  • UE5 C++ 定时器 官方案例(二)
  • 滨州网站开发公司廊坊网站建设咨询青橙网络
  • asp网站开发源码上海建筑工程公司排行榜
  • 手绘风图表自由!Excalidraw + cpolar让协作无边界
  • 新能源智慧场站辅控系统 一体化的场站管理平台
  • 做建材的网站有哪些wordpress集成ckplayer
  • 南联网站建设公司广州shopify代建站
  • PiscCamera:将Android手机化身为在线摄像设备
  • php 开发手机网站建设.net 网站开发实例
  • C# Dictionary 转换成 List
  • 网站开发费用属于什么科目关于合肥的网站好
  • 邦策网站建设平台eyoucms插件
  • RAGFlow 0.22.0 特性总览——支持数据源、完善 Parser、Agent 优化以及 Admin UI
  • 攻防世界-Misc-2017_Dating_in_Singapore
  • STM32连接以太网失败自动重新连接
  • python 基础学习socket -UDP编程
  • Dw做html网站百度首页纯净版怎么设置
  • 【FPGA+DSP系列】——PWM电平光耦转换电路实验分析----电路原理分析,器件选型
  • 北京网站开发培训赚钱软件一天赚100元游戏无广告
  • Uart 不定长收发的 DMA 方案
  • 普宁市建设局网站金石文化规划 设计 开发风景区网站建设