Java调用WebService接口实现发送手机短信验证码功能
生活随笔
收集整理的這篇文章主要介紹了
Java调用WebService接口实现发送手机短信验证码功能
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
一、樣式示例:
二、前臺的注冊頁面的代碼:reg.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <%@page import="cn.gov.csrc.base.action.FindAllData"%> <%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>中國證券會證券期貨違法違規(guī)舉報(bào)中心-注冊</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="shortcut icon" type="image/x-icon" href="<%=request.getContextPath()%>/images/favicon.ico" /> <link rel="stylesheet" type="text/css"href="<%=request.getContextPath()%>/css/main.css"> <linkhref="<%=request.getContextPath()%>/formValidator1/style/validator.css"rel="stylesheet" type="text/css" /> <style type="text/css"> button {background: #F0F0F0 repeat-x;padding-top: 3px; border-top : 1px solid #708090;border-right: 1px solid #708090;border-bottom: 1px solid #708090;border-left: 1px solid #708090;width: auto;line-height: 12pt; font-size : 10pt;cursor: hand;font-size: 10pt;border-top: 1px solid #708090; } </style> <script src="<%=request.getContextPath()%>/js/jquery-1.7.2.min.js"type="text/javascript"></script> <script src="<%=request.getContextPath()%>/formValidator1/formValidator-4.0.1.js"type="text/javascript"></script> <script src="<%=request.getContextPath()%>/formValidator1/formValidatorRegex.js"type="text/javascript"></script> <script src="<%=request.getContextPath()%>/js/register.js"type="text/javascript"></script> <script src="<%=request.getContextPath()%>/js/sms.js"type="text/javascript"></script> <script type="text/javascript">function changeCheckNum() {var checkNumImage_ = document.getElementById("checkNumImage");checkNumImage_.src = "${pageContext.request.contextPath}/image.jsp?timeStamp="+ new Date().getTime();} </script> <script type="text/javascript">var msg = "${message}";if (msg != "") {alert(msg);} </script> </head> <body><%@include file="/statics/top.jspf"%><div class="center_division"><div class="center_body"><div class="center_menu"><font color="#000000">當(dāng)前位置:</font><a href="<%=request.getContextPath()%>/statics/reg.jsp"><font color="#000000">用戶注冊</font></a></div></div><div class="center_body_menu"><s:form action="RegisterAction_register" id="form1" name="form1" method="post" namespace="/"><table id="tb"><tr><td colspan="3" align="center" bgcolor="#DDDFE1">舉報(bào)人基本信息</td></tr><tr><td align="center" width="30%"> <img src="images/new_reg_xing.gif"/>用戶名:</td><td align="center" width="40%"><s:textfield name="username" id="username" cssStyle="width:160px;height:24px;" onblur="checkusername()"/></td><td align="left" width="30%"><span id="usernameTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>username</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>登錄密碼:</td><td align="center" width="40%"><s:password name="password" id="password" cssStyle="width:160px;height:24px;" onblur="checkpassword()"/></td><td align="left" width="30%"><span id="passwordTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>password</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>確認(rèn)密碼:</td><td align="center" width="40%"><s:password name="passwordRepeat" id="passwordRepeat" cssStyle="width:160px;height:24px;" onblur="checkpasswrodb()"/></td><td align="left" width="30%"><span id="passwordRepeatTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>passwordRepeat</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>姓 名:</td><td align="center" width="40%"><s:textfield name="nickname" id="nickname" cssStyle="width:160px;height:24px;" onblur="checknickname()"/></td><td align="left" width="30%"><span id="nicknameTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>nickname</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%">性 別:</td><td align="center" width="40%"><s:radio list="#application.dataMap.get('10001')" name="jbSex" cssStyle="height:24px;"/></td><td align="left" width="30%"></td></tr><tr><td align="center" width="30%">聯(lián)系地址:</td><td align="center" width="40%"><s:textfield name="jbAddress" id="jbAddress" cssStyle="width:160px;height:24px;" /></td><td align="left" width="30%"><span id="jbAddressTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbAddress</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>聯(lián)系手機(jī):</td><td align="center" width="40%"><s:textfield id="jbPhone" name="jbPhone" cssStyle="width:160px;height:24px;" onblur="checkjbPhone()"/></td><td align="left" width="30%"><span id="jbPhoneTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbPhone</s:param></s:fielderror></span></td></tr><tr><td align="center"><img src="images/new_reg_xing.gif"/>短信驗(yàn)證碼:</td><td align="left" colspan="2" style="padding-left: 112px;"><s:textfield id="SmsCheckCode" name="SmsCheckCode" cssStyle="width:80px;height:24px;" maxLength="6" /><span><input type="button" id="btnSendCode" name="btnSendCode" value="免費(fèi)獲取驗(yàn)證碼" onclick="sendMessage()" /></span><span id="SmsCheckCodeTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>SmsCheckCodeTip</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>證件類型:</td><td align="center" width="40%"><s:select list="#application.dataMap.get('10002')" label=""headerKey="" headerValue="--請選擇--" value="1" listValue="value" onchange="enableCredentialsCode(this)"name="jbCredentialsName" id="jbCredentialsName" cssStyle="width:160px;height:24px;"/></td><td align="left" width="30%"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbCredentialsName</s:param></s:fielderror></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>證件號碼:</td><td align="center" width="40%"><s:textfield name="jbCredentialsCode" id="jbCredentialsCode" cssStyle="width:160px;height:24px;" onblur="checkjbCredentialsCode()"/></td><td align="left" width="30%"><span id="jbCredentialsCodeTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbCredentialsCode</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%">單位名稱:</td><td align="center" width="40%"><s:textfield name="jbCompanyName" id="jbCompanyName" cssStyle="width:160px;height:24px;" /></td><td align="left" width="30%"><span id="jbCompanyNameTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbCompanyName</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>所在地區(qū):</td><td align="center" width="40%"><s:select list="#application.dataMap.get('10003')" label=""headerKey="" headerValue="--請選擇--" listKey="key"cssStyle="width:160px;height:24px;" listValue="value" id="jbSourceArea"name="jbSourceArea" onblur="checkjbSourceArea()"/></td><td align="left" width="30%"><span id="jbSourceAreaTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbSourceArea</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"> <img src="images/new_reg_xing.gif"/>驗(yàn)證碼:</td><td align="center" width="40%"><s:textfield id="checkNum" name="checkNum" cssStyle="width:60px;height:24px;" onblur="checkNumber()" maxLength="4"/><img id="checkNumImage" src="${pageContext.request.contextPath}/image.jsp"><a onClick="changeCheckNum()" title="點(diǎn)擊換一張" style="cursor:hand;"> 換一張</a></td><td align="left" width="30%"><span id="checkNumTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>checkNumTip</s:param></s:fielderror></span></td></tr><tr><td colspan="3" style="vertical-align: top; padding-top: 5px;padding-bottom: 5px;"><input type="submit" value="注冊" style="width:50px; height:24px;"/><input type="reset" value="重置" style="width:50px; height:24px;"/></td></tr></table></s:form></div></div><%@include file="/common/buttom.jspf"%> </body> </html>三、前臺獲取短信驗(yàn)證碼的js:sms.js
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <%@page import="cn.gov.csrc.base.action.FindAllData"%> <%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>中國證券會證券期貨違法違規(guī)舉報(bào)中心-注冊</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="shortcut icon" type="image/x-icon" href="<%=request.getContextPath()%>/images/favicon.ico" /> <link rel="stylesheet" type="text/css"href="<%=request.getContextPath()%>/css/main.css"> <linkhref="<%=request.getContextPath()%>/formValidator1/style/validator.css"rel="stylesheet" type="text/css" /> <style type="text/css"> button {background: #F0F0F0 repeat-x;padding-top: 3px; border-top : 1px solid #708090;border-right: 1px solid #708090;border-bottom: 1px solid #708090;border-left: 1px solid #708090;width: auto;line-height: 12pt; font-size : 10pt;cursor: hand;font-size: 10pt;border-top: 1px solid #708090; } </style> <script src="<%=request.getContextPath()%>/js/jquery-1.7.2.min.js"type="text/javascript"></script> <script src="<%=request.getContextPath()%>/formValidator1/formValidator-4.0.1.js"type="text/javascript"></script> <script src="<%=request.getContextPath()%>/formValidator1/formValidatorRegex.js"type="text/javascript"></script> <script src="<%=request.getContextPath()%>/js/register.js"type="text/javascript"></script> <script src="<%=request.getContextPath()%>/js/sms.js"type="text/javascript"></script> <script type="text/javascript">function changeCheckNum() {var checkNumImage_ = document.getElementById("checkNumImage");checkNumImage_.src = "${pageContext.request.contextPath}/image.jsp?timeStamp="+ new Date().getTime();} </script> <script type="text/javascript">var msg = "${message}";if (msg != "") {alert(msg);} </script> </head> <body><%@include file="/statics/top.jspf"%><div class="center_division"><div class="center_body"><div class="center_menu"><font color="#000000">當(dāng)前位置:</font><a href="<%=request.getContextPath()%>/statics/reg.jsp"><font color="#000000">用戶注冊</font></a></div></div><div class="center_body_menu"><s:form action="RegisterAction_register" id="form1" name="form1" method="post" namespace="/"><table id="tb"><tr><td colspan="3" align="center" bgcolor="#DDDFE1">舉報(bào)人基本信息</td></tr><tr><td align="center" width="30%"> <img src="images/new_reg_xing.gif"/>用戶名:</td><td align="center" width="40%"><s:textfield name="username" id="username" cssStyle="width:160px;height:24px;" onblur="checkusername()"/></td><td align="left" width="30%"><span id="usernameTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>username</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>登錄密碼:</td><td align="center" width="40%"><s:password name="password" id="password" cssStyle="width:160px;height:24px;" onblur="checkpassword()"/></td><td align="left" width="30%"><span id="passwordTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>password</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>確認(rèn)密碼:</td><td align="center" width="40%"><s:password name="passwordRepeat" id="passwordRepeat" cssStyle="width:160px;height:24px;" onblur="checkpasswrodb()"/></td><td align="left" width="30%"><span id="passwordRepeatTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>passwordRepeat</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>姓 名:</td><td align="center" width="40%"><s:textfield name="nickname" id="nickname" cssStyle="width:160px;height:24px;" onblur="checknickname()"/></td><td align="left" width="30%"><span id="nicknameTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>nickname</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%">性 別:</td><td align="center" width="40%"><s:radio list="#application.dataMap.get('10001')" name="jbSex" cssStyle="height:24px;"/></td><td align="left" width="30%"></td></tr><tr><td align="center" width="30%">聯(lián)系地址:</td><td align="center" width="40%"><s:textfield name="jbAddress" id="jbAddress" cssStyle="width:160px;height:24px;" /></td><td align="left" width="30%"><span id="jbAddressTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbAddress</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>聯(lián)系手機(jī):</td><td align="center" width="40%"><s:textfield id="jbPhone" name="jbPhone" cssStyle="width:160px;height:24px;" onblur="checkjbPhone()"/></td><td align="left" width="30%"><span id="jbPhoneTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbPhone</s:param></s:fielderror></span></td></tr><tr><td align="center"><img src="images/new_reg_xing.gif"/>短信驗(yàn)證碼:</td><td align="left" colspan="2" style="padding-left: 112px;"><s:textfield id="SmsCheckCode" name="SmsCheckCode" cssStyle="width:80px;height:24px;" maxLength="6" /><span><input type="button" id="btnSendCode" name="btnSendCode" value="免費(fèi)獲取驗(yàn)證碼" onclick="sendMessage()" /></span><span id="SmsCheckCodeTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>SmsCheckCodeTip</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>證件類型:</td><td align="center" width="40%"><s:select list="#application.dataMap.get('10002')" label=""headerKey="" headerValue="--請選擇--" value="1" listValue="value" onchange="enableCredentialsCode(this)"name="jbCredentialsName" id="jbCredentialsName" cssStyle="width:160px;height:24px;"/></td><td align="left" width="30%"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbCredentialsName</s:param></s:fielderror></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>證件號碼:</td><td align="center" width="40%"><s:textfield name="jbCredentialsCode" id="jbCredentialsCode" cssStyle="width:160px;height:24px;" onblur="checkjbCredentialsCode()"/></td><td align="left" width="30%"><span id="jbCredentialsCodeTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbCredentialsCode</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%">單位名稱:</td><td align="center" width="40%"><s:textfield name="jbCompanyName" id="jbCompanyName" cssStyle="width:160px;height:24px;" /></td><td align="left" width="30%"><span id="jbCompanyNameTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbCompanyName</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"><img src="images/new_reg_xing.gif"/>所在地區(qū):</td><td align="center" width="40%"><s:select list="#application.dataMap.get('10003')" label=""headerKey="" headerValue="--請選擇--" listKey="key"cssStyle="width:160px;height:24px;" listValue="value" id="jbSourceArea"name="jbSourceArea" onblur="checkjbSourceArea()"/></td><td align="left" width="30%"><span id="jbSourceAreaTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>jbSourceArea</s:param></s:fielderror></span></td></tr><tr><td align="center" width="30%"> <img src="images/new_reg_xing.gif"/>驗(yàn)證碼:</td><td align="center" width="40%"><s:textfield id="checkNum" name="checkNum" cssStyle="width:60px;height:24px;" onblur="checkNumber()" maxLength="4"/><img id="checkNumImage" src="${pageContext.request.contextPath}/image.jsp"><a onClick="changeCheckNum()" title="點(diǎn)擊換一張" style="cursor:hand;"> 換一張</a></td><td align="left" width="30%"><span id="checkNumTip"><s:fielderror cssStyle="color:red;padding-left:10px;"><s:param>checkNumTip</s:param></s:fielderror></span></td></tr><tr><td colspan="3" style="vertical-align: top; padding-top: 5px;padding-bottom: 5px;"><input type="submit" value="注冊" style="width:50px; height:24px;"/><input type="reset" value="重置" style="width:50px; height:24px;"/></td></tr></table></s:form></div></div><%@include file="/common/buttom.jspf"%> </body> </html>四、驗(yàn)證碼用戶名和手機(jī)號碼的js:register.js
//去掉前后空格 function trim(str) {var strnew = str.replace(/^\s*|\s*$/g, "");return strnew; } //用戶名 function checkusername() {var username = document.form1.username.value;if (username == "" || !isNaN(username.charAt(0))) {document.getElementById("usernameTip").innerHTML = "<font color='red'>× 首字母不能為數(shù)字或者用戶名不能為空</font>";return false;} else if (username.length < 6 || username.length > 30) {document.getElementById("usernameTip").innerHTML = "<font color='red'>× 用戶名長度為6-30位字符</font>";return false;} else {document.getElementById("usernameTip").innerHTML = "<font color='#339933'>√ 用戶名合格</font>";// 向后臺發(fā)送處理數(shù)據(jù)$.ajax({url : "UserAction_checkUserName.action",// 目標(biāo)地址data : {username : username}, // 目標(biāo)參數(shù)type : "POST", // 用POST方式傳輸dataType : "text", // 數(shù)據(jù)格式:textsuccess : function(data) {data = parseInt(data, 10);if (data != 0) {$("#usernameTip").html("<font color='red'>× 該用戶名已經(jīng)被注冊,請重新輸入</font>");} else {$("#usernameTip").html("<font color='#339933'>√ 該用戶名可以注冊,輸入正確</font>");}}});return true;} } // 登錄密碼 function checkpassword() {var password = document.form1.password.value;if (password.length < 6 || password.length > 30) {document.getElementById("passwordTip").innerHTML = "<font color='red'>× 密碼長度不能小于6位,大于30位</font>";return false;} else if (!isNaN(password)) {document.getElementById("passwordTip").innerHTML = "<font color='red'>× 密碼不能全是數(shù)字</font>";return false;} else {document.getElementById("passwordTip").innerHTML = "<font color='#339933'>√ 密碼合格</font>";return true;} } // 確認(rèn)密碼 function checkpasswrodb() {var password = document.form1.password.value;var passwordRepeat = document.form1.passwordRepeat.value;if (trim(password) != trim(passwordRepeat)) {document.getElementById("passwordRepeatTip").innerHTML = "<font color='red'>× 兩次密碼輸入必須一致</font>";return false;} else {document.getElementById("passwordRepeatTip").innerHTML = "<font color='#339933'>√ 密碼輸入一致</font>";return true;} } // 姓名 function checknickname() {var nickname = document.form1.nickname.value;if (trim(nickname) == "") {document.getElementById("nicknameTip").innerHTML = "<font color='red'>× 姓名不能為空</font>";return false;} else {document.getElementById("nicknameTip").innerHTML = "<font color='#339933'>√ 姓名輸入正確</font>";return true;} } // 聯(lián)系手機(jī)(ajax驗(yàn)證手機(jī)號碼是否已經(jīng)存在) function checkjbPhone() {var jbPhone = document.form1.jbPhone.value;var re= /(^1[3|5|8][0-9]{9}$)/;if (trim(jbPhone) == "") {document.getElementById("jbPhoneTip").innerHTML = "<font color='red'>× 手機(jī)號碼不能為空</font>";return false;} else if(trim(jbPhone) != ""){if(!re.test(jbPhone)){document.getElementById("jbPhoneTip").innerHTML = "<font color='red'>× 請輸入有效的手機(jī)號碼</font>";return false;}else{document.getElementById("jbPhoneTip").innerHTML = "<font color='#339933'>√ 手機(jī)號碼輸入正確</font>";// 向后臺發(fā)送處理數(shù)據(jù)$.ajax({url : "UserAction_checkPhone.action",// 目標(biāo)地址data : {jbPhone : jbPhone}, // 目標(biāo)參數(shù)type : "POST", // 用POST方式傳輸dataType : "text", // 數(shù)據(jù)格式:textsuccess : function(data) {data = parseInt(data, 10);if (data != 0) {$("#jbPhoneTip").html("<font color='red'>× 該手機(jī)號碼已經(jīng)被注冊,請重新輸入</font>");} else {$("#jbPhoneTip").html("<font color='#339933'>√ 該手機(jī)號碼可以注冊,輸入正確</font>");}}});return true;}}} // 證件號碼 function checkjbCredentialsCode() {var jbCredentialsCode = document.form1.jbCredentialsCode.value;var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if (trim(jbCredentialsCode) == "") {document.getElementById("jbCredentialsCodeTip").innerHTML = "<font color='red'>× 證件號碼不能為空</font>";return false;} else if(trim(jbCredentialsCode) != ""){if(!reg.test(jbCredentialsCode)){document.getElementById("jbCredentialsCodeTip").innerHTML = "<font color='red'>× 請輸入合法的證件號碼</font>";return false;}else{document.getElementById("jbCredentialsCodeTip").innerHTML = "<font color='#339933'>√ 證件號碼輸入正確</font>";// 向后臺發(fā)送處理數(shù)據(jù)$.ajax({url : "UserAction_checkCredentialsCode.action",// 目標(biāo)地址data : {jbCredentialsCode : jbCredentialsCode}, // 目標(biāo)參數(shù)type : "POST", // 用POST方式傳輸dataType : "text", // 數(shù)據(jù)格式:textsuccess : function(data) {data = parseInt(data, 10);if (data != 0) {$("#jbCredentialsCodeTip").html("<font color='red'>× 該證件號碼已經(jīng)被注冊,請重新輸入</font>");} else {$("#jbCredentialsCodeTip").html("<font color='#339933'>√ 該證件號碼可以注冊,輸入正確</font>");}}});return true;}} } // 所在地區(qū) function checkjbSourceArea() {var jbSourceArea = document.form1.jbSourceArea.value;if (trim(jbSourceArea) == "") {document.getElementById("jbSourceAreaTip").innerHTML = "<font color='red'>× 請選擇所在地區(qū)</font>";return false;} else {document.getElementById("jbSourceAreaTip").innerHTML = "<font color='#339933'>√ 所在地區(qū)選擇正確</font>";return true;} } // 驗(yàn)證碼 function checkNumber() {var checkNum = document.form1.checkNum.value;if (trim(checkNum) == "") {document.getElementById("checkNumTip").innerHTML = "<font color='red'>× 驗(yàn)證碼不能為空</font>";return false;} else {document.getElementById("checkNumTip").innerHTML = "<font color='#339933'>√ 驗(yàn)證碼合格</font>";// 向后臺發(fā)送處理數(shù)據(jù)$.ajax({url : "UserAction_checkNum.action",// 目標(biāo)地址data : {checkNum : checkNum}, // 目標(biāo)參數(shù)type : "POST", // 用POST方式傳輸dataType : "text", // 數(shù)據(jù)格式:textsuccess : function(data) {data = parseInt(data, 10);if (data != 0) {$("#checkNumTip").html("<font color='red'>× 驗(yàn)證碼錯(cuò)誤</font>");} else {$("#checkNumTip").html("<font color='#339933'>√ 驗(yàn)證碼正確</font>");}}});return true;} }五、后臺action的代碼:UserAction.Java(這里只是調(diào)用了我們的第三方給提供的客戶端代碼的發(fā)送短信的方法,如果是調(diào)用其他的短信平臺,要換成他們的發(fā)送短信的方法)
package cn.gov.csrc.base.systemmanager.action;import java.io.IOException; import java.io.PrintWriter; import java.util.List;import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.springframework.context.annotation.Scope; import org.springframework.security.authentication.encoding.MessageDigestPasswordEncoder; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller;import cn.gov.csrc.base.action.BaseAction; import cn.gov.csrc.base.log.service.LogService; import cn.gov.csrc.base.report.util.CommonUtil; import cn.gov.csrc.base.report.util.Env; import cn.gov.csrc.base.systemmanager.model.Count; import cn.gov.csrc.base.systemmanager.model.User; import cn.gov.csrc.base.systemmanager.service.CountService; import cn.gov.csrc.base.systemmanager.service.UserService; import cn.gov.csrc.base.util.WebContextUtil;import com.sms.webservice.client.SmsReturnObj; import com.sms.webservice.client.SmsWebClient; /*** File: UserAction.java * Author: jiangsai * Version: 1.1 * Date: 04/17/2013 * Modify:* Description:用戶 * Copyright csrc*/ @Controller() @Scope("prototype") @Results({@Result(name = "success", location = "/statics/report.jsp"),@Result(name = "modifyPassword", location = "/statics/modifyPassword.jsp")}) public class UserAction extends BaseAction<User> {private static final long serialVersionUID = 1214696686677691191L;private static Logger log = Logger.getLogger(UserAction.class);private static final String url = Env.getInstance().getProperty("url");private static final String userName = Env.getInstance().getProperty("username");private static final String passWord = Env.getInstance().getProperty("password");private Integer id;private String username;// 用戶名private String password;// 密碼private String passwordRepeat;// 確認(rèn)密碼 private String jbPhone;//手機(jī)號碼 private String jbCredentialsCode;//身份證號碼 private String checkNum;//圖片驗(yàn)證碼private String newPassword;private String confirmPassword;private Integer[] ownRoleIds;private UserService userService;private CountService countService;private LogService logService;private Count count = new Count();public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getPasswordRepeat() {return passwordRepeat;}public void setPasswordRepeat(String passwordRepeat) {this.passwordRepeat = passwordRepeat;}public String getJbPhone() {return jbPhone;}public void setJbPhone(String jbPhone) {this.jbPhone = jbPhone;}public String getJbCredentialsCode() {return jbCredentialsCode;}public void setJbCredentialsCode(String jbCredentialsCode) {this.jbCredentialsCode = jbCredentialsCode;}public String getCheckNum() {return checkNum;}public void setCheckNum(String checkNum) {this.checkNum = checkNum;}public Integer[] getOwnRoleIds() {return ownRoleIds;}public void setOwnRoleIds(Integer[] ownRoleIds) {this.ownRoleIds = ownRoleIds;}public String getNewPassword() {return newPassword;}public void setNewPassword(String newPassword) {this.newPassword = newPassword;}public String getConfirmPassword() {return confirmPassword;}public void setConfirmPassword(String confirmPassword) {this.confirmPassword = confirmPassword;}@Resourcepublic void setUserService(UserService userService) {this.userService = userService;}public UserService getUserService() {return userService;}@Resourcepublic void setCountService(CountService countService) {this.countService = countService;}public CountService getCountService() {return countService;}public LogService getLogService() {return logService;}@Resourcepublic void setLogService(LogService logService) {this.logService = logService;}public Count getCount() {return count;}public void setCount(Count count) {this.count = count;}public void prepareToUpdatePage() {model = userService.getEntity(id);}/*** 用戶登錄* * @return success*/@Action(value = "UserAction_login")public String login() {Object u = SecurityContextHolder.getContext().getAuthentication().getPrincipal();if (u instanceof User && u != null) {WebContextUtil.getSession().setAttribute("user", u);User user = (User)u;//使用數(shù)據(jù)庫表TBL_BASE_LOG添加用戶登錄的日志信息logService.saveTblBaseLog(WebContextUtil.getRequest(),"當(dāng)前操作人【"+user.getNickname()+"】登錄系統(tǒng)");} else {// 防止繞過登陸頁面直接執(zhí)行Actionreturn "login";}return SUCCESS;}/*** 用戶密碼更新*/@Action(value = "UserAction_updateUser")public String updateUser() {if (!newPassword.equals(confirmPassword)) {this.setMessage("新密碼與確認(rèn)密碼不一致!");return "modifyPassword";}User u = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();MessageDigestPasswordEncoder encoder = new MessageDigestPasswordEncoder("md5");String psw = encoder.encodePassword(newPassword, null);userService.modifyPassword(u, psw);this.setMessage("保存成功!");return "modifyPassword";}/*** 驗(yàn)證用戶名是否存在* * @throws Exception*/@Action(value = "UserAction_checkUserName")public void checkUserName(){String result = "0";try {List<User> list = userService.findUserByUserName(username);if(list != null && list.size() > 0){result = "1";}else{result = "0";}HttpServletResponse response = WebContextUtil.getResponse();response.setContentType("application/json;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");PrintWriter out = response.getWriter();out.write(result.toString());} catch (IOException e) {throw new RuntimeException("驗(yàn)證身份證號碼出錯(cuò)", e);}}/*** 驗(yàn)證原始密碼是否正確* * @throws Exception*/@Action(value = "UserAction_checkPassWord")public void checkPassWord() throws Exception {String result = "0";MessageDigestPasswordEncoder encoder = new MessageDigestPasswordEncoder("md5");String pwd = encoder.encodePassword(password, null);List<User> user = userService.findUserByPassWord(pwd);if (user != null && user.size() > 0) {result = "1";}else{result = "0";}HttpServletResponse response = WebContextUtil.getResponse();response.setContentType("application/json;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");PrintWriter out = response.getWriter();out.write(result.toString());}/*** 驗(yàn)證手機(jī)號碼是否存在*/@Action(value = "UserAction_checkPhone")public void checkPhone(){String result = "0";try {List<User> list = userService.findUserByPhone(jbPhone);if(list != null && list.size() > 0){result = "1";}else{result = "0";}HttpServletResponse response = WebContextUtil.getResponse();response.setContentType("application/json;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");PrintWriter out = response.getWriter();out.write(result.toString());} catch (IOException e) {throw new RuntimeException("驗(yàn)證手機(jī)號碼出錯(cuò)", e);}}/*** 驗(yàn)證身份證號碼是否存在*/@Action(value = "UserAction_checkCredentialsCode")public void checkCredentialsCode(){String result = "0";try {List<User> list = userService.findUserByCredentialsCode(jbCredentialsCode);if(list != null && list.size() > 0){result = "1";}else{result = "0";}HttpServletResponse response = WebContextUtil.getResponse();response.setContentType("application/json;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");PrintWriter out = response.getWriter();out.write(result.toString());} catch (IOException e) {throw new RuntimeException("驗(yàn)證身份證號碼出錯(cuò)", e);}}/*** 驗(yàn)證驗(yàn)證碼是否正確*/@Action(value = "UserAction_checkNum")public void checkNum(){try {String result = "0";String check_number_key = (String)WebContextUtil.getSession().getAttribute("CHECK_NUMBER_KEY");if(checkNum != check_number_key && !checkNum.equals(check_number_key)){result = "1";}else{result = "0";}HttpServletResponse response = WebContextUtil.getResponse();response.setContentType("application/json;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");PrintWriter out = response.getWriter();out.write(result.toString());} catch (IOException e) {throw new RuntimeException("驗(yàn)證驗(yàn)證碼出錯(cuò)", e);}}/*** 驗(yàn)證短信驗(yàn)證碼是否正確* * @throws Exception*/@Action(value = "UserAction_checkCode")public void checkCode() throws Exception{String result = "0";/** 獲取手動(dòng)輸入的手機(jī)短信驗(yàn)證碼 */String SmsCheckCode = WebContextUtil.getRequest().getParameter("SmsCheckCode");/** 獲取session中存放的手機(jī)短信驗(yàn)證碼 */String code = (String) WebContextUtil.getSession().getAttribute("code");try {if(SmsCheckCode != code && !SmsCheckCode.equals(code)){result = "0";}else{result = "1";}} catch (Exception e) {throw new RuntimeException("短信驗(yàn)證失敗", e);}HttpServletResponse response = WebContextUtil.getResponse();response.setContentType("application/json;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");PrintWriter out = response.getWriter();out.write(result.toString());}/*** 驗(yàn)證手機(jī)短信是否發(fā)送成功* * @throws Exception*/@Action(value = "UserAction_sms")public void sms() throws Exception {String result = "0";/** 手機(jī)號碼 */String jbPhone = WebContextUtil.getRequest().getParameter("jbPhone");/** 短信驗(yàn)證碼 */String code = WebContextUtil.getRequest().getParameter("code");/** 短信驗(yàn)證碼存入session(session的默認(rèn)失效時(shí)間30分鐘) */WebContextUtil.getSession().setAttribute("code", code);/** 如何初始化失敗返回 */if(!initClient()) {return;}/** 單個(gè)手機(jī)號發(fā)送短信的方法的參數(shù)準(zhǔn)備 */// 手機(jī)號碼String mobilephone = jbPhone;// 短信內(nèi)容+隨機(jī)生成的6位短信驗(yàn)證碼String content = "根據(jù)中國證監(jiān)會舉報(bào)中心委托,特向您發(fā)送此條短信。您的注冊驗(yàn)證碼為:" + code;// 操作用戶的IDInteger operId = Integer.parseInt(Env.getInstance().getProperty("operId"));// 定時(shí)發(fā)送的的發(fā)送時(shí)間(缺省為空,如果即時(shí)發(fā)送,填空)String tosend_time = "";// 應(yīng)用系統(tǒng)的短信ID,用戶查詢該短信的狀態(tài)報(bào)告(缺省為0,即不需查詢短信的狀態(tài)報(bào)告)int sms_id = 0;// 黑名單過濾(0:不需要黑名單過濾,1:需要黑名單過濾,缺省為0)short backlist_filter = 0;// 禁止語過濾(0:不需要禁止語過濾,1:需要禁止語過濾,缺省為0)short fbdword_filter = 0;// 優(yōu)先級(值越大優(yōu)先級越高,0:普通,1,:優(yōu)先,2:最高,缺省為0)short priority = 0;// 短信有效時(shí)間(格式為:YYYY-MM-DD HH:mm:ss目前為空)String valid_time = "";/** 發(fā)送短信之前先統(tǒng)計(jì)一個(gè)已經(jīng)發(fā)送的短信條數(shù) */int messageCount = countService.findAllRecord(mobilephone);log.info("已發(fā)短信條數(shù)為:" +messageCount);if(messageCount < 5){/** 單個(gè)手機(jī)號發(fā)送短信 */if (!sendMessage(mobilephone, content, operId, tosend_time, sms_id,backlist_filter, fbdword_filter, priority, valid_time)) {result = "0";// 失敗} else {result = "1";// 成功/** 發(fā)送一條短信,記錄一條短信記錄,為了方便之后的統(tǒng)計(jì)短信發(fā)送次數(shù) */count.setPhone(mobilephone);// 手機(jī)號碼count.setCaptcha(code);// 短信驗(yàn)證碼count.setSendTime(CommonUtil.getNowDate());// 短信發(fā)送時(shí)間if(count != null){countService.saveEntity(count);log.info("短信驗(yàn)證碼發(fā)送記錄保存成功!");}}}else{result = "2";//一個(gè)手機(jī)號碼最多發(fā)送5條短信驗(yàn)證碼log.info("該手機(jī)號碼今天發(fā)送驗(yàn)證碼過多");}HttpServletResponse response = WebContextUtil.getResponse();response.setContentType("application/json;charset=UTF-8");response.setHeader("Cache-Control", "no-cache");PrintWriter out = response.getWriter();out.write(result.toString());}/*** WebService客戶端初始化* */public static boolean initClient() {/*** 判斷客戶端是否已經(jīng)初始化*/if (!SmsWebClient.enable()) {int ret = 0;try {ret = SmsWebClient.init(url, userName, passWord);if (ret == -1 || !SmsWebClient.enable()) {log.info("短信平臺接口初始化失敗!");return false;}log.info("短信平臺接口初始化成功!" + ret + "-----");} catch (Exception ex) {ex.printStackTrace();log.info("短信平臺接口初始化過程中異常!");}}return true;}/*** 單個(gè)手機(jī)號碼發(fā)送* * @param mobilephone* 手機(jī)號* @param content* 短信內(nèi)容* @param operId* 操作用戶的ID* @param tosend_time* 定時(shí)發(fā)送的發(fā)送時(shí)間* @param sms_id* 應(yīng)用系統(tǒng)的短信ID* @param backlist_filter* 黑名單過濾* @param fbdword_filter* 禁止語過濾* @param priority* 優(yōu)先級* @param valid_time* 短信有效時(shí)間*/public static boolean sendMessage(java.lang.String mobilephone,java.lang.String content, int operId, java.lang.String tosend_time,int sms_id, short backlist_filter, short fbdword_filter,short priority, java.lang.String valid_time) {// 單個(gè)手機(jī)號碼發(fā)送try {SmsReturnObj retObj = SmsWebClient.webSendMessage(mobilephone,content, operId, tosend_time, sms_id, backlist_filter,fbdword_filter, priority, valid_time);if (retObj.getReturnCode() != 1) {log.info("短信發(fā)送失敗,原因?yàn)?#xff1a;" + retObj.getReturnMsg());return false;} else {log.info("短信發(fā)送成功!返回結(jié)果為:" + retObj.getReturnMsg());return true;}} catch (Exception ex) {ex.printStackTrace();log.info("短信發(fā)送過程發(fā)生異常!");}return true;}}六、具體的短信接口demo到這里下,這里你下載了也不能成功的發(fā)送短信,因?yàn)槟惚仨氁绦牌脚_商給你提供:url,userName,passWord,operId,以及短信平臺商還要綁定你的外網(wǎng)ip地址,這樣才能真正的發(fā)送短信。
Demo下載鏈接:?http://pan.baidu.com/s/1qWt1Qdm
轉(zhuǎn)載于:https://my.oschina.net/lmoon/blog/1477175
總結(jié)
以上是生活随笔為你收集整理的Java调用WebService接口实现发送手机短信验证码功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java实现Zip文件解压
- 下一篇: 枚举—C#基础回顾