国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Java JavaErste Schritte Java implementiert die Funktion zum Senden von Best?tigungscode-SMS

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

Jan 20, 2021 am 09:52 AM
java Kurze Nachricht Best?tigungscode

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>
. 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>

Erstellen Sie eine Tool-Klasse StrUtils.getComplexRandomString () // Ermitteln Sie die Anzahl der zuf?lligen Zeichen und geben Sie sie selbst ein

# redis 屬性信息
## redis數(shù)據(jù)庫(kù)索引(默認(rèn)為0)
spring.redis.database=0
## redis服務(wù)器地址
spring.redis.host=localhost
## redis服務(wù)器連接端口
spring.redis.port=6379
## redis服務(wù)器連接密碼(默認(rèn)為空)
## spring.redis.password=123456
## 連接池最大連接數(shù)(使用負(fù)值表示沒(méi)有限制)
spring.redis.jedis.pool.max-active=8
## 連接池中的最大空閑連接
spring.redis.jedis.pool.max-idle=8
## 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒(méi)有限制)
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 {
    /**
     * 把逗號(hào)分隔的字符串轉(zhuǎn)換字符串?dāng)?shù)組
     *
     * @param str
     * @return
     */
    public static String[] splitStr2StrArr(String str,String split) {
        if (str != null && !str.equals("")) {
            return str.split(split);
        }
        return null;
    }


    /**
     * 把逗號(hào)分隔字符串轉(zhuǎn)換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;
    }
    /**
     * 把逗號(hào)分隔字符串轉(zhuǎn)換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 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";//這是建網(wǎng)SMS 上的登陸賬號(hào)
    private static final String KEY = "d41d8cd98f00b204e980"; //這是密鑰

    /**
     * 手機(jī)發(fā)送短信
     * @param phone  手機(jī)號(hào)碼
     * @param context  發(fā)送短信內(nèi)容
     */
    public static void send(String phone, String context) {

        PostMethod post = null;
        try {
            //創(chuàng)建Http客戶端
            HttpClient client = new HttpClient();
            //創(chuàng)建一個(gè)post方法
            post = new PostMethod("http://utf8.api.smschinese.cn");
            //添加請(qǐng)求頭信息
            post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf8");//在頭文件中設(shè)置轉(zhuǎn)碼

            NameValuePair[] data = {new NameValuePair("Uid", UID),
                    new NameValuePair("Key", KEY),
                    new NameValuePair("smsMob", phone),
                    new NameValuePair("smsText", context)};
            //設(shè)置請(qǐng)求體
            post.setRequestBody(data);
            //執(zhí)行post方法
            client.executeMethod(post);

            //獲取響應(yīng)頭信息
            Header[] headers = post.getResponseHeaders();
            //獲取狀態(tài)碼
            int statusCode = post.getStatusCode();
            System.out.println("statusCode:" + statusCode);
            //循環(huán)打印頭信息
            for (Header h : headers) {
                System.out.println(h.toString());
            }
            //獲取相應(yīng)體
            String result = new String(post.getResponseBodyAsString().getBytes("utf8"));
            System.out.println(result); //打印返回消息狀態(tài)

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (post != null) {
                //關(guān)閉資源
                post.releaseConnection();
            }
        }
    }


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

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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Hei?e Themen

PHP-Tutorial
1502
276
Wie gehe ich mit Transaktionen in Java mit JDBC um? Wie gehe ich mit Transaktionen in Java mit JDBC um? Aug 02, 2025 pm 12:29 PM

Um JDBC -Transaktionen korrekt zu verarbeiten, müssen Sie zun?chst den automatischen Komiti -Modus ausschalten und dann mehrere Vorg?nge ausführen und schlie?lich entsprechend den Ergebnissen festlegen oder rollen. 1. Nennen Sie Conn.SetAutoCommit (False), um die Transaktion zu starten. 2. Führen Sie mehrere SQL -Operationen aus, z. B. einfügen und aktualisieren. 3. Rufen Sie Conn.Commit () an, wenn alle Vorg?nge erfolgreich sind, und rufen Sie Conn.Rollback () auf, wenn eine Ausnahme auftritt, um die Datenkonsistenz zu gew?hrleisten. Gleichzeitig sollten Try-with-Ressourcen verwendet werden, um Ressourcen zu verwalten, Ausnahmen ordnungsgem?? zu behandeln und Verbindungen zu schlie?en, um Verbindungsleckage zu vermeiden. Darüber hinaus wird empfohlen, Verbindungspools zu verwenden und Save -Punkte zu setzen, um teilweise Rollback zu erreichen und Transaktionen so kurz wie m?glich zu halten, um die Leistung zu verbessern.

Vergleich von Java Frameworks: Spring Boot vs Quarkus gegen Micronaut Vergleich von Java Frameworks: Spring Boot vs Quarkus gegen Micronaut Aug 04, 2025 pm 12:48 PM

Pre-Formancetartuptimemoryusage, QuarkusandmicronautleadduToCompile-Time-foringandgraalvSupport, WithQuarkusofttenperformLightBetterin serverloser Szenarien.2. Thyvelopecosystem,

Gehen Sie zum Beispiel für HTTP Middleware -Protokollierung Gehen Sie zum Beispiel für HTTP Middleware -Protokollierung Aug 03, 2025 am 11:35 AM

HTTP-Protokoll Middleware in Go kann Anforderungsmethoden, Pfade, Client-IP und zeitaufw?ndiges Aufzeichnen aufzeichnen. 1. Verwenden Sie http.Handlerfunc, um den Prozessor zu wickeln, 2. Nehmen Sie die Startzeit und die Endzeit vor und nach dem Aufrufen als n?chstes auf. Der vollst?ndige Beispielcode wurde überprüft, um auszuführen und eignet sich zum Starten eines kleinen und mittelgro?en Projekts. Zu den Erweiterungsvorschl?gen geh?ren das Erfassen von Statuscodes, die Unterstützung von JSON -Protokollen und die Nachverfolgung von ID -IDs.

Wie funktioniert die Müllsammlung in Java? Wie funktioniert die Müllsammlung in Java? Aug 02, 2025 pm 01:55 PM

Die Müllsammlung von Java (GC) ist ein Mechanismus, der automatisch den Speicher verwaltet, der das Risiko eines Speicherlecks verringert, indem unerreichbare Objekte zurückgeführt werden. 1.GC beurteilt die Zug?nglichkeit des Objekts aus dem Stammobjekt (z. B. Stapelvariablen, aktive Threads, statische Felder usw.) und nicht erreichbare Objekte als Müll markiert. 2. Basierend auf dem markierten Algorithmus markieren Sie alle erreichbaren Objekte und l?schen Sie nicht markierte Objekte. 3.. Verfolgen Sie eine Generationskollektionsstrategie: Die neue Generation (Eden, S0, S1) führt h?ufig MollGC aus; Die ?lteren Menschen erzielen weniger, dauert jedoch l?nger, um MajorGC durchzuführen. MetaPace speichert Klassenmetadaten. 4. JVM bietet eine Vielzahl von GC -Ger?ten: SerialGC ist für kleine Anwendungen geeignet; ParallelgC verbessert den Durchsatz; CMS reduziert sich

Vergleich von Java -Build -Werkzeugen: Maven vs. Gradle Vergleich von Java -Build -Werkzeugen: Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

GradleStheBetterChoiceFormostnewProjectsDuetoitSuperiorFlexibilit?t, Leistung und ModerntoolingSupport.1.GRADLE'SGROOVY/KOTLINDSLISMORECONCISEANDEIPRESSIVETHANMANMANBOSEXML.2.GRAGRECONCISEANDEPRPRESSIVETHANMAVENSVOSEXML.2.

Verwenden von HTML `Input` -Typen für Benutzerdaten Verwenden von HTML `Input` -Typen für Benutzerdaten Aug 03, 2025 am 11:07 AM

Durch die Auswahl des richtigen HTMlinput -Typs kann die Datengenauigkeit verbessert, die Benutzererfahrung verbessert und die Benutzerfreundlichkeit verbessert werden. 1. W?hlen Sie die entsprechenden Eingabetypen gem?? dem Datentyp aus, z. B. Text, E -Mail, Tel, Nummer und Datum, die automatisch überprüft und an die Tastatur anpassen k?nnen. 2. Verwenden Sie HTML5, um neue Typen wie URL, Farbe, Reichweite und Suche hinzuzufügen, die eine intuitivere Interaktionsmethode bieten k?nnen. 3.. Verwenden Sie Platzhalter und erforderliche Attribute, um die Effizienz und Genauigkeit der Formulierung zu verbessern. Es sollte jedoch beachtet werden, dass der Platzhalter das Etikett nicht ersetzen kann.

Wie lese ich eine CSV -Datei in Java? Wie lese ich eine CSV -Datei in Java? Aug 03, 2025 am 11:56 AM

Die Verwendung der OpenCSV -Bibliothek ist die beste Wahl zum Lesen von CSV -Dateien. Es kann komplexe Situationen bew?ltigen und mehrere Merkmale unterstützt. 2. Für einfache CSV-Dateien k?nnen Sie Javas integriertes BufferedReader in Kombination mit Split-Methode verwenden. 3. Wenn Sie eine flexiblere Formatsteuerung ben?tigen oder Apache -Komponenten verwendet haben, k?nnen Sie Apache CommonsCSV ausw?hlen. OpenCSV wird für die Einfachheit, Robustheit und die F?higkeit, CSV -Probleme in realen Szenarien zu l?sen, empfohlen.

Wie benutze ich das Beobachtermuster in Java? Wie benutze ich das Beobachtermuster in Java? Aug 02, 2025 am 11:52 AM

Die klare Antwort auf diese Frage ist die Empfehlung, das Beobachtermuster mithilfe einer benutzerdefinierten Observer -Schnittstelle zu implementieren. 1. Obwohl Java beobachtbar und Beobachter liefert, ist erstere eine Klasse und wurde veraltet und fehlt Flexibilit?t. 2. Die moderne empfohlene Praxis besteht darin, eine funktionale Observer -Schnittstelle zu definieren, und das Subjekt beh?lt die Beobachterliste bei und benachrichtigt alle Beobachter, wenn sich der Zustand ?ndert. 3.. Es kann in Kombination mit Lambda -Ausdrücken verwendet werden, um die Einfachheit und Wartbarkeit des Codes zu verbessern. V. Daher sollten neue Projekte ein benutzerdefiniertes Observer-Schnittstellenschema annehmen, das Typen ist, einfach zu testen und sich auf moderne Java spezialisiert zu haben

See all articles