Java調用WebService接口實現發送手機短信驗證碼功能,java 手機驗證碼,WebService接口調用...

近來由于項目需要,需要用到手機短信驗證碼的功能,其中最主要的是用到了第三方提供的短信平臺接口WebService客戶端接口,下面我把我在項目中用到的記錄一下,以便給大家提供個思路,由于本人的文采有限,還請大家見諒!

一:首先上幾張案例截圖,以便大家可以了解一下短信驗證碼的流程,這里我在做的過程中也參考了很多網站的短信驗證碼,比如:58同城,汽車之家等。

1.點擊獲取驗證碼之前的樣式:


2.輸入正確的手機號后點擊獲取驗證碼之后的樣式:


3.如果手機號已經被注冊的樣式:


4.如果一個手機號一天發送超過3次就提示不能發送:


二:前臺的注冊頁面的代碼: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>中國證券會證券期貨違法違規舉報中心-注冊</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">當前位置:</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">舉報人基本信息</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;" οnblur="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;" οnblur="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"/>確認密碼:</td><td align="center" width="40%"><s:password name="passwordRepeat" id="passwordRepeat" cssStyle="width:160px;height:24px;" οnblur="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;" οnblur="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%">聯系地址:</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"/>聯系手機:</td><td align="center" width="40%"><s:textfield id="jbPhone" name="jbPhone" cssStyle="width:160px;height:24px;" οnblur="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"/>短信驗證碼:</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="免費獲取驗證碼" οnclick="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" οnchange="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;" οnblur="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"/>所在地區:</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" οnblur="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"/>驗證碼:</td><td align="center" width="40%"><s:textfield id="checkNum" name="checkNum" cssStyle="width:60px;height:24px;" οnblur="checkNumber()" maxLength="4"/><img id="checkNumImage" src="${pageContext.request.contextPath}/image.jsp"><a onClick="changeCheckNum()" title="點擊換一張" 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>

三:前臺獲取短信驗證碼的js:sms.js

var InterValObj; //timer變量,控制時間
var count = 120; //間隔函數,1秒執行
var curCount;//當前剩余秒數
var code = ""; //驗證碼
var codeLength = 6;//驗證碼長度function sendMessage() {curCount = count;var jbPhone = $("#jbPhone").val();var jbPhoneTip = $("#jbPhoneTip").text();if (jbPhone != "") {if(jbPhoneTip == "√ 該手機號碼可以注冊,輸入正確" || jbPhoneTip == "√ 短信驗證碼已發到您的手機,請查收"){// 產生驗證碼for ( var i = 0; i < codeLength; i++) {code += parseInt(Math.random() * 9).toString();}// 設置button效果,開始計時$("#btnSendCode").attr("disabled", "true");$("#btnSendCode").val("請在" + curCount + "秒內輸入驗證碼");InterValObj = window.setInterval(SetRemainTime, 1000); // 啟動計時器,1秒執行一次// 向后臺發送處理數據$.ajax({type: "POST", // 用POST方式傳輸dataType: "text", // 數據格式:JSONurl: "UserAction_sms.action", // 目標地址data: "jbPhone=" + jbPhone +"&code=" + code,error: function (XMLHttpRequest, textStatus, errorThrown) { },success: function (data){ data = parseInt(data, 10);if(data == 1){$("#jbPhoneTip").html("<font color='#339933'>√ 短信驗證碼已發到您的手機,請查收</font>");}else if(data == 0){$("#jbPhoneTip").html("<font color='red'>× 短信驗證碼發送失敗,請重新發送</font>");}else if(data == 2){$("#jbPhoneTip").html("<font color='red'>× 該手機號碼今天發送驗證碼過多</font>");}}});}}else{$("#jbPhoneTip").html("<font color='red'>× 手機號碼不能為空</font>");}
}//timer處理函數
function SetRemainTime() {if (curCount == 0) {                window.clearInterval(InterValObj);// 停止計時器$("#btnSendCode").removeAttr("disabled");// 啟用按鈕$("#btnSendCode").val("重新發送驗證碼");code = ""; // 清除驗證碼。如果不清除,過時間后,輸入收到的驗證碼依然有效}else {curCount--;$("#btnSendCode").val("請在" + curCount + "秒內輸入驗證碼");}
}$(document).ready(function() {$("#SmsCheckCode").blur(function() {var SmsCheckCodeVal = $("#SmsCheckCode").val();// 向后臺發送處理數據$.ajax({url : "UserAction_checkCode.action", data : {SmsCheckCode : SmsCheckCodeVal}, type : "POST", dataType : "text", success : function(data) {data = parseInt(data, 10);if (data == 1) {$("#SmsCheckCodeTip").html("<font color='#339933'>√ 短信驗證碼正確,請繼續</font>");} else {$("#SmsCheckCodeTip").html("<font color='red'>× 短信驗證碼有誤,請核實后重新填寫</font>");}}});});
});


四:驗證碼用戶名和手機號碼的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'>× 首字母不能為數字或者用戶名不能為空</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>";// 向后臺發送處理數據$.ajax({url : "UserAction_checkUserName.action",// 目標地址data : {username : username}, // 目標參數type : "POST", // 用POST方式傳輸dataType : "text", // 數據格式:textsuccess : function(data) {data = parseInt(data, 10);if (data != 0) {$("#usernameTip").html("<font color='red'>× 該用戶名已經被注冊,請重新輸入</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'>× 密碼不能全是數字</font>";return false;} else {document.getElementById("passwordTip").innerHTML = "<font color='#339933'>√ 密碼合格</font>";return true;}
}
// 確認密碼
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;}
}
// 聯系手機(ajax驗證手機號碼是否已經存在)
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'>× 手機號碼不能為空</font>";return false;} else if(trim(jbPhone) != ""){if(!re.test(jbPhone)){document.getElementById("jbPhoneTip").innerHTML = "<font color='red'>× 請輸入有效的手機號碼</font>";return false;}else{document.getElementById("jbPhoneTip").innerHTML = "<font color='#339933'>√ 手機號碼輸入正確</font>";// 向后臺發送處理數據$.ajax({url : "UserAction_checkPhone.action",// 目標地址data : {jbPhone : jbPhone}, // 目標參數type : "POST", // 用POST方式傳輸dataType : "text", // 數據格式:textsuccess : function(data) {data = parseInt(data, 10);if (data != 0) {$("#jbPhoneTip").html("<font color='red'>× 該手機號碼已經被注冊,請重新輸入</font>");} else {$("#jbPhoneTip").html("<font color='#339933'>√ 該手機號碼可以注冊,輸入正確</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>";// 向后臺發送處理數據$.ajax({url : "UserAction_checkCredentialsCode.action",// 目標地址data : {jbCredentialsCode : jbCredentialsCode}, // 目標參數type : "POST", // 用POST方式傳輸dataType : "text", // 數據格式:textsuccess : function(data) {data = parseInt(data, 10);if (data != 0) {$("#jbCredentialsCodeTip").html("<font color='red'>× 該證件號碼已經被注冊,請重新輸入</font>");} else {$("#jbCredentialsCodeTip").html("<font color='#339933'>√ 該證件號碼可以注冊,輸入正確</font>");}}});return true;}}
}
// 所在地區
function checkjbSourceArea() {var jbSourceArea = document.form1.jbSourceArea.value;if (trim(jbSourceArea) == "") {document.getElementById("jbSourceAreaTip").innerHTML = "<font color='red'>× 請選擇所在地區</font>";return false;} else {document.getElementById("jbSourceAreaTip").innerHTML = "<font color='#339933'>√ 所在地區選擇正確</font>";return true;}
}
// 驗證碼
function checkNumber() {var checkNum = document.form1.checkNum.value;if (trim(checkNum) == "") {document.getElementById("checkNumTip").innerHTML = "<font color='red'>× 驗證碼不能為空</font>";return false;} else {document.getElementById("checkNumTip").innerHTML = "<font color='#339933'>√ 驗證碼合格</font>";// 向后臺發送處理數據$.ajax({url : "UserAction_checkNum.action",// 目標地址data : {checkNum : checkNum}, // 目標參數type : "POST", // 用POST方式傳輸dataType : "text", // 數據格式:textsuccess : function(data) {data = parseInt(data, 10);if (data != 0) {$("#checkNumTip").html("<font color='red'>× 驗證碼錯誤</font>");} else {$("#checkNumTip").html("<font color='#339933'>√ 驗證碼正確</font>");}}});return true;}
}


五:后臺action的代碼:UserAction.java(這里只是調用了我們的第三方給提供的客戶端代碼的發送短信的方法,如果是調用其他的短信平臺,可以換成他們的發送短信的方法,這里只是給大家做個參考)

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;// 確認密碼private String jbPhone;//手機號碼private String jbCredentialsCode;//身份證號碼private String checkNum;//圖片驗證碼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;//使用數據庫表TBL_BASE_LOG添加用戶登錄的日志信息logService.saveTblBaseLog(WebContextUtil.getRequest(),"當前操作人【"+user.getNickname()+"】登錄系統");} else {// 防止繞過登陸頁面直接執行Actionreturn "login";}return SUCCESS;}/*** 用戶密碼更新*/@Action(value = "UserAction_updateUser")public String updateUser() {if (!newPassword.equals(confirmPassword)) {this.setMessage("新密碼與確認密碼不一致!");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";}/*** 驗證用戶名是否存在* * @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("驗證身份證號碼出錯", e);}}/*** 驗證原始密碼是否正確* * @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());}/*** 驗證手機號碼是否存在*/@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("驗證手機號碼出錯", e);}}/*** 驗證身份證號碼是否存在*/@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("驗證身份證號碼出錯", e);}}/*** 驗證驗證碼是否正確*/@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("驗證驗證碼出錯", e);}}/*** 驗證短信驗證碼是否正確* * @throws Exception*/@Action(value = "UserAction_checkCode")public void checkCode() throws Exception{String result = "0";/** 獲取手動輸入的手機短信驗證碼 */String SmsCheckCode = WebContextUtil.getRequest().getParameter("SmsCheckCode");/** 獲取session中存放的手機短信驗證碼 */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("短信驗證失敗", 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());}/*** 驗證手機短信是否發送成功* * @throws Exception*/@Action(value = "UserAction_sms")public void sms() throws Exception {String result = "0";/** 手機號碼 */String jbPhone = WebContextUtil.getRequest().getParameter("jbPhone");/** 短信驗證碼 */String code = WebContextUtil.getRequest().getParameter("code");/** 短信驗證碼存入session(session的默認失效時間30分鐘) */WebContextUtil.getSession().setAttribute("code", code);/** 如何初始化失敗返回 */if(!initClient()) {return;}/** 單個手機號發送短信的方法的參數準備 */// 手機號碼String mobilephone = jbPhone;// 短信內容+隨機生成的6位短信驗證碼String content = "根據中國證監會舉報中心委托,特向您發送此條短信。您的注冊驗證碼為:" + code;// 操作用戶的IDInteger operId = Integer.parseInt(Env.getInstance().getProperty("operId"));// 定時發送的的發送時間(缺省為空,如果即時發送,填空)String tosend_time = "";// 應用系統的短信ID,用戶查詢該短信的狀態報告(缺省為0,即不需查詢短信的狀態報告)int sms_id = 0;// 黑名單過濾(0:不需要黑名單過濾,1:需要黑名單過濾,缺省為0)short backlist_filter = 0;// 禁止語過濾(0:不需要禁止語過濾,1:需要禁止語過濾,缺省為0)short fbdword_filter = 0;// 優先級(值越大優先級越高,0:普通,1,:優先,2:最高,缺省為0)short priority = 0;// 短信有效時間(格式為:YYYY-MM-DD HH:mm:ss目前為空)String valid_time = "";/** 發送短信之前先統計一個已經發送的短信條數 */int messageCount = countService.findAllRecord(mobilephone);log.info("已發短信條數為:" +messageCount);if(messageCount < 5){/** 單個手機號發送短信 */if (!sendMessage(mobilephone, content, operId, tosend_time, sms_id,backlist_filter, fbdword_filter, priority, valid_time)) {result = "0";// 失敗} else {result = "1";// 成功/** 發送一條短信,記錄一條短信記錄,為了方便之后的統計短信發送次數 */count.setPhone(mobilephone);// 手機號碼count.setCaptcha(code);// 短信驗證碼count.setSendTime(CommonUtil.getNowDate());// 短信發送時間if(count != null){countService.saveEntity(count);log.info("短信驗證碼發送記錄保存成功!");}}}else{result = "2";//一個手機號碼最多發送5條短信驗證碼log.info("該手機號碼今天發送驗證碼過多");}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() {/*** 判斷客戶端是否已經初始化*/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;}/*** 單個手機號碼發送* * @param mobilephone*            手機號* @param content*            短信內容* @param operId*            操作用戶的ID* @param tosend_time*            定時發送的發送時間* @param sms_id*            應用系統的短信ID* @param backlist_filter*            黑名單過濾* @param fbdword_filter*            禁止語過濾* @param priority*            優先級* @param valid_time*            短信有效時間*/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) {// 單個手機號碼發送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("短信發送失敗,原因為:" + retObj.getReturnMsg());return false;} else {log.info("短信發送成功!返回結果為:" + retObj.getReturnMsg());return true;}} catch (Exception ex) {ex.printStackTrace();log.info("短信發送過程發生異常!");}return true;}}


六:具體的短信接口demo到這里下,這里你下載了也不能成功的發送短信,因為你必須要短信平臺商給你提供:url,userName,passWord,operId,以及短信平臺商還要綁定你的外網ip地址,這樣才能真正的發送短信。

Demo下載鏈接:http://pan.baidu.com/s/1qWt1Qdm


原文:http://www.zuidaima.com/share/1881657001233408.htm



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443578.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443578.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443578.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java中的udp丟包_UDP丟包問題

wxbcrefut&#xff1a;謝謝樓主分享&#xff0c;最近也遇到這種問題&#xff0c;我在虛機里測試(配置為8核16G內存)&#xff0c;1s接受2W條數據丟包就特別嚴重&#xff0c;我還沒有處理只是接受而已&#xff0c;不知道問題出在哪&#xff0c;求指教我是用java寫的&#xff0c;代…

java人體識別_用華為HMS ML kit人體骨骼識別技術,Android快速實現人體姿勢動作抓拍...

items results.getAnalyseList();// 開發者根據需要處理識別結果&#xff0c;例如&#xff0c;在此方法中進行相似度計算&#xff0c;從而在檢測到特定姿勢后進行拍照等操作。// 需要注意&#xff0c;這里只對檢測結果進行處理&#xff0c;不可調用ML Kit提供的其他檢測相關接…

java中select的用法_mybaties中select用法,以及常用增刪改查

查詢語句是使用 MyBatis 時最常用的元素之一select元素配置細節如下屬性描述取值默認id在這個模式下唯一的標識符&#xff0c;可被其它語句引用parameterType傳給此語句的參數的完整類名或別名resultType語句返回值類型的整類名或別名。注意&#xff0c;如果是集合&#xff0c;…

jpa java.util.map_使用JPA存儲Map String,String

JPA 2.0通過ElementCollection注釋可以支持原語集合&#xff0c;您可以將其與java.util.Map集合支持一起使用。這樣的事情應該起作用&#xff1a;Entitypublic class Example {Id long id;// ....ElementCollectionMapKeyColumn(name"name")Column(name"value&q…

Js獲取短信驗證碼前段效果

一&#xff1a;先上效果圖&#xff1a; 二&#xff1a;源代碼文件&#xff1a;reg.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http:…

java簡述標識符和保留字區別_Java 基礎語法 - 流年似水莫停留的個人頁面 - OSCHINA - 中文開源技術交流社區...

Java 基礎語法一個Java程序可以認為是一系列對象的集合&#xff0c;而這些對象通過調用彼此的方法來協同工作。下面簡要介紹下類、對象、方法和實例變量的概念。對象&#xff1a;對象是類的一個實例&#xff0c;有狀態和行為。例如&#xff0c;一條狗是一個對象&#xff0c;它的…

java創建一副牌_用java怎么創建一副撲克牌

一張撲克牌有兩個屬性&#xff0c;一個是花色(suit)&#xff0c;一個是點數(rank)&#xff0c;下面寫一個簡單的類Cardpackage com.syz.card;import java.io.Serializable;public class Card implements Serializable{private static final long serialVersionUID -4279016186…

java使用三種循環打印99表_編程題:利用for循環打印 9*9 表

#利用for循環打印 9*9 表?1*111*22 2*241*33 2*36 3*391*44 2*48 3*412 4*4161*55 2*510 3*515 4*520 5*5251*66 2*612 3*618 4*624 5*630 6*6361*77 2*714 3*721 4*728 5*735 6*742 7*7491*88 2*816 3*824 4*832 5*840 6*848 7*856 8*8641*99 2*918 3*927 4*936 5*945 6*954 …

php轉化xml數組_PHP實現數組array轉換成xml的方法

本文實例講述了PHP實現數組array轉換成xml的方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;$elementLevel 0 ;function array_Xml($array, $keys ){global $elementLevel;if(!is_array($array)){if($keys ){return $array;}else{return "\n" . $arr…

Java得到請求的IP地址

/*** 得到請求的IP地址* * param request* return*/public static String getIp(HttpServletRequest request) {String ip request.getHeader("X-Real-IP");if (StringUtils.isBlank(ip)) {ip request.getHeader("Host");}if (StringUtils.isBlank(ip)) …

java拉丁正方形_LeetCode JAVA解題---824. 山羊拉丁文

LeetCode 題庫 全 JAVA 解題824. 山羊拉丁文原題回顧&#xff1a;給定一個由空格分割單詞的句子 S。每個單詞只包含大寫或小寫字母。我們要將句子轉換為 “Goat Latin”(一種類似于 豬拉丁文 - Pig Latin 的虛構語言)。山羊拉丁文的規則如下&#xff1a;如果單詞以元音開頭(a, …

opencv 濾鏡效果php,OpenCV實現馬賽克和毛玻璃濾鏡效果

本文為大家分享了OpenCV實現馬賽克和毛玻璃濾鏡的具體代碼&#xff0c;供大家參考&#xff0c;具體內容如下一、馬賽克效果馬賽克的實現原理是把圖像上某個像素點一定范圍鄰域內的所有點用鄰域內隨機選取的一個像素點的顏色代替&#xff0c;這樣可以模糊細節&#xff0c;但是可…

php 強制變為整數,強制PHP整數溢出

小編典典因此&#xff0c;我解決了這個問題&#xff0c;并發現了很多有關PHP的知識(至少在處理Integer溢出的方式方面)。1)它完全取決于機器在哪個平臺上運行&#xff0c;哪個版本的PHP&#xff0c;是否運行Suhosin HardenedPHP以及為多少(32或64)位編譯之間的交叉。6臺計算機的…

微信端php 開發技術要求,微信第三方平臺開發詳解——PHP版

申請第三方平臺&#xff0c;這個很簡單直接按照提示填寫&#xff0c;下面的授權事件接收URL中獲取的component_verify_ticket是會過期的&#xff0c;所以不要只獲取一次&#xff0c;緩存起來每10分鐘會發送一次&#xff0c;每1小時會更新一次。附上我的獲取component_verify_ti…

刷題神器怎么導入java,怎么導題庫_有沒有比較好的可以自己導入題庫進行模擬考試練習的軟件_淘題吧...

① 本人有一題庫&#xff0c;怎么把里面的試題全部導出題庫都加密了&#xff0c;沒有導出功能。只能固定抽題后&#xff0c;整理出來。② 在線考試系統題庫怎么導入數據庫優考試的考試系統導入題庫是用word和excel的模板去編輯試題&#xff0c;再進行導入③ 如何導出機考app題庫…

Java讀取指定目錄下的所有文件名

1.效果圖&#xff1a;在控制臺輸出所有的文件的文件名如下&#xff1a; 2.FileUtil.java: package cn.gov.csrc.base.report.util;import java.io.File; import java.util.ArrayList;public class FileUtil {/*** 獲取指定目錄下的所有文件名* * param obj* return*/public sta…

php min命令,php min函數怎么用?

php min函數用于返回一個數組中的最小值&#xff0c;或者幾個指定值中的最小值&#xff0c;其語法是min(array_values)&#xff0c;參數array_values必需&#xff0c;指規定一個包含值的數組。php min函數怎么用&#xff1f;定義和用法min() 函數返回一個數組中的最小值&#x…

java io加速器,Java 日期操作

測試代碼&#xff1a;Calendar calendar Calendar.getInstance();Date today new Date();calendar.setTime(today);calendar.add(Calendar.DATE, -1);Date yesterday calendar.getTime();calendar.add(Calendar.DATE, 2);Date tomorrow calendar.getTime();SimpleDateForma…

php協程和goroutine,淺談協程和Go語言的Goroutine

0x00.前言前面寫了一篇今天來學習Go語言的Goroutine機制&#xff0c;這也可能是Go語言最為吸引人的特性了&#xff0c;理解它對于掌握Go語言大有裨益&#xff0c;話不多說開始吧&#xff01;通過本文你將了解到以下內容&#xff1a;什么是協程以及橫向對比優勢Go語言的Goroutin…

Java連接mysql出現SQL異常,MySQL 這樣連接為何出現這樣的異常

當前位置:我的異常網 Java Web開發 MySQL 這樣連接為何出現這樣的異常MySQL 這樣連接為何出現這樣的異常www.myexceptions.net 網友分享于&#xff1a;2013-09-12 瀏覽&#xff1a;12次MySQL 這樣連接為何出現這樣的錯誤大家好&#xff0c;小弟初學JSP,在連接數據庫的時候遇…