Java实现用户注册手机发码送验证



好 闲言碎语不要讲 

看代码吧


定义用户常用参数 userConstants(可以放在util下)

public class UserConstants {
	/***
	 * 操作成功
	 */
	public static final int SUCCESS = 1;
	/**
	 * 操作异常
	 */
	public static final int ERROR = 0;
	/**
	 * 入参异常
	 */
	public static final int PARAMETER_ERROR = 507;
	/**
	 * 接口异常
	 */
	public static final int USR_EXCEPTIONS = -1;
	/**
	 * 参数错误
	 */
	public static final int PARAM_ERROR = 11;
	/**
	 * userid 为空 未登录状态
	 */
	public static final int PARAM_SESSIONID = 22;
	/**
	 * 验证码错误
	 */
	public static final int CHECK_CODE_ERROR = 10014;
	/**
	 * 是否是手机号
	 */
	public static final int ISNOT_PHONE = 10018;
	/**
	 * 未登录状态
	 */
	public static final String TRANSIENT_USER = "transient";
	/**
	 * 用户不存在
	 */
	public static final int USER_NOT_EXIST = 51;
	/**
	 * 密码不正确
	 */
	public static final int PASSWD_INVALID = 2;
	/**
	 * 用户已经存在
	 */
	public static final int USER_EXIST = 3;
	/**
	 * 用户忘记密码的答案不对
	 */
	public static final int ANSWER_IS_INVALID = 4;
	/**
	 * 用户暂时无法注册
	 */
	public static final int ISNOTREGIT = 30;
	/**
	 * 邮箱已经存在
	 */
	public static final int EMAIL_EXIST = 8;
	/**
	 * 手机号已经存在
	 */
	public static final int MOBILE_EXIST = 9;
	/**
	 * 可以注册
	 */
	public static final int REGISTER_CAN = 12;
	/**
	 * 可以发送验证码
	 */
	public static final int SEND_OK = 15;
	/**
	 * 手机号或者邮箱格式不对
	 */
	public static final int FORMAT_ERROR = 17;
	/**
	 * 修改成功
	 */
	public static final int USER_UPDATE = 18;
	/**
	 * 服务异常
	 */
	public static final int USER_SERVER_EXCEPTION = 19;
	/**
	 * 用户登陆频率
	 */
	public static final int USER_LOGIN_FREQUENCY = 21;
	/**
	 * 原密码不正确
	 */
	public static final int OLDPASSWORD_INVALIDE = 5;
	/**
	 * 验证码错误
	 */
	public static final int CODE_ERROR = 7;
	/**
	 * 验证码已过期
	 */
	public static final int CODE_EXPIRE = 20;
}



然后 接口常用参数 InterfaceConstants (这个也可以放在util下)

public class InterfaceConstants {

	/**
	 * 短信接口APPKEY
	 */
	public static final String SMS_KEY = "060524b3564a4e64a969dfd2a725dc9e";
	
	/**
	 * 用户注册短信接口template Id
	 */
	public static final String REGIST_SMS_TEMPLATE_ID = "80a9afeff4714e0e93552554c0ba213b";
	/**
	 * 银行卡绑定短信接口template Id
	 */
	public static final String BANKCARD_SMS_TEMPLATE_ID = "9adf7110fdd74cfa8951d32120c4840f";
	/**
	 * 找回密码短信接口template Id
	 */
	public static final String FINDPASSWORD_SMS_TEMPLATE_ID = "af28a824adc747a0b23567c11629dd18";
	
	/**
	 * 阿凡达第三方接口短信接口请求地址 
	 */
	public static final String AVATARDATA_SMS = "http://v1.avatardata.cn/Sms/Send?key=";

}



好 到这一步 才开始真正厉害的了  上面的写好 可以忘了


注意 注意 (敲黑板~) 这是重点  


对 没错 相信自己 你看的没毛病 这是service一个名叫SendSMSService接口 

public interface SendSMSService {

	/**
	 * 发送短信
	 * 
	 * @param mobile
	 *            <code>String</code> session ID
	 * @param requestType
	 *            <code>Integer</code> 发送验证码的类型
	 * @param tel
	 *            <code>String</code> 电话
	 * @return <code>Integer</code> 验证码
	 * @throws UnsupportedEncodingException
	 */
	public Integer sendSms(String sessionid, Integer requestType, String tel)
			throws UnsupportedEncodingException;

}


接口有了 理所当然的来实现它啊 


@Service
public class SendSMSServiceImpl implements SendSMSService {
	
	/**
	 * 发送短信验证码
	 * 
	 * <p>
	 * <b>Release Notes:</b> <br/>
	 * <table border="1" cellspacing="0" cellpadding="5" width="80%">
	 * <tr>
	 * <th align="left">Release</th>
	 * <th align="left">Notes</th>
	 * </tr>
	 * <tr>
	 * <td>@since 1.0</td>
	 * <td> </td>
	 * </tr>
	 * </table>
	 * <p>
	 * 
	 * @param sessionid
	 *            <code>String</code> session ID
	 * @param requestType
	 *            <code>Integer</code> 发送验证码的类型
	 * @param tel
	 *            <code>String</code> 电话
	 * @return <code>Integer</code> 验证码
	 * @throws UnsupportedEncodingException
	 */

	public Integer sendSms(String mobile, Integer requestType, String tel) throws UnsupportedEncodingException {

		// 生成验证码
		Random random = new Random();
		
		// 组成验证码信息
		int x_param = random.nextInt(900000) + 100000;
		
		HttpURLConnection httpconn = null;
		
		StringBuilder sb = new StringBuilder();
		
		sb.append(InterfaceConstants.AVATARDATA_SMS);
		
		sb.append(InterfaceConstants.SMS_KEY);

		if (requestType.equals(1)) {
			
			sb.append("&mobile=").append(mobile);
			
			sb.append("&templateId=").append(InterfaceConstants.REGIST_SMS_TEMPLATE_ID);
			
		} else if (requestType.equals(2)) {
			
			sb.append("&mobile=").append(mobile);
			
			sb.append("&templateId=").append(InterfaceConstants.FINDPASSWORD_SMS_TEMPLATE_ID);
			
		} else if (requestType.equals(3)) {
			
			if (tel != null && !"".equals(tel)) {
				
				sb.append("&mobile=").append(tel);
				
			} else {
				
				sb.append("&mobile=").append(mobile);
			}
			
			sb.append("&templateId=").append(InterfaceConstants.BANKCARD_SMS_TEMPLATE_ID);
			
		} else if (requestType.equals(4)) {
			
			sb.append("&mobile=").append(mobile);
			
			sb.append("&templateId=").append(InterfaceConstants.BANKCARD_SMS_TEMPLATE_ID);
		}
		
		sb.append("¶m=").append(x_param);
		
		String redLine = "";

		// 发送验证码
		try {
			URL url = new URL(sb.toString());

			httpconn = (HttpURLConnection) url.openConnection();
			
			httpconn.setRequestProperty("Accept-Charset", "UTF-8");
			
			httpconn.setRequestProperty("contentType", "utf-8");

			BufferedReader rd = new BufferedReader(new InputStreamReader(httpconn.getInputStream()));

			redLine = rd.readLine();
			
			rd.close();
			
		} catch (MalformedURLException e) {

			e.printStackTrace();
			
		} catch (IOException e) {

			e.printStackTrace();
			
		} finally {
			
			if (httpconn != null) {
				
				httpconn.disconnect();
				
				httpconn = null;
			}
		}
		
		JSONObject json = JSONObject.fromObject(redLine);
		
		String error_code = json.get("reason").toString();
		
		String str = json.get("reason").toString();
		
		if (!str.equals("Succes")) {
			
			return UserConstants.ERROR;
		}
		
		return x_param;
	}
}

到这里 就完成了90% 啥 你问我剩下的10%是在哪儿 来 我告诉你 看 biu-biu-biu--------


controller里面

既然是获取验证码,那肯定是要有手机号的对不对,所以,获取手机号,然后调用方法发送验证码


 /**
     * 注册 获取手机验证码
     *
     * @return
     * @throws UnsupportedEncodingException
     * @throws Exception
     */
    @RequestMapping(value = "code")
    @ResponseBody
    public Object code(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {

        String mob = request.getParameter("mob");

        if (mob == null && mob.isEmpty()) {

            return JsonResponse.createByErrorMessage("请输入手机号");
        }

        System.out.println(mob);

        int x_param = sendSMSService.sendSms(mob, 1, null);//mob 就是自己从前台获取的手机号mob ,1 是类型,

        System.out.println(x_param);

        return x_param; //最后再返回这个验证码

    }


那么最后 就是 注册的方法了 

/**
     * 手机注册
     *
     * @return
     * @throws UnsupportedEncodingException
     * @throws Exception
     */
    @RequestMapping(value = "registMob")
    @ResponseBody
    public JsonResponse<Object> registMob(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {

        String name = request.getParameter("name"); //姓名

        String paw = request.getParameter("password");  //密码
        
       String  password = MD5Util.MD5EncodeUtf8(paw);  //密码加密 
       
       System.out.println(password);

        String mob = request.getParameter("mob");  //手机号

        String code = request.getParameter("code");  //这是用户输入的验证码

        String x_param = request.getParameter("x_param");// 这是上一个方法返回到前台正确的验证码

        if (!code.equals(x_param)) {

            return JsonResponse.createByErrorMessage("验证码不正确,请重新输入");

        } else {

            Map<String, Object> userMap = new HashMap<String, Object>();

            userMap.put("name", name);

            userMap.put("password", password);

            userMap.put("mob", mob);

            return iOpusService.addUser(userMap); //执行添加  。。。。啊不 。。。是注册 嗯 对 是注册 
            
           


        }

    }


写到这里 你会发现一个问题 你自己测试一下 先调用 code 方法 给手机发送验证码 看看验证码可以不可以 如果可以 然后再调用registMob方法 注意啊 当你按下回车的时候 你会惊奇的发现 成了~ 是的 没错 成功了 !!!怎么样,是不是已经在幻想着自己这段代码写完之后,不久就可以出任总经理,胜任cto,赢取白富美 走上人生的巅峰啊 哇咔咔咔 


  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值