Heim > Java > JavaErste Schritte > Hauptteil

Java implementiert die Funktion zum Senden von Bestätigungscode-SMS

王林
Freigeben: 2021-01-20 09:52:53
nach vorne
2998 Leute haben es durchsucht

Java implementiert die Funktion zum Senden von Bestätigungscode-SMS

Funktionale Anforderungen:

(Lernvideo-Sharing: Java-Video-Tutorial)

1. Generieren Sie zufällig 4 Zeichen im Hintergrund

2. 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ätigungscodezeichen

4 Nach mehr als 5 Minuten wird ein neuer Bestätigungscode generiert

Es spielt keine Rolle, um welches Framework es sich handelt Wird im Frontend verwendet

Hängt von der Konfiguration ab

SMS hängt von der Redis-Konfiguration des Pakets ab, da der Bestätigungscode und die Mobiltelefonnummer in Redis gespeichert sind

Die von der SMS-Plattform verwendete Netzwerk-SMS http://www. smschinese.cn/ kann mit 5 Tests kostenlos verwendet werden

Hinweis: 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>
Nach dem Login kopieren
. Redis-JAR-Paket

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>
Nach dem Login kopieren

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
Nach dem Login kopieren

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();
    }

}
Nach dem Login kopieren

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 falsch

import 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();
            }
        }
    }


}
Nach dem Login kopieren
komplett.

Verwandte Empfehlungen:

Java-Einführungs-Tutorial

Das 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!

Verwandte Etiketten:
Quelle:csdn.net
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage