Funktionale Anforderungen:
(Lernvideo-Sharing: Java-Video-Tutorial)
1. Generieren Sie zufällig 4 Zeichen im Hintergrund2. Nur 1 Bestätigungscode kann innerhalb von 1 Minute gesendet werden als 1 Minute, aber innerhalb von 5 Minuten ist der gesendete Bestätigungscode immer noch das zum ersten Mal generierte Bestätigungscodezeichen4 Nach mehr als 5 Minuten wird ein neuer Bestätigungscode generiertEs spielt keine Rolle, um welches Framework es sich handelt Wird im Frontend verwendetHängt von der Konfiguration abSMS hängt von der Redis-Konfiguration des Pakets ab, da der Bestätigungscode und die Mobiltelefonnummer in Redis gespeichert sindDie von der SMS-Plattform verwendete Netzwerk-SMS http://www. smschinese.cn/ kann mit 5 Tests kostenlos verwendet werdenHinweis: Konfiguration Der Kontoname und der Schlüssel der Schnittstelle sind für jeden unterschiedlich. Kopieren Sie ihn und denken Sie daran, ihn zu ändern. SMS-Abhängigkeitspaket.
<!--短信jar包--> <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency>
Bevor Sie Redis verwenden, müssen Sie zunächst die Verbindung konfigurieren und in application.properties konfigurieren
<!--redis jar 包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
Erstellen Sie eine Tool-Klasse StrUtils.getComplexRandomString () // Ermitteln Sie die Anzahl der zufälligen Zeichen und geben Sie sie selbst ein
# redis 属性信息 ## redis数据库索引(默认为0) spring.redis.database=0 ## redis服务器地址 spring.redis.host=localhost ## redis服务器连接端口 spring.redis.port=6379 ## redis服务器连接密码(默认为空) ## spring.redis.password=123456 ## 连接池最大连接数(使用负值表示没有限制) spring.redis.jedis.pool.max-active=8 ## 连接池中的最大空闲连接 spring.redis.jedis.pool.max-idle=8 ## 连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.jedis.pool.max-wait=-1ms ## 连接池中的最小空闲连接 spring.redis.jedis.pool.min-idle=0
Erstellen Sie eine SMS-Sendeklasse Konfigurationsschnittstelle. Andere Klassen können die Sendemethode dieser Klasse aufrufen, um die Mobiltelefonnummer zu übergeben und Inhalte zu senden. Erstellen Sie eine Registrierungskonstantenklasse. Sie wird hauptsächlich verwendet, um zu unterscheiden, ob der Bestätigungscode für die Registrierung, Anmeldung oder das Passwort verwendet wird Abruf
import java.util.ArrayList; import java.util.List; import java.util.Random; /** * @author yaohuaipeng * @date 2018/10/26-16:16 */ public class StrUtils { /** * 把逗号分隔的字符串转换字符串数组 * * @param str * @return */ public static String[] splitStr2StrArr(String str,String split) { if (str != null && !str.equals("")) { return str.split(split); } return null; } /** * 把逗号分隔字符串转换List的Long * * @param str * @return */ public static List<Long> splitStr2LongArr(String str) { String[] strings = splitStr2StrArr(str,","); if (strings == null) return null; List<Long> result = new ArrayList<>(); for (String string : strings) { result.add(Long.parseLong(string)); } return result; } /** * 把逗号分隔字符串转换List的Long * * @param str * @return */ public static List<Long> splitStr2LongArr(String str,String split) { String[] strings = splitStr2StrArr(str,split); if (strings == null) return null; List<Long> result = new ArrayList<>(); for (String string : strings) { result.add(Long.parseLong(string)); } return result; } public static String getRandomString(int length) { String str = "0123456789"; Random random = new Random(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < length; i++) { int number = random.nextInt(10); sb.append(str.charAt(number)); } return sb.toString(); } public static String getComplexRandomString(int length) { String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Random random = new Random(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < length; i++) { int number = random.nextInt(62); sb.append(str.charAt(number)); } return sb.toString(); } public static String convertPropertiesToHtml(String properties){ //1:容量:6:32GB_4:样式:12:塑料壳 StringBuilder sBuilder = new StringBuilder(); String[] propArr = properties.split("_"); for (String props : propArr) { String[] valueArr = props.split(":"); sBuilder.append(valueArr[1]).append(":").append(valueArr[3]).append("<br>"); } return sBuilder.toString(); } }
Klicken Sie, um den Bestätigungscode an der Rezeption zu senden. Berücksichtigen Sie zunächst die gleichzeitige Registrierung mehrerer Benutzer. Der Schlüsselwert kann nicht fest codiert werden. Fügen Sie zunächst die Registrierungsidentifikation (KEY) entsprechend der Mobiltelefonnummer hinzu Bestimmen Sie, ob der Wert in Redis vorhanden ist. Der Schlüssel ist die Mobiltelefonnummer + Registrierungs-ID.
Beurteilen Sie die Zeit, d. h. beim Erstellen des Redis-Schlüssel-Wert-Paares zum Wert addiert werden, und der Wert wird vom Zeitstempel der ersten Erstellung dividiert, um den spezifischen Zeitpunkt zu erhalten Die Überlebenszeit des Schlüssels beträgt 5 Minuten und 300 Sekunden. Die Mobiltelefonnummer wird vom Frontend übertragen, und die Geschäftslogik muss nicht beurteilen, ob die Mobiltelefonnummer registriert ist Dinge. Um redisTemplate verwenden zu können, müssen Sie das Redis-JAR-Paket einführen.StrUtils.getComplexRandomString(4) Dies ist die oben erstellte Toolklasse. Eine der Methoden zum Erstellen einer 4-stelligen Zufallszahl,
StringUtils.isEmpty, ist import org.springframework. util.StringUtils Verstehen Sie es nicht falschimport org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; import java.io.IOException; public class SendMsgUtils { private static final String UID = "amazingwest";//这是建网SMS 上的登陆账号 private static final String KEY = "d41d8cd98f00b204e980"; //这是密钥 /** * 手机发送短信 * @param phone 手机号码 * @param context 发送短信内容 */ public static void send(String phone, String context) { PostMethod post = null; try { //创建Http客户端 HttpClient client = new HttpClient(); //创建一个post方法 post = new PostMethod("http://utf8.api.smschinese.cn"); //添加请求头信息 post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf8");//在头文件中设置转码 NameValuePair[] data = {new NameValuePair("Uid", UID), new NameValuePair("Key", KEY), new NameValuePair("smsMob", phone), new NameValuePair("smsText", context)}; //设置请求体 post.setRequestBody(data); //执行post方法 client.executeMethod(post); //获取响应头信息 Header[] headers = post.getResponseHeaders(); //获取状态码 int statusCode = post.getStatusCode(); System.out.println("statusCode:" + statusCode); //循环打印头信息 for (Header h : headers) { System.out.println(h.toString()); } //获取相应体 String result = new String(post.getResponseBodyAsString().getBytes("utf8")); System.out.println(result); //打印返回消息状态 } catch (IOException e) { e.printStackTrace(); } finally { if (post != null) { //关闭资源 post.releaseConnection(); } } } }
Verwandte Empfehlungen:
Java-Einführungs-TutorialDas obige ist der detaillierte Inhalt vonJava implementiert die Funktion zum Senden von Bestätigungscode-SMS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!