java手机注册获取验证码--乐信平台

乐信手机注册验证服务

  • BizNumberUtil随机码工具类:当前时间精确到秒+3位数字(此工具包可忽略)

package com.java11.crowd.util;

 

import java.text.SimpleDateFormat;

import java.util.Date;

 

/**

随机码工具包(当前时间精确到秒+3位数字)

*/

public class BizNumberUtil {

 

public static  int curttNo;

 

private final static String dataFormatString="yyMMddHHmmss";

 

public  synchronized static final String createBizId(){

if(curttNo<999) {

curttNo++;

}else{

curttNo=1;

}

String curttNoStr=String.valueOf(curttNo);

while(curttNoStr.length()<3){;

curttNoStr="0"+curttNoStr;

}

return new SimpleDateFormat(dataFormatString).format(new Date())+curttNoStr;

}

 

public static void main(String[] args) {

System.out.println(createBizId());

}

 

}

 

  • MD5.java工具类

package com.java11.crowd.util;

 

import java.security.MessageDigest;

/**

MD5码工具包

*/

public class MD5 {

private final static char[] hexDigits = { '0', '1', '2', '3', '4', '5',

'6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

 

private static String bytes2hex(byte[] bytes) {

StringBuffer sb = new StringBuffer();

int t;

for (int i = 0; i < 16; i++) {// 16 == bytes.length;

t = bytes[i];

if (t < 0)

t += 256;

sb.append(hexDigits[(t >>> 4)]);

sb.append(hexDigits[(t % 16)]);

}

return sb.toString();

}

 

public static String getMd5String(String strSrc) {

try {

MessageDigest md5 = MessageDigest.getInstance("MD5");

return bytes2hex(md5.digest(strSrc.getBytes()));

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

 

  • SendSms.java短信发送工具类,sendSms方法

package com.java11.crowd.util;

 

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.util.Random;

 

 

/**

短信发送工具包,sendSms方法

*/

public class SendSms {

 

//测试

public static void main(String[] args) {

System.out.println("=======================");

//随机生成一个1-100000的验证码并存放在模板中

new SendSms().sendSms("xxxxx@qq.com", "wwwwww", "17700000000", "尊敬的用户:您的验证码:"+new Random().nextInt(100000)+"工作人员不会索要,请勿泄露。【wcl】");

System.out.println("=======================");

}

 

//sendSms方法,短信发送的具体实现

public  String sendSms(String accName,String accPwd,String mobies,String content){

StringBuffer sb = new StringBuffer("http://www.lx198.com/sdk/send?");

try {

sb.append("accName="+accName); //用户名

sb.append("&accPwd="+MD5.getMd5String(accPwd)); //密码

sb.append("&aimcodes="+mobies);//收取验证码的手机号

sb.append("&content="+URLEncoder.encode(content,"UTF-8"));//验证信息

sb.append("&dataType=string");

System.out.println(sb.toString());

URL url = new URL(sb.toString());

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setRequestMethod("POST");

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

return in.readLine();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

}

 

  • sendSms.js(可自由选择)

function getRealPath(){

//获取当前网址,如: http://localhost:8083/myproj/view/ahha.jsp

var curWwwPath=window.document.location.href;

//获取主机地址之后的目录,如: myproj/view/ahha.jsp

var pathName=window.document.location.pathname;

var pos=curWwwPath.indexOf(pathName);

//获取主机地址,如: http://localhost:8080

var localhostPaht=curWwwPath.substring(0,pos);

//获取带"/"的项目名,如:/ahha

var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);

 

//得到了 服务器名称和项目名称

var realPath=localhostPaht+projectName;

 

return realPath;

}

 

// 声明全局变量pageContext

var pageContext = getRealPath();

 

$(function(){

send();

});

   

function send(){

     var sms="";

     document.getElementById("btn").οnclick=function(){

           var phone=$("#usPhone").val();

           if(phone!="")

           {

               $.ajax({

                   url:pageContext + "/user/code.action",

                   type:"post",

                   dataType : "json",

                   data:{"usPhone":phone},

                   success:function(data){

                       sms=data;

                       alert("========="+sms);

                   }

               });

           }else{

                alert("请输入手机号");

               return false;

           }

 

       };

       $("#lo").click(function(){

           var code=$("#code").val();

           var phone=$("#usPhone").val();

           var usPassword=$("#usPassword").val();

           if(code==""){

               alert("请输入验证码");

           }else{

            if(sms==code){

                   $.ajax({

                       url:pageContext + "/user/phoneReg.action",

                       type:"post",

                       dataType : "json",

                       data:{"usPhone":phone,"usPassword":usPassword},

                       success:function(data){

                        alert(data.msg);

                       },

                       

                   });

           }else{

          alert("验证码错误");

           }

           }

       });

 

    }

    

  • UserController

package com.java11.crowd.controller;

 

 

 

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import java.util.Random;

 

import javax.servlet.ServletRequest;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

 

import org.apache.ibatis.annotations.Param;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

 

import com.java11.crowd.service.IUserService;

import com.java11.crowd.util.EmailUtil;

import com.java11.crowd.util.GenerateLinkUtil;

import com.java11.crowd.util.IDCardUtil;

import com.java11.crowd.util.MyPasswordEncrypt;

import com.java11.crowd.util.SendSms;

import com.java11.crowd.vo.User;

/**

实现短信注册的Controller

*/

@RequestMapping("/user/*")

@Controller

public class UserController extends AbstractController {

@Autowired

private IUserService service;

 

//进入注册邮箱页面

@RequestMapping("/toregist")

public String toemail() {

return "index/email_reg";

}

 

//进入手机注册页面

@RequestMapping("/phoneregist")

public String phonereg() {

return "index/phone_reg";

}

 

//生成验证码,并发送给用户

@RequestMapping("code")

public @ResponseBody int code(HttpServletRequest request,HttpSession session) {

String accName="xxxxxxx@qq.com";//短信平台的注册账户

String accPwd="wwwwwww"; //平台密码

String mobies=request.getParameter("usPhone");//用户输入的手机号

int  code=new Random().nextInt(1000000); //随机生成验证码

String content="尊敬的用户:您的验证码:"+code+"工作人员不会索要,请勿泄露。【wcl】"; //格式要和短信平台一直  签名要写对

session.setAttribute("code", code);//将生成的code验证码保存到session

System.out.println(request.getSession().getAttribute("code"));//测试能否从session中获取验证码

SendSms sms=new SendSms();//创建工具包对象

sms.sendSms(accName, accPwd, mobies, content); //调用发送方法

return code;

}

 

 

 

@RequestMapping("phoneReg")

public @ResponseBody Object phoneReg(User vo,HttpServletRequest request) throws Exception {

//System.out.println(vo);

vo.setUsRole(1);

vo.setUsCreateTime(new Date());

Map<String,String> map=new HashMap();

map.put("msg", "注册成功");

 

if(service.phoneReg(vo)) {

return map;

}else {

return "redirect:/user/phoneregist.action";

}

 

}

}

 

注:此api可去乐信短信平台官网进行下载:http://www.lmobile.cn/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
乐信是一家技术驱动型的公司,因此他们在Java高级面试中会注重应聘者对于Java的深入理解和实际应用能力。 在面试中,乐信可能会问到以下几个方面的问题: 1. Java基础知识:乐信会考察应聘者对于Java基础知识的掌握程度,例如面向对象编程的概念和原则、多线程编程、异常处理机制等。 2. Java集合框架:乐信非常重视应聘者对于Java集合框架的熟悉程度,包括ArrayList、LinkedList、HashMap等常用集合的特性、适用场景以及性能考量等。 3. JVM和垃圾回收机制:乐信关注应聘者对于JVM和垃圾回收机制的了解程度,例如内存模型、类加载机制、垃圾回收算法等。 4. 多线程编程:乐信会提问多线程相关的问题,包括线程的生命周期、线程同步与互斥、线程池的使用等。 5. 设计模式:乐信希望应聘者能够熟练掌握常见的设计模式,并能够根据实际场景选择合适的设计模式进行代码设计。 除了以上几个方面,乐信还可能会针对应聘者的工作经验和项目经历提问,以了解应聘者在实际项目中的工作能力和解决问题的能力。此外,乐信还可能会进行编码和算法方面的考察,以评估应聘者的编码能力和解决复杂问题的能力。 总结来说,乐信Java高级面试注重应聘者对于Java核心概念的理解、实际项目经验的应用和对于算法的掌握程度。准备这些方面的知识和经验,可在乐信Java高级面试中有更好的表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱码农的小测试。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值