1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > jsp+Servlet实现短信验证码(腾讯云)保姆式教学

jsp+Servlet实现短信验证码(腾讯云)保姆式教学

时间:2020-02-27 16:47:13

相关推荐

jsp+Servlet实现短信验证码(腾讯云)保姆式教学

*前言:

最近在学习短信验证码的时候,在网上看来一大堆,都没有什么有用的信息,我自己也试着在其它的小众平台上实现短信功能,但是效率不高

小众平台有三点缺陷:

1.高延迟,发条短信到手机上40秒过了才到手机上*

2.收费太高,有的平台居然还有最低充值要求

3.官方文档太拉跨。

最后我就找了腾讯云去实现短信验证码的功能,想着是大公司,毕竟鹅厂的名气在那里摆着嘛

进去才发现,腾讯云短信功能它可以免费的送你200条短信,这200条也够你实现短信发送功能的了,随便你怎么测试都行,哈哈,

重要的事情说三遍:

要使用该服务必须要有 属于自己的公众号,或者 app 以及个人网站满足其一就可以!!!

使用该服务必须要有 属于自己的公众号,或者 app 以及个人网站满足其一就可以!!!

使用该服务必须要有 属于自己的公众号,或者 app 以及个人网站满足其一就可以!!!

我个人建议申请一个公众号就行了,简单省事。

如果加上你要给自己的公众号取一个大气上档次的名字的话,也顶天五分钟就能搞定了

申请公众号地址

短信功能教学正式开始:

1 登录网页:

微信登录腾讯云短信的网页,害怕各位小伙伴找不到腾讯云短信功能的网页地址,我就给你们贴出来了

腾讯云短信地址

2. 申请签名:

找到签名管理 点击创建签名点击创建签名后会弹出:

签名类型可以选择,你自己有什么就选什么,这里我就是以公众号为例子了去申请签名,签名类容:就是你公众号的名字到了这里最要的就是上传证明了,你要进入网页版公众号 鼠标移动到头像那里,有个账号详情,点进去,截取那里的信息上传申请说明就是,只要说明的目的就行,用于学习什么的,只要是合理的要求就行。

最后提交申请等待审核就行了,一般半个多小时就能有结果了,

注意!!!:签名如果审核失败,注意查看失败的结果,然后根据失败结果,修改后重新提交,千万不要重新再去申请签名,因为这样就又会等很久,如果你是重新提交的上传信息她会率先处理,比重新去申请签名快很多重新提交 和重新申请是有区别的哟,重新申请是去倒回去执行第二步,重新提交是你申请失败,被客服打回来让你修改提交信息的

申请模板

点击正文模板管理,里面有个申请模板,我把需要注意的内容都写在图文里面了。

你也可以根据腾讯云的指导文档去操作,他会教你一步一步的去实现短信功能,但是最后的发送短信 不是通过我们的Javaweb实现的

完成以上三步后,就可以等待审核了,审核还是挺快的当时我就只是等来半个多小时

4. 通过Javaweb(servlet+jsp)实现短信功能了,仔细看不要漏点任何细节:

上面介绍的都是一些准备工作,现在就是技术性的操作了

首先来到现在大家熟悉的下载依赖了 就是jar 包

官方提供了 两种下载依赖的方式

一个是通过maven的项目下载

如果是maven项目的话直接把下面的代码块导入 pom.xml就行了

<dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><!-- go to /search?q=tencentcloud-sdk-java and get the latest version. --><!-- 请到/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下 --><version>3.1.322</version></dependency>

一个是在直接下载jar包放在项目里面下面是是操作流程

点击连接

腾讯云官方GitHub下载地址

把下面的jar包都导入项目

5. 完成了导包或者或者下载好依赖后,申请api密钥

之所以要申请密钥是用来产生一个签名的,如果不申请自己写会很麻烦

害怕大家在腾讯云网站迷路,下面我放了api密钥的连接地址

api密钥申请地址

处理API关键操作 不要走神

注意注意我这里满足短信发送验证码 除了这三个必填字段 还需要填写 一个签名字段(就是你申请的签名模板的内容)就能给实现短信发送了

短信应用id:

其它参数设置

刚刚那两个参数就是:api密钥id,密钥key。你在线调试程序的时候不用修改,当你要把代码放入你的项目时,就要修改这两个参数才行

8.在线调试

如果你是跟着我的不走来的话这里肯定就不会出错的。

但是如果出错了 会有错误文档 以及错误信息给你参考,在这里我就不细讲了

9.复制代码到项目中

最后我把我的模板去掉了我的关键信息,并封装到方法的代码发出来共大家参考

public String send( String phone){//把要发送短信的对象读取进来String mass=null;try{//创建四位数随机验证码mass=random.RandomProduc.ProduceRandom();//这里我自己创建的一个类来实现四位随机数,你们可以自己写一下// 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密// 密钥可前往https://console./cam/capi网站进行获取Credential cred = new Credential("", "");//这里填写你的api密钥// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象SendSmsRequest req = new SendSmsRequest();String[] phoneNumberSet1 = {phone};//你要发送短信的对象 req.setPhoneNumberSet(phoneNumberSet1);req.setSmsSdkAppId("");//你的短信应用idreq.setSignName("");//你的签名内容 注意是内容不是id req.setTemplateId("");//你的模板idString[] templateParamSet1 = {mass};//你的模板变量内容 mass是我的验证码随机数req.setTemplateParamSet(templateParamSet1);// 返回的resp是一个SendSmsResponse的实例,与请求对象对应SendSmsResponse resp = client.SendSms(req);// 输出json格式的字符串回包System.out.println(SendSmsResponse.toJsonString(resp));} catch (TencentCloudSDKException e) {System.out.println(e.toString());//打印出来的是你发送的信息是否成功 以及错误的原因}return mass;//我返回的是一个随机数}

jsp代码就不用贴了,毕竟这没啥技术含量

我使用的是ajax实现上传的servlet的

思想就是 把手机号 和用户输入的验证码 传到servlet里进行比对

这里是用户点击发送验证码 上传到servlet实现发送短信

package servlet;import phone.sendsm;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/SmsServlet")//用于发送验证码public class SmsServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String phone=request.getParameter("phone");String mass= new sendsm().send(phone);//封装的发送短信的方法request.getSession().setAttribute("mass",mass);//把验证码保存在session中}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}}

第二个servlet也是使用ajax进行与服务端进行交互,把刚刚存进session的验证码 取出来 与用户的进行比对

部分代码如下,主要是 一个servlet我写了多个内容就不好全部粘过来,就截取了短信的内容

String mass = request.getParameter("Smscode");//得到客户填写的随机验证码String original =request.getSession().getAttribute("mass").toString();System.out.println(mass.equals(original));//发送给用户的验证码if (mass.equals(original)) {//用户的验证码与发送的验证码比对response.getWriter().write("2");//成功}else {response.getWriter().write("1");}

最后来一张成功的图片展示

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。