`
sxdtzhaoxinguo
  • 浏览: 229791 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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">
<link
	href="<%=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;" 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"/>确认密码:</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%">联系地址:</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;" 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"/>短信验证码:</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="免费获取验证码" 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"/>所在地区:</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"/>验证码:</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="点击换一张" 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", // 数据格式:JSON
				url: "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", // 数据格式:text
			success : 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", // 数据格式:text
				success : 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", // 数据格式:text
				success : 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", // 数据格式:text
			success : 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;
	}

	@Resource
	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public UserService getUserService() {
		return userService;
	}

	@Resource
	public void setCountService(CountService countService) {
		this.countService = countService;
	}

	public CountService getCountService() {
		return countService;
	}
	
	public LogService getLogService() {
		return logService;
	}

	@Resource
	public 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 {
			// 防止绕过登陆页面直接执行Action
			return "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;
		// 操作用户的ID
		Integer 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



分享到:
评论

相关推荐

    JAVA调用WEBSERVICE接口

    JAVA调用WEBSERVICE接口

    java使用XFire调用webService接口

    "Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...

    java调用webservice接口案例,service调用webservice接口

    java调用webservice接口案例,精简,service调用webservice接口案例;不用生成一堆代码,逻辑清晰

    java调用webservice接口方法

    Java调用WebService接口方法是Java开发中常见的任务,尤其在分布式系统和跨平台通信中扮演着重要角色。这里我们主要探讨使用Apache Axis库来实现这一功能。Apache Axis是一款开源工具,它提供了Java到SOAP(简单对象...

    Java Axis 直接调用webservice 接口工具类

    Java Axis 直接调用webservice 接口工具类, 无需根据wsdl编译客户端,需要axis相关包,测试使用axis 1.4, 附demo引入axis包后直接可以测试;

    java调用webservice接口方法.rar

    Java调用WebService接口是Web应用程序开发中的常见任务,主要用于实现不同系统间的远程通信和数据交换。在本资料中,我们重点关注Java如何与基于SOAP(Simple Object Access Protocol)的WebService进行交互。 1. *...

    java调用webservice接口.zip

    本教程将深入探讨如何使用Axis库来实现在Java中调用WebService接口。Axis是一个开源的Java SOAP栈,它提供了从Java代码中创建和消费Web服务的能力。 **一、什么是WebService?** WebService是一种基于XML的协议,它...

    java调用json参数的webservice

    为了使得Java客户端能够调用WebService服务,需要使用一些工具,例如JAX-WS(Java API for XML Web Services),它是Java SE的一部分,用于创建WebService客户端和服务端。 综上所述,通过Java调用带有JSON参数的...

    httpClient调用webservice接口

    ### 使用HttpClient调用WebService接口详解 #### 一、概述 在现代软件开发中,Web服务(尤其是WebService)作为实现系统间交互的一种重要手段被广泛采用。WebService提供了通过HTTP协议进行远程过程调用的能力,...

    Java中如何通过https调用Webservice接口_测试环境.rar

    在Java开发中,HTTPS(Hypertext Transfer Protocol Secure)调用Web Service接口是常见的网络通信方式,主要用于确保数据传输的安全性。本主题将详细讲解如何在Java环境下通过HTTPS协议来安全地调用Web Service接口...

    Java调用WebService接口的方法

    本文将深入探讨如何使用Java调用WebService接口,以实例分析有参方法Add的使用技巧。 首先,我们需要了解WebService的基础知识。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的Web应用程序,它能够通过HTTP...

    java调用webservice.zip

    java调用webservicejava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava...

    JAVA调用Webservice接口Demo

    本示例,"JAVA调用Webservice接口Demo",将向我们展示如何利用Java来与Webservice进行交互,主要包含两个功能:IP查询和根据省份查找城市。这个项目可以直接运行,方便开发者快速理解并应用到实际项目中。 首先,...

    Java使用XFire调用WebService接口

    这篇博客“Java使用XFire调用WebService接口”显然是讨论如何利用XFire这个开源框架来与Web服务交互。 XFire是Apache CXF项目的前身,它提供了一种简单的方式来创建和消费SOAP Web服务。XFire的强项在于其轻量级和...

    JAVA调用webservice并解析xml

    总结,调用Java中的Web服务并解析XML涉及到了Web服务的基础概念、Java的Web服务客户端创建、XML解析技术以及实际的调用与响应处理。熟练掌握这些知识点,能够帮助开发者有效地集成和利用各种Web服务资源。

    java调用C++ webservice

    本话题主要探讨如何使用Java调用由C++实现的Web服务(Webservice)。在给出的描述中,提到了通过WSDL(Web Services Description Language)文件来实现这一目标。以下是关于这个主题的详细知识点: 1. **Web服务...

    C#调用JavaWebService

    调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...

    java 调用webservice的几种方法总结

    "Java 调用 Webservice 的几种方法总结" Java 调用 Webservice 的几种方法总结中,主要介绍了使用 JDK Web 服务 API、Axis 和 XFire 等方法来调用 Webservice。下面将对每种方法进行详细的介绍。 使用 JDK Web ...

    java 调用 webService工具类

    下面我们将详细探讨Java调用WebService的相关知识点。 1. **WebService概念**: WebService是一种基于互联网的、平台无关的应用程序接口,它允许不同系统之间通过标准协议进行通信。常见的WebService协议有SOAP...

    nodejs和Java调用webservice接口总结.docx

    ### Node.js 和 Java 调用 WebService 接口总结 #### 一、Java 实现方式 在 Java 中,调用 WebService 接口通常涉及使用 Apache CXF 或其他类似的库来生成客户端代码并进行调用。以下是具体的步骤: ##### 1. ...

Global site tag (gtag.js) - Google Analytics