为什么80%的码农都做不了架构师?>>>   

一、样式示例:

二、前台的注册页面的代码: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="data: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="data: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="data: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="data: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="data: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="data: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="data: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="data: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="data: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="data: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

<%@ 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="data: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="data: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="data: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="data: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="data: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="data: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="data: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="data: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="data: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="data: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: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

转载于:https://my.oschina.net/lmoon/blog/1477175

Java调用WebService接口实现发送手机短信验证码功能相关推荐

  1. Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用...

    近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...

  2. java调接口实现发送手机短信验证码功能,手机验证码,接口调用

    原文地址:  http://blog.csdn.net/sxdtzhaoxinguo/article/details/34437591 近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用 ...

  3. 实现发送手机短信验证码功能

    Java调用WebService接口 http://w    ww.zuidaima.com/share/1881657001233408.htm 转载于:https://www.cnblogs.co ...

  4. Java 后台实现 发送手机短信的功能(中国网建)

    Java 后台实现 发送手机短信的功能(中国网建) 效果截图: 一.准备阶段 (1)准备第三方平台: 发送短信肯定是需要第三方平台,并且是收费的. 本篇以[中国网建]提供的 SMS 短信平台实现,该平 ...

  5. 发送手机短信验证码-后端、前端(验证码倒计时)

    获取手机短信验证码-后端.前端(验证码倒计时) 后端 /*** 发送手机短信验证码** @return str* @throws Exception* @author 王永圣*/@RequestMap ...

  6. 【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)

    发送手机短信验证码 前言 一. 准备工作 二. 配置 三. 实战代码(仅仅是后台代码,前端传入手机号) 总结 前言 在网站和移动应用中利用短信验证码进行信息确认是最常用的验证手段.随着短信验证码的技术 ...

  7. 阿里云——Java实现手机短信验证码功能

    目录 如何实现短信验证码功能 1.准备工作 1.1 注册 阿里云 账号,并完成实名认证.找到短信服务功能. 1.2 开通短信服务 1.3 签名与模板 1.4 获取AccessKey 1.5 打开短信控 ...

  8. 如何发送手机短信验证码

    文章目录 阿里云短信业务实战教程 1.阿里云平台的使用 2.创建用户组及用户并添加权限 3.添加短信签名和短信模板并充值费用 4.开发工具进行代码部分(这里使用IDEA) 阿里云短信业务实战教程 手机 ...

  9. 使用 SSM 框架实现发送手机短信验证码

    手机发送短信 内容 一.手机发送短信 1. 前端界面代码 2. UserInfoController 控制器 4. 具体实现 总结 内容 一.手机发送短信 1. 前端界面代码 10秒内不能重复发送验证 ...

最新文章

  1. 2017-2018-2 20165236 实验四《Android开发基础》实验报告
  2. Spring使用注解配置依赖注入
  3. 有关数组的运算 (sizeof)(strlen)
  4. msyql show命令(转)
  5. java核心面试_不正确的核心Java面试答案
  6. MAC OS X 10.9.X下用命令行开启SSD trim的方法汇总
  7. C++多线程的简单例子
  8. 176条DevOps人员常用的Linux命令速查表
  9. java类型占用字节数类型转换
  10. 【学堂在线数据挖掘:理论方法笔记】第七天(4.1)
  11. Picnic Planning
  12. 高仿墨迹天气下拉拉伸图片
  13. POS机交易支付知识点整理
  14. C语言删除注册表某个键值,win7系统批量快速删除注册表中指定的某个键值的操作方法...
  15. 戴戒指的含义(以后要结婚的必看)
  16. Dedecms去掉所有版权
  17. Tilera发布首款100核心CPU TLE-Gx100
  18. 细数AJAX应用程序开发的七宗罪
  19. Ubuntu 微信 linux版最新可用——UOS魔改版
  20. zemax---Tangential plane, meridian plane and sagittal plane(切线面,子午面与弧矢面)(完结)

热门文章

  1. UA MATH567 高维统计IV Lipschitz组合11 社区发现 Spectral Clustering容许的最大随机噪声
  2. 图解Oracle用户管理
  3. IOS树视图学习总结
  4. FZU-2218 Simple String Problem(状态压缩DP)
  5. jfinal配置rails的数据表
  6. 在Sqlserver下巧用行列转换日期的数据统计
  7. C# 仿金山毒霸启动和关闭淡入淡出效果
  8. [VB] Option Explicit
  9. silverlight turntable
  10. python实现手机通讯录_python+uiautomator2实现需求:从通讯录添加手机号码作为SOS紧急号码...