SSH2框架实现注冊发短信验证码实例
这两天開始写程序了,让用SSH2框架,曾经没有接触过Java项目更没有接触过SSH2框架,所以用注冊開始了我Java之旅。后来发现,后台代码挺easy理解的,跟.net的差点儿相同。就是层与层之间的调用,可是前面前台的交互我差非常多,在这里总结一下,顺便跟大家看一下。怎么实现往手机上发送短信验证码的。。
大家先看看我的界面。
原图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
短信验证码错误的界面:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
短信验证码正确的界面:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
以下開始我的界面代码展示(JSP):
<body >
<h2 class="titlelog"><br></h2><h2 class="titlelog"><br></h2><h2 class="titlelog">学乐购</h2>
<p class="advertisement">专门为学生打造的站点</p>
<div id="panelname" style="margin-left: 500px;width: 800px;">
<div id="registername"><p class="userregister">用户注冊</p></div>
<form action="register_add.action" onsubmit="return clickregister()">
<div style="margin-bottom:20px">
<div>手机号码:</div>
<input class="easyui-textbox" id="telephonename" name="loginName" data-options="prompt:'请输入手机号',validType:'mobile'" style="width: 300px; height: 30px;"">
<input class="code" type="button" id="btnSendCode" onclick="sendMessage()" value="点击获取手机验证码" />
<span id="telephonenameTip"></span>
</div>
<div style="margin-bottom:20px">
<div>验证码:</div>
<input class="easyui-textbox" id="codename" style="width: 300px; height: 30px;">
<span id="codenameTip"></span>
</div>
<div style="margin-bottom:20px">
<div>密码:</div>
<input class="easyui-textbox" id="password" name="loginPassword" style="width: 300px; height: 30px;">
<span id="passwordTip"></span>
</div>
<div style="margin-bottom:20px">
<div>确认密码:</div>
<input class="easyui-textbox" id="passwordRepeat" style="width: 300px; height: 30px;" >
<span id="passwordRepeatTip"></span>
</div> <div class="readname">
<input id="checked" type="checkbox" onclick="arrgement()" checked="checked">
<span >我已阅读并允许<span class="servicename" id="aree">《学乐购站点服务协议》</span></span>
</div>
<div id="zhuce" class="loginname">
<input class="loginregister" id="loginregister" type="submit" value="注冊 " />
<a class="login">已有账号?去登陆</a>
</div>
</form>
</div>
</body>
Struts代码:
<!-- 注冊信息 -->
<action name="register_*" class="userRegisterAction" method="{1}">
<result name="test">WEB-INF/jsp/StoreManage/Register.jsp</result> </action>
JS代码展示:
//去掉前后空格
function trim(str) {
var strnew=str.replace(/^\s*|\s*$/g, "");
return strnew;
} //文本框失去焦点时验证 //密码不能为空
$(function(){
$("input",$("#password").next("span")).blur(function(){
var password = $("#password").val(); if(trim(password)==""){
document.getElementById("passwordTip").innerHTML="<font color='red'>× 密码不能为空</font>";
return false;
}else {
document.getElementById("passwordTip").innerHTML="<font color='#339933'>√</font>";
return true;
}
});
}) //确认密码
$(function(){
$("input",$("#passwordRepeat").next("span")).blur(function(){ var passwordrepeat=$("#passwordRepeat").val();
var password = $("#password").val(); if(trim(passwordrepeat)=="") {
document.getElementById("passwordRepeatTip").innerHTML="<font color='red'>× 确认密码不能为空 </font>";
return false;
}else 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(){
$("input",$("#telephonename").next("span")).blur(function(){ var phonename=$("#telephonename").val();
var re= /(^1[3|5|8][0-9]{9}$)/;
if (trim(phonename) == "") {
document.getElementById("telephonenameTip").innerHTML = "<font color='red'>× 手机号码不能为空</font>";
return false;
}else if(trim(phonename) != ""){
if(!re.test(phonename)){
document.getElementById("telephonenameTip").innerHTML = "<font color='red'>× 请输入有效的手机号码</font>";
return false;
}else{
document.getElementById("telephonenameTip").innerHTML = "<font color='red'></font>";
$.ajax({
url:"register_checkLoginname.action",
data:{phonename:phonename},
type:"POST",
dataType:"text",
success:function(data){
//alert(data);
//data = parseInt(data, 10);
if (data != 0) {
$("#telephonenameTip").html("<font color='red'>× 该手机号码已被注冊,请又一次输入</font>");
$("#loginregister").disabled=true;
return false;
}else {
$("#telephonenameTip").html("<font color='#339933'>√</font>");
}
}
}); return true;
} } });
}) //验证码
$(function(){
$("input",$("#codename").next("span")).blur(function(){
var coadename = $("#codename").val(); if(trim(coadename)==""){
document.getElementById("codenameTip").innerHTML="<font color='red'>× 验证码不能为空</font>";
return false;
}else {
document.getElementById("codenameTip").innerHTML=("<font color='#339933'>√</font>");
return true;
}
});
}) //短信验证码
var InterValObj; //timer变量,控制时间
var count = 60; //间隔函数,1秒运行
var curCount;//当前剩余秒数
var code = ""; //验证码
var codeLength = 6;//验证码长度 function sendMessage(){
curCount = count;
var jbPhone = $("#telephonename").val();
var jbPhoneTip = $("#telephonenameTip").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: "register_sms.action", // 目标地址
data: "jbPhone=" + jbPhone +"&code=" + code,
error: function (XMLHttpRequest, textStatus, errorThrown) { },
success: function (data){
data = parseInt(data, 10);
if(data == 1){
$("#telephonenameTip").html("<font color='#339933'>√ 短信验证码已发到您的手机,请查收</font>");
}else if(data == 0){
$("#telephonenameTip").html("<font color='red'>× 短信验证码发送失败,请又一次发送</font>");
return false;
}else if(data == 2){
$("#telephonenameTip").html("<font color='red'>× 该手机号码今天发送验证码过多</font>");
}
}
});
}
}else{
$("#telephonenameTip").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 + "秒内输入验证码");
}
} $(function(){
$("input",$("#codename").next("span")).blur(function(){
var SmsCheckCodeVal = $("#codename").val();
// 向后台发送处理数据
$.ajax({
url : "register_checkCode.action",
data : {SmsCheckCode : SmsCheckCodeVal},
type : "POST",
dataType : "text",
success : function(data) {
data = parseInt(data, 10);
if (data == 1) {
$("#codenameTip").html("<font color='#339933'>√</font>");
} else {
$("#codenameTip").html("<font color='red'>× 短信验证码有误,请核实后又一次填写</font>"); }
}
});
return true;
});
}); //对服务协议按钮做出的推断
function arrgement(){
if(document.getElementById("checked").checked){ document.getElementById("zhuce").innerHTML="<input class=\"loginregister\" id=\"loginregister\" type=\"submit\" onclick=\"clickregister()\" value=\"注冊 \" />";
document.getElementById("loginregister").style.color = "#FFF";
document.getElementById("loginregister").style.backgroundColor="#60F";
return true;
}else { document.getElementById("zhuce").innerHTML="<input class=\"loginregister\" id=\"loginregister\" type=\"button\" value=\"注冊 \" />";
document.getElementById("loginregister").style.color =="#000000";
document.getElementById("loginregister").style.backgroundColor="#D5D3CD";
return false;
}
} //点击注冊按钮时做出的推断
function clickregister(){
//alert("11"); var password = $("#password").val();
var passwordrepeat=$("#passwordRepeat").val();
var phonename=$("#telephonename").val();
var re= /(^1[3|5|8][0-9]{9}$)/;
var coadename = $("#codename").val();
var SmsCheckCodeVal = $("#codename").val();
//alert("22");
var flage = true;
//密码不能为空
if(trim(password)==""){
document.getElementById("passwordTip").innerHTML="<font color='red'>× 密码不能为空</font>";
if(flage){
flage = false;
}
}else if(trim(password)!=""){
document.getElementById("passwordTip").innerHTML="<font color='#339933'>√</font>";
//flage = true;
} if(trim(passwordrepeat)==""){
document.getElementById("passwordRepeatTip").innerHTML="<font color='red'>× 确认密码不能为空 </font>";
if(flage){
flage = false;
}
}else if(trim(password)!=trim(passwordrepeat)){
document.getElementById("passwordRepeatTip").innerHTML="<font color='red'>× 两次密码输入必须一致</font>";
if(flage){
flage = false;
}
}else if(trim(passwordrepeat)!="" && trim(password)==trim(passwordrepeat) ){
document.getElementById("passwordRepeatTip").innerHTML="<font color='#339933'>√</font>";
//flage = true;
} if (trim(phonename) == ""){
document.getElementById("telephonenameTip").innerHTML = "<font color='red'>× 手机号码不能为空</font>";
if(flage){
flage = false;
}
}else {
//alert("11s");
if(!re.test(phonename)){
document.getElementById("telephonenameTip").innerHTML = "<font color='red'>× 请输入有效的手机号码</font>";
if(flage){
flage = false;
}
}else {
//alert("11sssss");
//alert(ccc);
$.ajax({
async : false,
url:"register_checkLoginname.action",
data:{phonename:phonename},
type:"POST",
dataType:"text",
success:function(data){
//alert(data);
//data = parseInt(data, 10);
if (data != 0) {
$("#telephonenameTip").html("<font color='red'>× 该手机号码已被注冊。请又一次输入</font>");
//$("#loginregister").disabled=true;
if(flage){
flage = false;
}
}else {
$("#telephonenameTip").html("<font color='#339933'>√</font>");
//flage=true;
}
}
}); }
}
//alert("11sssss"); if(trim(coadename)==""){
document.getElementById("codenameTip").innerHTML="<font color='red'>× 验证码不能为空</font>";
if(flage){
flage = false;
}
}else {
document.getElementById("codenameTip").innerHTML=("<font color='#339933'>√</font>"); //alert("11sssss");
$.ajax({
async : false,
url : "register_checkCode.action",
data : {SmsCheckCode : SmsCheckCodeVal},
type : "POST",
dataType : "text",
success : function(data) {
//alert(data);
//data = parseInt(data, 10);
if (data == 0) {
$("#codenameTip").html("<font color='red'>× 短信验证码有误,请核实后又一次填写</font>");
if(flage){
flage = false;
}
} else {
$("#codenameTip").html("<font color='#339933'>√</font>");
// flage=true;
}
}
});
//alert("222");
//if(ddd==false){
// return ddd;
//} } //alert("111"); //推断有没有勾选服务协议
if(document.getElementById("checked").checked==true){ document.getElementById("zhuce").innerHTML="<input class=\"loginregister\" id=\"loginregister\" type=\"submit\" onclick=\"clickregister()\" value=\"注冊 \" />";
document.getElementById("loginregister").style.color = "#FFF";
document.getElementById("loginregister").style.backgroundColor="#60F";
//alert("2222");
//flage = true; }else { document.getElementById("zhuce").innerHTML="<input class=\"loginregister\" id=\"loginregister\" type=\"button\" value=\"注冊 \" />";
document.getElementById("loginregister").style.color =="#000000";
document.getElementById("loginregister").style.backgroundColor="#D5D3CD";
if(flage){
flage = false;
}
}
return flage;
}
action代码展示:能发送短信肯定是调用了短信平台的接口,否则不可能让你免费发送短信。这里我用的是天下畅通平台的短信接口平台。让他给Java类。URL,userid。account,password等參数。调用就能够了
@SuppressWarnings("serial")
@Controller
@Scope("prototype")
public class UserRegisterAction extends BaseAction<UserRegisterdomain> {
//短信验证码接口的測试数据(天下畅通平台给參数)
public static String url = "http://XXXXXXXXXX";
public static String userid = "XXXXXXXXXX";
public static String account = "XXXXXXXXX";
public static String password = "XXXXXXXXXXXXX";
private String phonename;
public String getPhonename() {
return phonename;
}
public void setPhonename(String phonename) {
this.phonename = phonename;
}
//注冊-往数据库中加入注冊信息
public String add(){
//插入时间
Date date=new Date();
//String createTime=new Timestamp(date.getTime()).toString();
//密码加密后存入数据库
String md5Digest=DigestUtils.md5Hex(model.getLoginPassword());
//头像
String headimg="../../../images/默认头像.gif";
//等级
String userRank="0";
//成长值
Integer userGrowths=0;
//给实体赋值管理员类型和时间,头像,成长值。等级
model.setUserType(0);
model.setDatetime(date);
model.setTouxiang(headimg);
model.setUserRank(userRank);
model.setUserGrowths(userGrowths);
//往数据库中进行加入
userRegisterService.addUserRegister(model);
//显示注冊界面
return "test";
}
//推断该手机号码是否已经注冊
public void checkLoginname() throws Exception{
String result = "0";
//推断该手机号码是否已经注冊
List<UserRegisterdomain> userlist=userRegisterService.findUser(phonename);
if(userlist!= null && userlist.size() > 0){
result = "1";
}else{
result = "0";
}
PrintWriter out = response.getWriter();
out.write(result.toString());
}
//验证手机短信是否发送成功
public void sms() throws Exception {
String result = "0";
/** 手机号码 */
Object jbPhone=request.getParameter("jbPhone");
/** 短信验证码 */
Object code = request.getParameter("code");
/** 短信验证码存入session(session的默认失效时间30分钟) */
session.setAttribute("code", code.toString());
/** 单个手机号发送短信的方法的參数准备 */
// 手机号码
String mobilephone = jbPhone.toString();
// 短信内容+随机生成的6位短信验证码
String content = "【学乐购站点】注冊验证码为:" + code.toString();
/** 单个手机号发送短信 */
if (!sendMessage(url, userid, account, password, mobilephone, content)) {
result = "0";// 失败
} else {
result = "1";// 成功
}
PrintWriter out = response.getWriter();
out.write(result.toString());
}
// 验证短信验证码是否正确
public void checkCode() throws Exception{
String result = "0";
// 获取手动输入的手机短信验证码
String SmsCheckCode = (String)(request.getParameter("SmsCheckCode"));
// 获取session中存放的手机短信验证码
Object code =session.getAttribute("code");
try {
if(SmsCheckCode != code.toString() && !SmsCheckCode.equals(code.toString())){
result = "0";
}else{
result = "1";
}
} catch (Exception e) {
throw new RuntimeException("短信验证失败", e);
}
PrintWriter out = response.getWriter();
out.write(result.toString());
}
//验证手机是否发送成功的方法
public static boolean sendMessage(String url, String userid, String account,
String password, String checkContent, String mobileNumber) {
// 单个手机号码发送
try {
String retObj = SmsClientSend.sendSms(url, userid, account, password,checkContent,mobileNumber);
//System.out.println(retObj);
if (retObj == "未发送。编码异常") {
return false;
} else {
return true;
}
} catch (Exception ex) {
ex.printStackTrace();
}
return true;
}
}
最终花了四天的时间把它搞出来了。给大家看一下验证码的效果。
。
尽管没怎么做过Java的项目,可是有了.net的基础。上手还是挺快的。由于好多东西都是相通的。名字叫的不一样可是都是实现一样的事情。像Java中的hibernate跟.net中的EF,Struts跟Mvc等等。。。
SSH2框架实现注冊发短信验证码实例的更多相关文章
- 19.最经济app发短信的方法
在创业团队.一个重要的原则是能省就省,该花的花,明智地使用金钱. 今的app,为了获取用户的社交关系.须要用户的手机号注冊. 用手机号注冊就涉及到一个发送短信验证码的问题,那怎么才干在短信服务上投入最 ...
- iOS中如何切换到发短信、打电话、发邮件
我们在做APP的时候,难免会遇到需要调用短信,电话等程序的时候.如美团. 当然,这些都只是一些简单的方法就可以实现,但是时间久了也会淡忘,所以想写这边博客.一是为了再捡起来复习一下,另一个相当于留个备 ...
- iOS开发中打电话发短信等功能的实现
在APP开发中,可能会涉及到打电话.发短信.发邮件等功能.比如说,通常一个产品的"关于"页面,会有开发者的联系方式,理想情况下,当用户点击该电话号码时,能够自动的帮用户拨出去,就涉 ...
- [stm32] SIM808模块之发短信\GPS\TCP\HTTP研究
SIM8008是四频模块,全球可用.含有TTL电平接口等接口,能够实现发短信.打电话.GPRS传输数据.GPS等功能.[正版资料请找beautifulzzzz·博客园] 一些细节: >> ...
- ios 设置亮度、声音;调用发短信、邮件、打电话
一,设置亮度 [[UIScreen mainScreen] setBrightness:0.5];//0.0~1.0 二,设置声音 1,添加 MediaPlayer.framework 框架 2,在需 ...
- iOS 打电话、发短信、邮件、打开网址、调用应用等合集
iOS中的很多功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信等,这里总结几个比较常用的: 1.打电话 方式一:最简单最直接的方式:直接跳到拨号界面 NSURL *url = ...
- 打电话、发短信、web以及发邮件
#import "ViewController.h" #import <MessageUI/MessageUI.h> //导入信息UI库 @interface View ...
- iOS打电话、发短信
方式一:使用该方法进行拨号之后,当电话挂断之后不会反回应用程序,会停留在电话记录界面,不会反回应用程序 NSURL *url = [NSURL URLWithString:@"te ...
- iOS打电话,发短信,发邮件,打开网址
//调用自带mail [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@hzl ...
随机推荐
- Valid Parentheses leetcode java
题目: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the ...
- C++11 lambda 表达式解析
C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性,建议去这里,这里,这里,还有这里看看.本文作为 5 月的最后一篇博客,将介绍 C++11 的 lamb ...
- linux CentOS7 安装scala
1.打开terminal ,进入当前用户路径: cd /home/sks 2.下载Scala2.11 wget https://downloads.lightbend.com/scala/2.11.8 ...
- Linux下删除相互依赖的包
今天遇到一个问题,使用RPM 卸载包的时候两个包相互依赖 包A 和包B 卸载A的时候提示需要先卸载B ,反之亦然 经过一番百度 可以在命令后面加参数--nodeps 例如 rpm -e php-jso ...
- htmlDOM树
原文: https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM Shadow DOM API 研究一 ...
- 给MySQL中某表增加一个新字段,设为主键值为自动增长。
alter table test_tb add ID int(10) primary key AUTO_INCREMENT; 设定完成后,原有记录的该字段会增加并自动设上值.以后的值会在已有记录的最 ...
- iOS中ActionSheet和Alert的区别
首先,样子长得就不一样 看下图:
- 上传的文件放在SVN服务器的哪个目录下
SVN服务器版本库有两种格式,一种为FSFS,一种为BDB 把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中. 如果是FSF ...
- Java从零开始学十六(多态)
一.什么是多态 多态性是指允许不同类的对象对同一消息作出响应.多态性包括参数化多态性和包含多态性.多态性语言具有灵活.抽象.行为共享.代码共享的优势,很好的解决了应用程序函数同名问题.多态有两种表现形 ...
- Java从零开始学六(运算符)
运算符 一.赋值运算符号 No. 赋值运算符号 描述 1 = 赋值 int num=22; System.out.println("num= "+num); num=num-3; ...