springboot邮箱注册

1.准备工作

操作之前准备两个邮箱

我准备了网易邮箱和QQ邮箱,网易邮箱用来发送验证码,QQ邮箱用来做注册(希望大家和我一样,不然可能会出错                  )

发送验证码的邮箱需要开启一些设置,否则不能发送验证码

网易免费邮箱 - 你的专业电子邮局

网易邮箱官网,没有的注册一个,有的直接输入账号密码登录,

1.登录后点击设置

2.继续操作

3.保证两个服务开启:

IMAP/SMTP服务:
POP3/SMTP服务:

 4.生成授权码(授权码要保存起来,只能查看一次,)

 将生成的授权码放入properties配置文件 (稍后会用)

server.port=8081
restart.include.mapper=/mapper-[\\w-\\.]+jar
restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar
spring.mvc.static-path-pattern=/static/**
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
spring.thymeleaf.cache=false
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.stat-view-servlet.allow=true
mybatis.type-aliases-package=com.dss.springboot.entity
mybatis.mapper-locations=classpath:mapper/**/*.xml
spring.mail.default-encoding=utf-8
spring.mail.host=smtp.163.com
spring.mail.username=15543326163@163.com
spring.mail.password=
spring.mail.protocol=smtp
spring.mail.port=25

       根据配置文件修改成自己的数据库和密码

发送消息的账号添加到

spring.mail.username=xxxxxx@163.com

 其他设计默认即可

4.创建数据库

 

 5.新建数据库

 

6.用户表语句:

user表 数据库建表语句:

create table user
(uid      int auto_incrementprimary key,username varchar(255) not null,password varchar(255) not null,nickname varchar(255) null,email    varchar(255) not null,state    int          not null,code     varchar(255) null
);

在控制台执行

 

2.开始搭建:

 

选择有项目 sdk 8+java8 没有的随便选等创建 项目完成在修改

 将文件复制到properties

1.properties
server.port=8081
restart.include.mapper=/mapper-[\\w-\\.]+jar
restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar
spring.mvc.static-path-pattern=/static/**
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
spring.thymeleaf.cache=false
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-active=20spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.stat-view-servlet.allow=true
mybatis.type-aliases-package=com.dss.springboot.entity
mybatis.mapper-locations=classpath:mapper/**/*.xml
spring.mail.default-encoding=utf-8
spring.mail.host=smtp.163.com
spring.mail.username=15543326163@163.com
spring.mail.password=你邮箱生成的授权码 
spring.mail.protocol=smtp
spring.mail.port=25
 
2. 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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.dss</groupId><artifactId>springboot--javaMail</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>emailtest</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 引入 thymeleaf 模板依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- 引入数据源依赖,这里使用alibaba的druid数据源 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.0</version></dependency><!-- mysql的连接依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.32</version></dependency><!--mybatis相关依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency><!-- 支持发送邮件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
3.连接数据库

 

 

4.修改文件设置,

5. 启动项目(检验配置是否成功)

 

6. 配置注册页面
 

 

 resource目录下templates 下 新建 thymeleaf 文件夹 新建页面

register.html
<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8" /><title></title>
</head>
<body><form action="/user/register" method="post">用户名:<input type="text" name="username" id="username"/><br/>密码:<input type="password" name="password" id="password"/><br/>确认密码:<input type="password" name="password1" id="password1"/><br/>昵称:<input type="text" name="nickname" id="nickname"/><br/>邮箱:<input type="text" name="email" id="email"/><br/><input type="submit" value="注册"/>
</form></body>
</html>
result.html

 

<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8" /><title></title>
</head>
<body><h1 th:text="${message}"></h1></body>
</html>
7. 用mybatisx

生成 实体类 mapper 层 service 层 imp层   mapper.xml

 

 

 

 

 

 

 

 

 

 整理后项目结够如下

 

 

 

 8.添加工具类
package com.dss.javaMail.utils;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;/*** 发送邮件的工具类* @author duan ss**/
@Component
public class MailUtil {@Autowiredprivate JavaMailSender javaMailSender;/*** 发送邮件* @param toUser	收件人* @param code		激活码* @return*/public String send(String toUser, String code) {// 建立邮件消息SimpleMailMessage mainMessage = new SimpleMailMessage();// 发送者mainMessage.setFrom("15543326163@163.com");// 接收者mainMessage.setTo(toUser);// 发送的标题mainMessage.setSubject("注册激活邮件");// 发送的内容mainMessage.setText("<h1>来自xxx网站的注册激活邮件,激活请点击以下链接:http://localhost:8081/user/regActive?code="+code+"");javaMailSender.send(mainMessage);return "success";}}
 9.编写各层代码
 mapper层

 

package com.example.emailtest.mapper;import com.example.emailtest.domain.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;/**
* @author l
* @description 针对表【user】的数据库操作Mapper
* @createDate 2024-02-23 12:49:21
* @Entity com.example.emailtest.domain.User
*/
@Mapper
public interface UserMapper extends BaseMapper<User> {void registerUser(User user);User getUserByCode(User user);void updateState(User user);User getUserByUsernameAndPassword(String username, String password);
}

       

service层
package com.example.emailtest.service;import com.example.emailtest.domain.User;
import com.baomidou.mybatisplus.extension.service.IService;/**
* @author l
* @description 针对表【user】的数据库操作Service
* @createDate 2024-02-23 12:49:21
*/
public interface UserService extends IService<User> {void registerUser(User user);User getUserByCode(User user);void updateState(User user);User getUserByUsernameAndPassword(String username, String password);
}
serviceimpl层
package com.example.emailtest.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.emailtest.domain.User;
import com.example.emailtest.service.UserService;
import com.example.emailtest.mapper.UserMapper;
import org.springframework.stereotype.Service;import javax.annotation.Resource;/**
* @author l
* @description 针对表【user】的数据库操作Service实现
* @createDate 2024-02-23 12:49:21
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>implements UserService {@Resourceprivate UserMapper userMapper;@Overridepublic void registerUser(User user) {userMapper.registerUser(user);}@Overridepublic User getUserByCode(User user) {return userMapper.getUserByCode(user);}@Overridepublic void updateState(User user) {userMapper.updateState(user);}@Overridepublic User getUserByUsernameAndPassword(String username, String password) {return userMapper.getUserByUsernameAndPassword(username, password);}
}

mapper.xml层
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.emailtest.mapper.UserMapper"><resultMap id="BaseResultMap" type="com.example.emailtest.domain.User"><id property="uid" column="uid" jdbcType="INTEGER"/><result property="username" column="username" jdbcType="VARCHAR"/><result property="password" column="password" jdbcType="VARCHAR"/><result property="nickname" column="nickname" jdbcType="VARCHAR"/><result property="email" column="email" jdbcType="VARCHAR"/><result property="state" column="state" jdbcType="INTEGER"/><result property="code" column="code" jdbcType="VARCHAR"/></resultMap><sql id="Base_Column_List">uid,username,password,nickname,email,state,code</sql><insert id="registerUser" parameterType="com.example.emailtest.domain.User">insert into user values(#{ uid}, #{username}, #{password}, #{nickname}, #{email}, #{state}, #{code})</insert><update id="updateState">update user set state = 1 where uid = #{uid} and code = #{code}</update><select id="getUserByCode" resultType="com.example.emailtest.domain.User">select * from user where code = #{code}</select><select id="getUserByUsernameAndPassword" resultType="com.example.emailtest.domain.User">
select * from user where username = #{username} and password = #{password}</select>
</mapper>

controller层
package com.example.emailtest.controller;import com.example.emailtest.domain.User;
import com.example.emailtest.mapper.UserMapper;
import com.example.emailtest.service.UserService;
import com.example.emailtest.utils.MailUtil;
import com.example.emailtest.utils.UuidUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;@Controller
@RequestMapping(value = "/user")
public class UserController {@ResourceUserMapper userMapper;@Autowiredprivate UserService userService;@Autowiredprivate MailUtil mailUtil;@RequestMapping(value = "/goReg")public String getUser() {return "thymeleaf/register";}@RequestMapping(value = "/register")@ResponseBodypublic String register(User user) {user.setState(0);		//	0表示未激活/1表示激活user.setCode(UuidUtil.get32UUID());String result = mailUtil.send(user.getEmail(), user.getCode());System.out.println("发送邮件结果: " + result);System.out.println(user);userService.registerUser(user);return "success";}@RequestMapping(value = "/regActive")public String regActive(@RequestParam("code") String code,ModelMap map) {User user = new User();user.setCode(code);user = userService.getUserByCode(user);if(user != null) {if(user.getState() == 1) {map.addAttribute("message", "你已经激活过了...");}else {userService.updateState(user);map.addAttribute("message", "激活成功...");}}else {map.addAttribute("message", "激活失败...");}return "thymeleaf/result";}}

启动类加mappscan注解!!!!!!!!!!!!!!!
package com.example.emailtest;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.example.emailtest.mapper")
@SpringBootApplication
public class EmailtestApplication {public static void main(String[] args) {SpringApplication.run(EmailtestApplication.class, args);}}

3.启动项目:

注册接口地址

http://localhost:8081/user/goReg

邮件会收到消息

输入激活码

 数据库如下:

激活的账号state为1

 

4.todo 正在准备邮箱登录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/487171.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows server2008前后端项目部署

目录 一.部署环境 准备一个windows server 2008的镜像 准备jdk1.8 准备tomcat服务器 准备mysql数据库 二.部署步骤 1.1新建虚拟机 1.2打开远程 连接宿主机远程桌面 1.3下载安装jdk 修改path 1.4安装tomcat 1.5.安装mysql mysql安装成功 把war包丢到tomcat webapp里面去…

Selenium IDE插件录制网页,解放双手

1、 国内下载地址 https://www.crx4chrome.com/crx/77585/ &#xff0c;这个网络正常基本可以下载&#xff0c;目前最新版本是3.17.2。 点击Crx4Chrome下载。下载后的文件名称是&#xff1a;mooikfkahbdckldjjndioackbalphokd-3.17.2-Crx4Chrome.com.crx。 2、 安装 直接打开…

【MySQL】数据库概述

目录 一、为什么使用数据库&#xff1f; 二、数据库与数据库管理系统 2.1 相关概念 2.2 两者关系 三、 MySQL介绍 四、 RDBMS和非RDBMS 4.1 关系型数据库&#xff08;RDBMS&#xff09; 4.2 非关系型数据库&#xff08;非RDBMS&#xff09; 五、关系型数据库设计规则 …

挑战杯 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度&#xff0c;召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

QT问题 打开Qt Creator发现没有菜单栏

之前不知道按了什么快捷键,当我再次打开Qt Creator时发现菜单栏消失啦 找了许多原因发现:安装有道词典的快捷键Ctrl Alt m 与Qt Creator里的快捷键冲突导致菜单栏被莫名其妙的隐藏 解决方法: 1找到有道词典快捷键 2再次按快捷键 Ctrl Alt m就可以重新显示菜单栏

机器学习---强化学习方法

1. 强化学习方法 1.1 动态规划法 动态规划方法是由Bellman 方程转化而来&#xff0c;通过修正Bellman 方程的规则&#xff0c;提高所期望值函数的近 似值。常用算法有两种&#xff1a;值迭代&#xff08;Value Iteration&#xff09;和策略迭代&#xff08;Policy Iteration…

[云原生] 二进制k8s集群(下)部署高可用master节点

在上一篇文章中&#xff0c;就已经完成了二进制k8s集群部署的搭建&#xff0c;但是单机master并不适用于企业的实际运用&#xff08;因为单机master中&#xff0c;仅仅只有一台master作为节点服务器的调度指挥&#xff0c;一旦宕机。就意味着整个集群的瘫痪&#xff0c;所以成熟…

较通用web脚手架模板搭建

较通用web脚手架模板搭建 从这里开始就接触到以后写项目的思维了。 做一个web开发&#xff0c;那就要层次分明&#xff0c;要有个实现的规划&#xff0c;这通常也是有一个较为通用的模板的。 总的来说&#xff1a;不同的层次有不同的模块&#xff0c;每个模块有必须实现的功…

【开源】JAVA+Vue.js实现校园电商物流云平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快递公司模块2.4 物流订单模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 商品表3.2.2 快递公司表3.2.3 物流订单表 四、系统展示五、核心代码5.1 查询商品5.2 查询快递公司5.3 查…

一种基于javax.max注解的能力增强技术

目录 现有框架的不足之处 我的改进内容 改进的成果 现有框架的不足之处 Max是javax.validation包中的一个常用注解&#xff0c;用于对传入参数进行最大值校验。但是其校验区间为闭区间&#xff0c;且不支持修改&#xff0c;如&#xff1a;Max(2)&#xff0c;表示表示传入参…

Codeforces Round 494 (Div. 3)

目录 A. Polycarps Pockets B. Binary String Constructing C. Intense Heat D. Coins and Queries E. Tree Constructing F. Abbreviation A. Polycarps Pockets 记录数量可以直接开一个桶即可然后求最大值 void solve(){cin>>n;vector<int> ton(105);int …

微服务篇之分布式事务

一、Seata架构 Seata事务管理中有三个重要的角色&#xff1a; TC (Transaction Coordinator) - 事务协调者&#xff1a;维护全局和分支事务的状态&#xff0c;协调全局事务提交或回滚。 TM (Transaction Manager) - 事务管理器&#xff1a;定义全局事务的范围、开始全局事务、…