Spring Bootによるメールボックス取得認証コードの登録
前置きスキル:1.spring bootプロジェクトの作成(ブログリンク:クリックジャンプ)2.mybatisフレームワークの統合(ブログリンク:クリックジャンプ)3.ホットロード(必要ありませんが、テストプロジェクトを導入すると便利です.ブログリンク:クリックジャンプ)4.mybatisとspring bootに基づいてmysqlの削除変更(ブログリンク:クリックジャンプ)5.Spring Bootフレームワークによるメール送信を実現(ブログリンク:クリックジャンプ)
まず、フロントエンドページです.自分で書くことができます.次はフロントエンドテンプレートです.
まず認証コードを送信するクラスで、pojoフォルダの下にSendMailクラスを作成します.コードは以下の通りです.setFromの内容は自分でメールを送信するメールボックスに変更してください.
次に認証コードを取得するコントローラを書き、controllerフォルダの下にGetCodeControllerクラスを作成し、フロントエンドに記入されたメールボックスを取得して認証コードを送信します.コードは以下の通りです.
最後に登録プロセスです.フロントエンドで取得したメールボックスで検証コードがそのユーザーに送信された検証コードかどうかを判断すると、そのグループのデータをデータベースに追加します.コードは以下の通りです.
メールボックスの正則を判断するために使用します
まず、フロントエンドページです.自分で書くことができます.次はフロントエンドテンプレートです.
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p> </p>
<form id="message">
<input name="userName" type="text" placeholder=" ( )"></br>
<input name="password" type="password" placeholder=" "></br>
<input name="code" type="text" placeholder=" "></br>
</form>
<input id="register" type="button" value=" ">
<input id="getCode" type="button" value=" ">
</body>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
//
$('#getCode').click(function () {
$.ajax({
url:"/GetCodeController/getCodeController",
data:$('#message').serialize(),
success:function (data) {
if(data==="success"){
alert(" ");
}else{
alert(" ");
}
}
})
})
//
$('#register').click(function () {//$ # id
$.ajax({
url:"/Register/register",//url
data:$('#message').serialize(),//$ # from id
success:function (data) {
if(data==="success")alert(" ");
else if(data==="nameError")alert(" ");
else if(data==="passwordError")alert(" ");
else if(data==="error")alert(" ");
else if(data==="repeat")alert(" ");
else alert(" , ");
}
})
})
</script>
</html>
まず認証コードを送信するクラスで、pojoフォルダの下にSendMailクラスを作成します.コードは以下の通りです.setFromの内容は自分でメールを送信するメールボックスに変更してください.
package com.example.demo.pojo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
@Component
public class SendMail {
@Autowired
private JavaMailSender mailSender;
public void sendMail(String To,String Text)throws Exception{
try {
SimpleMailMessage messege=new SimpleMailMessage();
messege.setFrom("@qq.com");//
messege.setTo(To);
messege.setSubject(" : ");
messege.setText(Text);
mailSender.send(messege);
}catch (Exception e){
e.printStackTrace();
System.out.println(" ");
}
}
}
次に認証コードを取得するコントローラを書き、controllerフォルダの下にGetCodeControllerクラスを作成し、フロントエンドに記入されたメールボックスを取得して認証コードを送信します.コードは以下の通りです.
package com.example.demo.controller;
import com.example.demo.pojo.SendMail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("/GetCodeController")
public class GetCodeController {
@Autowired
private SendMail sendMail;
//
@RequestMapping("/getCodeController")
@ResponseBody
public String getCodeController(String userName,HttpServletRequest request){
//
int code=(int)((Math.random()*9+1)*100000);
try{
// session
//
if(!Regular.isEmail(userName)||!Regular.isEmoji(userName))return "fail";
request.getSession().setAttribute(userName,code);//
sendMail.sendMail(userName,String.valueOf(code));//
}catch (Exception e){
e.printStackTrace();
return "fail";
}
return "success";
}
}
最後に登録プロセスです.フロントエンドで取得したメールボックスで検証コードがそのユーザーに送信された検証コードかどうかを判断すると、そのグループのデータをデータベースに追加します.コードは以下の通りです.
package com.example.demo.controller;
import com.example.demo.mapper.UserMapper;
import com.example.demo.pojo.User;
import com.example.demo.pojo.UserExample;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Controller //
@RequestMapping("/Register")// , test
public class Register {
@Resource
private UserMapper userMapper;
@RequestMapping("/register")
@ResponseBody
public String register(String userName, String password, String code, HttpServletRequest request){// input name
if(userName==null||userName.length()==0||password==null||password.length()==0)return "fail";//
if(!Regular.isEmail(userName)||!Regular.isEmoji(userName))return "nameError";
if(!Regular.isEmoji(password))return "passwordError";
UserExample userExample=new UserExample();// ,
userExample.createCriteria().andUserNameEqualTo(userName);
List<User> userList=userMapper.selectByExample(userExample);
for(int i=0;i<userList.size();i++){
if(userList.get(i).getUserName().compareTo(userName)==0){//
return "repeat";
}
}
try {
try{
if(request.getSession().getAttribute(userName)==null){
return "error";
}
}catch (Exception e){
e.printStackTrace();
return "error";
}
if(request.getSession().getAttribute(userName).toString().compareTo(code)!=0){
return "error";
}
User user=new User();
user.setUserName(userName);
user.setUserPassword(password);
userMapper.insert(user);
return "success";
}catch (Exception e){
e.printStackTrace();
return "fail";
}
}
}
メールボックスの正則を判断するために使用します
package com.example.demo.pojo;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regular {
public static boolean isEmoji(String email){
if (email == null)
return false;
String rule="\\uD83C[\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F]|\\uD83D[\\uDE80-\\uDEFF]|[\\u2700-\\u27BF]\\uFE0F";
Pattern pattern;
Matcher matcher;
pattern = Pattern.compile(rule);
matcher = pattern.matcher(email);
if (matcher.matches()){
System.out.println("Yes");
return false;
}
else
return true;
}
public static boolean isEmail(String email) {
if (email == null)
return false;
String rule = "^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$";
Pattern pattern;
Matcher matcher;
pattern = Pattern.compile(rule);
matcher = pattern.matcher(email);
if (matcher.matches()){
System.out.println("Yes");return true;
}
else
return false;
}
}