短信注册验证以及邮箱激活

短信验证:

1.通过第三方平台获取接口,以及鉴权方法

2.设置自己的信息,以及发送的内容

3 核心代码

 public class singlesend{
    public static String URL="http://api01.monyun.cn:7901/sms/v2/std/single_send";
    StringRandom Random=new StringRandom();
    public static boolean isMobileNO(String mobile){ 
        Pattern p=null;
        Matcher m=null;
        boolean b=false; 
        p=Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9])|(17[0-9]))\\d{8}$");  
        m=p.matcher(mobile);
        b=m.matches(); 
        return b;
    }    
    @SuppressWarnings("unchecked")
    public String Send(String mobile) throws UnsupportedEncodingException {//发送手机号
        JSONObject jsobj1 = new JSONObject();
        String random=Random.getStringRandom();
        jsobj1.put("apikey", "鉴权码");
        jsobj1.put("mobile", mobile);
        String decode=URLEncoder.encode("XXXXXXXXXXXXXXXX:"+random+"。","GBK");
        jsobj1.put("content",decode);
        post(jsobj1);
        return random;
    }
    public static String post(JSONObject json) {//post请求
        HttpClient client=new DefaultHttpClient();// 实例化短信处理对象
        HttpPost post=new HttpPost(URL);
        post.setHeader("Content-Type","application/json");//发送post请求的头部参数信息格式
        post.addHeader("Authorization","Basic YWRtaW46");//追加头部参数信息即用户身份验证加密
        String result="";
        try {
            StringEntity s=new StringEntity(json.toString(),"utf-8");
            s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));
            post.setEntity(s);
            HttpResponse httpResponse = client.execute(post);
            InputStream inStream = httpResponse.getEntity().getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inStream, "utf-8"));
            StringBuilder strber = new StringBuilder();
            String line=null;
            while ((line=reader.readLine())!=null)
            strber.append(line+"\n");
            inStream.close();
            result=strber.toString();
            if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                System.out.println("发送成功!");
            } else {
                System.out.println("发送失败!");
            }
        } catch (Exception e) {
            System.out.println("出现异常!");
            throw new RuntimeException(e);
        }
        return result;
    }
}

4    (1)问题:用servlet实现中页面不能进行异步提交

               解决:用ajax

       例<script type="text/javascript">
           function fn1(){
           var username=$("#username").val();
           var password=$("#password").val();
           var mobile = $("#mobile").val();
           var email = $("#email").val();
          $.post("/User/RegistServlet",
               {"username":username,"password":password,"mobile":mobile,"email":email},
               function(data){
                   alert(data);
              }
       );}
      function fn2(){
      var verificationde = $("#verificationde").val();
       $.post("/User/singlesendServlet",
              {"verificationde":verificationde},
             function(data){
                  if(data=="ok"){
                      window.location="/User/login.html";
                  }else if(data=="no"){
                      alert("邮箱未激活或邮箱错误!");
                  }
                  else{
                      alert("验证码错误!");
                  }
              }     );
       }
   </script>

(2)用ssh框架实现中页面进行异步提交

绑定onsubmit事件(用jq的话是submit()), 在submit按钮效果触发之前我们就把数据提交了, 然后我们return false(让submit这次的点击触发事件失效, 否则表单又会提交一次, 并且刷新页面)

核心代码:

js

 $(document).ready(function() {
            $('#err_form').submit(function() {
                 var username=$("#username").val();
                      var password=$("#password").val();
                  var mobile = $("#mobile").val();
                  var email = $("#email").val();
                     var params = {
                           "username":username,
                           "password":password,
                           "email":email,
                           "mobile":mobile
                       };
                $.ajax({
                    type:"post",
                    async:true,
                    url: "zhuce.action",       
                    data: params,           
                    dataType:"text",
                    success:function(){
                        alert("发送成功");
                    }
                });
                    return false;    //还是要return false, 跟上面一样的道理
            });
        });

<form id="err_form">
                    <tr>
                        <td colspan="2">
                            &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;用户名:<input  name="username" id="username"    maxlength="12" οnfοcus="showTips()"   />
                        <span id="namespan"></span><br/>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 密码: <input type="password" name="password"  id="password"   οnfοcus="showTips()"   />
                            <span id="pspan"></span><br/>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            &nbsp;&nbsp; 确认密码: <input type="password"  name="repassword"  id="repassword"  οnfοcus="showTips()"  />
                            <span id="respan" style="text-align: center"></span><br/>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Email:<input name="email"   id="email"   οnfοcus="showTips()"  />
                            <span id="mspan" style="text-align: center"></span><br/>
                        </td>
                    </tr>

                    <tr>
                        <td colspan="2">
                            &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;手机号:<input  name="mobile"  id="mobile"   maxlength="11" οnfοcus="showTips()"  />
                            <span id="telespan" style="text-align: center"></span>
                            <input type="submit" id="sub" value="发送验证码"/>
                            <br/>
                        </td>
                    </tr>
                </form>

绑定邮箱

1.设置通过那个邮箱及邮箱号发送邮件,得到鉴权码

核心代码

   public class EmailUtils {
    private static final String FROM="由哪个邮箱发送";在邮箱里面进行设置
    public static void sendAccountActivateEmail(String username,String password,String email,String codeUrl) {
        Session session=getSession();
        MimeMessage message=new MimeMessage(session);
        try {
            message.setSubject("XXXXXXXXXXXXXXX!");
            message.setSentDate(new Date());
            message.setFrom(new InternetAddress(FROM));
            message.setRecipient(RecipientType.TO, new InternetAddress(email));
            System.out.println(email+username+codeUrl);
            message.setContent("<a target='_BLANK' href='http://127.0.0.1:8080/ssh_xuetang/activate.jsp?username="+username+"&codeUrl="+codeUrl+"'target='_blank'>点击激活</a>","text/html;charset=utf-8");
            Transport.send(message);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static Session getSession() {
        Properties props=new Properties();
        props.setProperty("mail.transport.protocol","smtp");
        props.setProperty("mail.smtp.host","smtp.qq.com");
        props.setProperty("mail.smtp.port","25");
        props.setProperty("mail.smtp.auth","true");
        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(FROM, "鉴权码");
            }
        });
        return session;
    }
}

2.激活邮箱(Dao层实现代码)

public void updateEmailername(String username) {//激活邮箱0未激活1激活
        Session session = getHibernateTemplate().getSessionFactory().openSession();
        Transaction trans=session.beginTransaction();
        String hql="update User user set user.activated=1 where user.username ='"+username+"'";
        Query queryupdate=session.createQuery(hql);
        queryupdate.executeUpdate();
        trans.commit();
        }
}

3通过邮箱找回密码(Dao层实现代码)

public void updatePassW(String email, String password) {//通过邮箱更新密码
        Session session = getHibernateTemplate().getSessionFactory().openSession();
        Transaction trans=session.beginTransaction();
        String hql="update User user set user.password='"+password+"' where user.email ='"+email+"'";
        Query queryupdate=session.createQuery(hql);
        queryupdate.executeUpdate();
        trans.commit();
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值