基于Maven的Spring+SpringMVC+Hibernate 短信验证码
2017-10-22 01:12
288 查看
因为毕业设计的原因,在做注册登录时想添加找回密码功能,想试试看能不能用短信验证的方式,花了一天的终于搞定,总结如下:
先上效果图,感兴趣的再往下看:
(前台)
(后台)
(验证码)
(验证成功)
1、首先要注册短信平台,我用的是阿里大于的短信服务,因为注册就送10元代金券,非常适合我这种学生党和只需毕业设计演示的情况。
2、注册完成后
记住这两个,后面会用到
3、添加短信签名,要通过才能使用
4、添加短信模板
接下来就是开发:
首先需要导入这两个包:aliyun-java-sdk-core和aliyun-java-sdk-dysmsapi
下载链接:http://download.csdn.net/download/gzh_coder/10033207
不知道Maven怎么导入本地包的可以看我另外一篇文章:
http://blog.csdn.net/gzh_coder/article/details/78282127
jsp页面:
js
Controller
阿里大于封装的
全部结束
先上效果图,感兴趣的再往下看:
(前台)
(后台)
(验证码)
(验证成功)
1、首先要注册短信平台,我用的是阿里大于的短信服务,因为注册就送10元代金券,非常适合我这种学生党和只需毕业设计演示的情况。
2、注册完成后
记住这两个,后面会用到
3、添加短信签名,要通过才能使用
4、添加短信模板
接下来就是开发:
首先需要导入这两个包:aliyun-java-sdk-core和aliyun-java-sdk-dysmsapi
下载链接:http://download.csdn.net/download/gzh_coder/10033207
不知道Maven怎么导入本地包的可以看我另外一篇文章:
http://blog.csdn.net/gzh_coder/article/details/78282127
jsp页面:
<!-- 存放返回的验证码 --> <input type="hidden" name="keepCode" id="keepCode" value="gzh" /> <div class="form-group" style="display: true;" id="phoneDiv"> <label for="input_phone"> <span class="glyphicon glyphicon-phone"></span> <label for="phone">密保手机</label></label> <input class="form-control input-lg" id="phone" name="phone" type="text" placeholder="请输入注册的密保手机!" value=""> </div>
js
<!-- 获取输入值 --> var phone = $("#phone").val(); <!-- 向controller传参 --> var paras = "o_tel=" + phone; $.post(path + "/message/sendMsg?" + paras,function(data) { if (data != null && typeof (data) != "undefined") { var msg = data['code']; <!-- 保存到隐藏的input --> $("#keepCode").attr("value", msg); } }, "json");
Controller
@Controller @RequestMapping("/message") public class SmsController { @ResponseBody @RequestMapping(value = "/sendMsg",method = RequestMethod.POST) public String sendMsg(HttpServletRequest request,HttpServletResponse response) throws ClientException { String phoneNumber = request.getParameter("o_tel");//获取前端传送过来的电话号码 String randomNum = createRandomNum(6);//随机生成6位数的验证码 String jsonContent = "{\"code\":\"" + randomNum + "\"}";//这里的code对应在阿里大于创建短信模板时的${code} Map<String, String> paramMap = new HashMap<>(); paramMap.put("phoneNumber", phoneNumber); paramMap.put("msgSign", "短信签名的签名名称");//阿里大于创建短信签名的签名名 4000 称 paramMap.put("templateCode", "短信模板的 模版CODE");//阿里大于创建短信模板的模版名称 paramMap.put("jsonContent", jsonContent); SendSmsResponse sendSmsResponse = AliyunMessageUtil.sendSms(paramMap); //阿里大于发送机制 if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { System.out.println(paramMap); System.out.println("短信验正码发送成功!"); }else { System.out.println(sendSmsResponse.getCode()+" 短信发送失败!"); } return jsonContent; } /** * 生成随机数 * @param num 位数 * @return */ public static String createRandomNum(int num){ String randomNumStr = ""; for(int i = 0; i < num;i ++){ int randomNum = (int)(Math.random() * 10); randomNumStr += randomNum; } return randomNumStr; } }
阿里大于封装的
public class AliyunMessageUtil { private static final String product = "Dysmsapi"; //产品域名,开发者无需替换 private static final String domain = "dysmsapi.aliyuncs.com"; // 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找) private static final String accessKeyId = "你的accessKeyId "; private static final String accessKeySecret = "你的accessKeySecret"; public static SendSmsResponse sendSms(Map<String, String> paramMap) throws com.aliyuncs.exceptions.ClientException { //可自助调整超时时间 System.setProperty("sun.net.client.defaultConnectTimeout", "60000"); System.setProperty("sun.net.client.defaultReadTimeout", "60000"); //初始化acsClient,暂不支持region化 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); //组装请求对象-具体描述见控制台-文档部分内容 SendSmsRequest request = new SendSmsRequest(); //必填:待发送手机号 request.setPhoneNumbers(paramMap.get("phoneNumber")); //必填:短信签名-可在短信控制台中找到 request.setSignName(paramMap.get("msgSign")); //必填:短信模板-可在短信控制台中找到 request.setTemplateCode(paramMap.get("templateCode")); //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为$[code]"时,此处的值为 request.setTemplateParam(paramMap.get("jsonContent")); //选填-上行短信扩展码(无特殊需求用户请忽略此字段) // request.setSmsUpExtendCode(paramMap.get("extendCode")); //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 // request.setOutId(paramMap.get("outId")); //hint 此处可能会抛出异常,注意catch SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); return sendSmsResponse; } }
全部结束
相关文章推荐
- 基于SpringMVC+Spring+Hibernate+Maven+Bootstrap的简单Demo
- 基于Maven的Spring+SpringMVC+Hibernate 邮箱验证码
- intellij idea 构建 基于spring springmvc hibernate的maven项目《二》
- spring+springMVC+hibernate(ssh)基于maven纯注解环境搭建
- intellij idea 构建 基于spring springmvc hibernate的maven项目《三》
- 基于spring+springmvc+hibernate的maven项目搭建
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之十:Spring mvc & hibernate 事务处理(回滚)
- 使用maven搭建SSH项目(spring+springmvc+Hibernate)
- SSH(Spring+SpringMVC+hibernate+Maven) 项目 使用jackson报转换异常
- springmvc+hibernate+spring在maven中整合
- SpringMVC+Spring+Mybatis基于Maven的整合
- 基于maven和SSM(spring+springMVC+mybatis)的实例
- Maven构建一个多模块的Spring Boot + Spring MVC项目,完全基于java config
- spring+springMvc+activeMq+maven+mybaits(基于全注解)
- Eclipse构建MAVEN_SpringMVCSpringHibernate
- SpringMVC学习系列之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
- SpringMVC学习系列(11) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
- SpringMVC+Apache Shiro+JPA(hibernate)案例教学(四)基于Shiro验证用户权限,且给用户授权
- springMVC+hibernate+maven整合开发
- Maven+SpringMVC+Hibernate+ajax:用ajax传递json到前台中文出现问号乱码问题