发表于: 2020-07-08 23:21:40
1 1208
今天完成的事情:
学员报名系统加上手机,邮箱,头像的字段,接口中添加对应的字段。
修改前一个任务的代码,数据库中account加上手机,邮箱,头像字段:
pojo类中也添加对应字段:
package com.jnshu.pojo;
public class Account {
private Long id;
private String username;
private String password;
private int phone;
private String img;
private String email;
private Long createat;
private String createby;
private Long updateat;
private String updateby;
public Long getId() {
return id;
}
public void setId(Long 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 int getPhone() {
return phone;
}
public void setPhone(int phone) {
this.phone = phone;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Long getCreateat() {
return createat;
}
public void setCreateat(Long createat) {
this.createat = createat;
}
public String getCreateby() {
return createby;
}
public void setCreateby(String createby) {
this.createby = createby;
}
public Long getUpdateat() {
return updateat;
}
public void setUpdateat(Long updateat) {
this.updateat = updateat;
}
public String getUpdateby() {
return updateby;
}
public void setUpdateby(String updateby) {
this.updateby = updateby;
}
@Override
public String toString() {
return "Account{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public Account() {
}
public Account(Long id) {
this.id = id;
}
}
修改队友的AccountMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jnshu.dao.AccountMapper">
<insert id="insert" parameterType="com.jnshu.pojo.Account">
insert into account (id, username, password, phone, img, email,createat, createby,
updateat, updateby)
values (#{id,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{phone,jdbcType=INTEGER},
#{img,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{createat,jdbcType=BIGINT}, #{createby,jdbcType=VARCHAR},
#{updateat,jdbcType=BIGINT}, #{updateby,jdbcType=VARCHAR})
</insert>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from account
where id = #{id,jdbcType=BIGINT}
</delete>
<update id="updateByPrimaryKeySelective" parameterType="com.jnshu.pojo.Account">
update account
<set>
<if test="username != null">
username = #{username,jdbcType=BIGINT},
</if>
<if test="password != null">
password = #{password,jdbcType=BIGINT},
</if>
<if test="phone != null">
phone = #{phone,jdbcType=INTEGER},
</if>
<if test="img != null">
img = #{img,jdbcType=VARCHAR},
</if>
<if test="email != null">
email = #{email,jdbcType=VARCHAR},
</if>
<if test="createat != null">
createat = #{createat,jdbcType=BIGINT},
</if>
<if test="createby != null">
createby = #{createby,jdbcType=VARCHAR},
</if>
<if test="updateat != null">
updateat = #{updateat,jdbcType=BIGINT},
</if>
<if test="updateby != null">
updateby = #{updateby,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<select id="select" parameterType="Account" resultType="Account">
select * from account
<where>
<if test="id != null">
id = #{id,jdbcType=BIGINT}
</if>
<if test="username != null">
and username = #{username,jdbcType=VARCHAR}
</if>
<if test="password != null">
and password = #{password,jdbcType=VARCHAR}
</if>
</where>
</select>
<select id="selectAccount" parameterType="String" resultType="Account">
select * from account where username = #{username}
</select>
</mapper>
完成容联短信DEMO:
首先注册容联云。
1. 去容联控制台首页获取开发者主账号, 获取ACCOUNT SID及AUTH TOKEN
2. 应用管理设置默认应用-> 编辑 -> 短信验证码->APP ID
3.在官网下载Demo示例:
4.下载完解压得到:
5.使用idea打开demo,按照说明填写:
package com.cloopen.rest.demo;
import com.cloopen.rest.sdk.CCPRestSmsSDK;
import java.util.HashMap;
import java.util.Set;
public class SDKTestSendTemplateSMS {
/**
* @param args
*/
public static void main(String[] args) {
HashMap<String, Object> result = null;
//初始化SDK
CCPRestSmsSDK restAPI = new CCPRestSmsSDK();
//******************************注释*********************************************
//*初始化服务器地址和端口 *
//*沙盒环境(用于应用开发调试):restAPI.init("sandboxapp.cloopen.com", "8883");*
//*生产环境(用户应用上线使用):restAPI.init("app.cloopen.com", "8883"); *
//*******************************************************************************
restAPI.init("sandboxapp.cloopen.com", "8883");
//******************************注释*********************************************
//*初始化主帐号和主帐号令牌,对应官网开发者主账号下的ACCOUNT SID和AUTH TOKEN *
//*ACOUNT SID和AUTH TOKEN在登陆官网后,在“应用-管理控制台”中查看开发者主账号获取*
//*参数顺序:第一个参数是ACOUNT SID,第二个参数是AUTH TOKEN。 *
//*******************************************************************************
restAPI.setAccount("8aaf0708732220a601732c5089d8053c", "e68ee368f4f44f8882580eeb4797e56c");
//******************************注释*********************************************
//*初始化应用ID *
//*测试开发可使用“测试Demo”的APP ID,正式上线需要使用自己创建的应用的App ID *
//*应用ID的获取:登陆官网,在“应用-应用列表”,点击应用名称,看应用详情获取APP ID*
//*******************************************************************************
restAPI.setAppId("8aaf0708732220a601732c508ad70542");
//******************************注释****************************************************************
//*调用发送模板短信的接口发送短信 *
//*参数顺序说明: *
//*第一个参数:是要发送的手机号码,可以用逗号分隔,一次最多支持100个手机号 *
//*第二个参数:是模板ID,在平台上创建的短信模板的ID值;测试的时候可以使用系统的默认模板,id为1。 *
//*系统默认模板的内容为“【云通讯】您使用的是云通讯短信模板,您的验证码是{1},请于{2}分钟内正确输入”*
//*第三个参数是要替换的内容数组。 *
//**************************************************************************************************
//**************************************举例说明***********************************************************************
//*假设您用测试Demo的APP ID,则需使用默认模板ID 1,发送手机号是13800000000,传入参数为6532和5,则调用方式为 *
//*result = restAPI.sendTemplateSMS("13800000000","1" ,new String[]{"6532","5"}); *
//*则13800000000手机号收到的短信内容是:【云通讯】您使用的是云通讯短信模板,您的验证码是6532,请于5分钟内正确输入 *
//*********************************************************************************************************************
result = restAPI.sendTemplateSMS("13387660408","1" ,new String[]{"6532","5"});
System.out.println("SDKTestGetSubAccounts result=" + result);
if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map)
HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
Set<String> keySet = data.keySet();
for(String key:keySet){
Object object = data.get(key);
System.out.println(key +" = "+object);
}
}else{
//异常返回输出错误码和错误信息
System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
}
}
}
6.最后测试:
这是由于还没有绑定测试号码,去官网添加即可,添加之后再次运行:
手机收到短信:
接下来将它加到之前的任务中:
加一个生成随机验证码的工具类:
public static String getRandLength(int intLength){
Random random = new Random();
// 获取随机数
double pross = (1 + random.nextDouble()) * Math.pow(10, intLength);
// 将获取的随机数转换为字符串
String fixLengthString = String.valueOf(pross);
// 返回固定长度随机数
return fixLengthString.substring(1, intLength+1);
}
SDKTest:
package com.jnshu.util;
import com.cloopen.rest.sdk.CCPRestSmsSDK;
import java.util.HashMap;
import java.util.Set;
public class SDKTest {
private String AccountSid;
private String AccountToken;
private String Rand_Code = RandNum.getRandLength(4);
public SDKTest(String accountSid, String accountToken) {
AccountSid = accountSid;
AccountToken = accountToken;
}
public String getRand_Code() {
return Rand_Code;
}
public boolean getSMS(String phone) {
HashMap<String, Object> result = null;
// 初始化SDK
CCPRestSmsSDK restAPI = new CCPRestSmsSDK();
/* 初始化服务器地址和端口 */
// 沙盒模式 | 内测模式
restAPI.init("sandboxapp.cloopen.com", "8883");
// 生产环境
// restAPI.init("app.cloopen.com", "8883");
/* 初始化主账号和主令牌 ACOUNT SID和AUTH TOKEN在登陆官网后,在“应用-管理控制台”中查看开发者主账号获取 */
restAPI.setAccount(AccountSid, AccountToken);
/* 初始化应用ID 应用ID的获取:登陆官网,在“应用-应用列表”,点击应用名称,看应用详情获取APP ID */
restAPI.setAppId("8aaf0708732220a601732c508ad70542");
/* 发送短信 */
//*第一个参数:是要发送的手机号码,可以用逗号分隔,一次最多支持100个手机号 *
//*第二个参数:是模板ID,在平台上创建的短信模板的ID值;测试的时候可以使用系统的默认模板,id为1。 *
//*系统默认模板的内容为“【云通讯】您使用的是云通讯短信模板,您的验证码是{1},请于{2}分钟内正确输入”*
//*第三个参数是要替换的内容数组。
/* 给17050071261按照官网模板 1 发送验证码 6543 5分钟后失效 */
result = restAPI.sendTemplateSMS(phone, "1", new String[]{Rand_Code,"5"});
System.out.println(Rand_Code);
/* 输出发送返回信息 */
System.out.println("SDKTestGetSubAccounts result=" + result);
if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map)
HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
Set<String> keySet = data.keySet();
for(String key:keySet){
Object object = data.get(key);
System.out.println(key +" = "+object);
}
return true;
}else{
//异常返回输出错误码和错误信息
System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
return false;
}
}
}
SmsController:
package com.jnshu.controller;
import com.jnshu.util.SDKTest;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class SmsController {
private static Logger logger = Logger.getLogger(SmsController.class);
@RequestMapping("getSms")
public void getSms(String phone){
SDKTest sdk = new SDKTest("8aaf0708732220a601732c5089d8053c","e68ee368f4f44f8882580eeb4797e56c");
sdk.getSMS(phone);
}
}
jsp页面加个按钮:
<div class="container">
<h1 style="color: white; margin: 0; text-align: center">注 册</h1>
<form action="" method="post">
用户名<label><input type="text" name="username" placeholder="请输入用户名"/></label><br>
密码<label><input type="password" name="password" placeholder="请输入密码" /></label><br>
手机<input type='text' onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')" name="phone" placeholder="请输入手机号"><input type="submit" formaction="getSms" value="获取短信验证码"/><br>
验证码: <input type="text" id="sms"><br>
<input type="submit" formaction="register" value="注册"/>
<p class="change_link">
<span class="text">已经有账户?</span>
<a href="/task7/tologin" class="to_login"> 去登录 </a>
</p>
</form>
</div>
测试:
结果:
这里有点问题,点获取验证码之后虽然验证码发送成功了,但是页面跳转了,这不是我需要的效果。现在需要的是点击这个按钮只发送请求不跳转页面。
收获:
初步学会使用容联云短信接口
明天计划完成的事情:
完善一下代码,校验验证码,以及使用手机登录,最主要解决这个跳转的问题。
评论