Heim Java javaLernprogramm Ausführliche Erläuterung des Beispiels zum Ausfüllen der E-Mail-Registrierungsfunktion in Java

Ausführliche Erläuterung des Beispiels zum Ausfüllen der E-Mail-Registrierungsfunktion in Java

May 12, 2017 am 09:32 AM
boot java spring

In diesem Artikel wird hauptsächlich der Beispielcode von Spring Boot zur Implementierung der E-Mail-Registrierungsfunktion vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Herausgeber und werfen wir einen Blick auf

Registrierungsprozess

1 [Frontend] Benutzer übermitteln Registrierungsinformationen auf der Registrierungsseite;

2.[Backend] Überprüfen Sie die vom Benutzer übermittelten Parameter. Wenn ein Fehler vorliegt, wird die Fehlermeldung direkt zurückgegeben und ausgeführt, wenn kein Fehler vorliegt.

3.[Backend-End] Generieren Sie zufällig eine ID, verwenden Sie die ID als Schlüssel, Benutzerinformationen als Wert, speichern Sie sie in redis und legen Sie fest die Dauer;

4. [Backend] Generieren Sie einen Aktivierungslink und senden Sie eine E-Mail an das Postfach des Benutzers über das E-Mail-System

5.[Frontend] Der Benutzer klickt im Bild oben auf „Registrierung bestätigen“. Informationen zur Datenbank und Meldung, dass sich der Benutzer erfolgreich registriert hat;

Funktionsimplementierung (umgekehrte Analyse)

1. Schauen wir uns zunächst die Implementierung von Mail an Senden

cn.ictgu.tools.mail.MailService

Beschreibung: Um eine E-Mail zu senden, müssen Sie zwei Parameter Benutzer und Token übergeben. Benutzer ist

Benutzerregistrierung
package cn.ictgu.tools.mail;

import cn.ictgu.dao.model.User;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

/**
 * 邮件服务
 * Created by Silence on 2017/3/11.
 */
@Service
@Log4j
public class MailService {

 @Autowired
 private JavaMailSender mailSender;

 @Value("${spring.mail.username}")
 private String from;

 private static final String TITLE_SIGN_UP = "[邮件标题]";

 private static final String CONTENT = "[邮件内容]";

 public void userValidate(User user, String token){
 MimeMessage mailMessage = mailSender.createMimeMessage();
 try {
  MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true, "GBK");
  helper.setFrom(from);
  helper.setTo(user.getEmail());
  helper.setSubject(TITLE_SIGN_UP);
  String link = "http://www.ictgu.cn/validate/" + token;
  String message = String.format(CONTENT, user.getNickname(), link, link, user.getEmail());
  helper.setText(message, true);
  mailSender.send(mailMessage);
 } catch (MessagingException e) {
  log.error("发送邮件失败:User:" + JSONObject.toJSONString(user) + ", Token: " + token);
 }

 }
Nach dem Login kopieren
Informationen: Token ist eine zufällige UUID, es gibt einen entsprechenden Schlüssel in Redis und sein Wert ist die JSON-

-Zeichenfolge des Benutzers. (Die Schlüsselregel ist Konfigurationsdatei redis.prefix.signUp + UUID) E-Mail-Vorlagenproblem:


Die Art der E-Mail-Inhalt Es handelt sich um eine Zeichenfolge. Der Stil wird durch HTML + CSS gesteuert. Entwerfen Sie beim Entwickeln die Vorlage im Postfach, ersetzen Sie die Variable
durch %s und speichern Sie dann die gesamte Zeichenfolge an einem geeigneten Ort. Verwenden Sie beim Senden der E-Mail die Methode String.format(), um %s durch den tatsächlichen Wert zu ersetzen und eine E-Mail zu generieren, die der Endbenutzer sehen kann. Daher besteht keine Notwendigkeit, Vorlagen von Drittanbietern zu verwenden. Durch das Hinzufügen von JAR-Paketen kann die Komplexität des Systems so weit wie möglich erhöht werden.

2. Wie erstelle ich ein Token? Weitere Informationen finden Sie unter cn.ictgu.redis.RedisTokenManager

Beschreibung: UUID.randomUUID().toString() ist eine von JavaJDK bereitgestellte Methode zum automatischen Generieren von Primärschlüsseln. UUID (Univers

all

y Unique Ident
 public String getTokenOfSignUp(User user){
 String token = UUID.randomUUID().toString();
 String value = JSONObject.toJSONString(user);
 stringRedisTemplate.opsForValue().set(signUpPrefix + token, value);
 stringRedisTemplate.expire(signUpPrefix + token, 12, TimeUnit.HOURS);
 return token;
 }
Nach dem Login kopieren
if

ier) global eindeutige Kennung bezieht sich auf eine auf einer Maschine generierte Nummer, die garantiert für alle Maschinen zur gleichen Zeit und im gleichen Raum gültig ist. Das Einzige ist die Form, die aus einer sechzehnstelligen Zahl besteht. Es handelt sich um eine Kombination der folgenden Teile: das aktuelle Datum und die aktuelle Uhrzeit (der erste Teil der UUID bezieht sich auf die Uhrzeit. Wenn Sie nach einigen Sekunden eine UUID generieren, ist der erste Teil unterschiedlich und der Rest ist gleich), Taktsequenz, eine weltweit eindeutige IEEE-Maschinenidentifikationsnummer (wenn eine Netzwerkkarte vorhanden ist, wird sie von der Netzwerkkarte abgerufen, wenn keine Netzwerkkarte vorhanden ist, wird sie auf andere Weise abgerufen. Der einzige Fehler der UUID besteht darin, dass sie generiert wird). Die Ergebniszeichenfolge wird relativ lang sein. 3. Sobald Sie das Token haben, müssen Sie den Benutzer und das Token in der Serviceschicht verknüpfen, um E-Mails zu senden. Sehen Sie sich cn.ictgu.dao.service.UserService an.

Erklärung: Das Versenden von E-Mails nimmt viel Zeit in Anspruch. Verwenden Sie die asynchrone Verarbeitung, um die Benutzererfahrung zu verbessern.

4. Der Benutzer ist einfach.
 public boolean signUp(User user){
 String email = user.getEmail();
 if (existEmail(email)){
  log.error("用户注册,邮箱已注册:" + email);
  return false;
 }
 sendValidateEmail(user);
 return true;
 }

 @Async
 private void sendValidateEmail(User user){
 String token = tokenManager.getTokenOfSignUp(user);
 log.error("用户注册,准备发送邮件:User:" + JSONObject.toJSONString(user) + ", Token: " + token);
 mailService.userValidate(user, token);
 }

 private boolean existEmail(String email){
 return mapper.selectByEmail(email) != null;
 }
Nach dem Login kopieren

Erklärung: Diese Ebene übernimmt hauptsächlich die Überprüfung des Benutzers Registrierungsparameter

@RestController
public class UserApi {

 @Autowired
 private UserService userService;

 @RequestMapping(value = "/sign-up", method = RequestMethod.POST)
 public SimpleResponse signUp(HttpServletRequest request){
 User user = createUser(request);
 SimpleResponse response = checkSignUpRequest(user);
 if (response.getCode() == 100){
  if (!userService.signUp(user)){
  response.setCode(200);
  response.setMessage("此邮箱已注册,请勿重复注册!");
  return response;
  }else {
  response.setMessage("注册激活邮件已发送至您邮箱,请在12小时内激活完成注册!");
  return response;
  }
 }
 return response;
 }

 private SimpleResponse checkSignUpRequest(User user){
 SimpleResponse response = new SimpleResponse();
 String email = user.getEmail();
 if (!CheckUtils.checkEmail(email)){
  response.setCode(200);
  response.setMessage("邮箱格式不合法");
  return response;
 }
 String password = user.getPassword();
 if (!CheckUtils.checkPassword(password)){
  response.setCode(200);
  response.setMessage("密码长度必须为8-16位,且必须包含数字和字母");
  return response;
 }
 String nickname = user.getNickname();
 if (!CheckUtils.checkNickname(nickname)){
  response.setCode(200);
  response.setMessage("昵称长度不合法");
  return response;
 }
 response.setCode(100);
 return response;
 }

}
Nach dem Login kopieren
Rendering

Überprüfung

Blick von unten nach oben, von Benutzerregistrierung per E-Mail. Der größte Teil des Codes wird zur Parameterüberprüfung verwendet, da das Verhalten des Benutzers nicht vertrauenswürdig ist Überprüfung ohne tote Winkel. . . .

【Verwandte Empfehlungen】1. Kostenloses Java-Video-Tutorial

2.

YMP-Online-Handbuch
3.

JAVA-Anfänger-Video-Tutorial

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Beispiels zum Ausfüllen der E-Mail-Registrierungsfunktion in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Armstrong-Zahl in Java Armstrong-Zahl in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

See all articles