亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java 注冊(cè)時(shí)發(fā)送激活郵件和激活的實(shí)現(xiàn)示例

 更新時(shí)間:2017年07月17日 09:06:13   作者:ganchuanpu  
這篇文章主要介紹了Java 注冊(cè)時(shí)發(fā)送激活郵件和激活的實(shí)現(xiàn)示例的相關(guān)資料,需要的朋友可以參考下

Java 注冊(cè)時(shí)發(fā)送激活郵件和激活的實(shí)現(xiàn)示例

最近從項(xiàng)目分離出來(lái)的注冊(cè)郵箱激活功能,整理一下,方便下次使用

1.RegisterController.java

package com.app.web.controller;
import java.text.ParseException;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.app.service.impl.RegisterValidateService;
import com.app.tools.ServiceException;
 
@Controller
public class RegisterController {
 
  @Resource
  private RegisterValidateService service;
 
  @RequestMapping(value="/user/register",method={RequestMethod.GET,RequestMethod.POST})
  public ModelAndView load(HttpServletRequest request,HttpServletResponse response) throws ParseException{
    String action = request.getParameter("action");
    ModelAndView mav=new ModelAndView();
    if("register".equals(action)) {
      //注冊(cè)
      String email = request.getParameter("email");
      service.processregister(email);//發(fā)郵箱激活
      mav.addObject("text","注冊(cè)成功");
      mav.setViewName("register/register_success");
    }
    else if("activate".equals(action)) {
      //激活
      String email = request.getParameter("email");//獲取email
      String validateCode = request.getParameter("validateCode");//激活碼
      try {
        service.processActivate(email , validateCode);//調(diào)用激活方法
        mav.setViewName("register/activate_success");
      } catch (ServiceException e) {
        request.setAttribute("message" , e.getMessage());
        mav.setViewName("register/activate_failure");
      }
    }
    return mav;
  }
  
}
 

2.RegisterValidateService.java

package com.app.service.impl;
import java.text.ParseException;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.app.dao.UserDao;
import com.app.tools.MD5Tool;
import com.app.tools.MD5Util;
import com.app.tools.SendEmail;
import com.app.tools.ServiceException;
import com.code.model.UserModel;
 
@Service
public class RegisterValidateService {
 
  @Autowired
  private UserDao userDao;
 
  /**
   * 處理注冊(cè)
  */
  public void processregister(String email){
    UserModel user=new UserModel();
    Long as=5480l;
    user.setId(as);
    user.setName("xiaoming");
    user.setPassword("324545");
    user.setEmail(email);
    user.setRegisterTime(new Date());
    user.setStatus(0);
    ///如果處于安全,可以將激活碼處理的更復(fù)雜點(diǎn),這里我稍做簡(jiǎn)單處理
    //user.setValidateCode(MD5Tool.MD5Encrypt(email));
    user.setValidateCode(MD5Util.encode2hex(email));
 
    userDao.save(user);//保存注冊(cè)信息
 
    ///郵件的內(nèi)容
    StringBuffer sb=new StringBuffer("點(diǎn)擊下面鏈接激活賬號(hào),48小時(shí)生效,否則重新注冊(cè)賬號(hào),鏈接只能使用一次,請(qǐng)盡快激活!</br>");
    sb.append("<a href=\"http://localhost:8080/springmvc/user/register?action=activate&email=");
    sb.append(email);
    sb.append("&validateCode=");
    sb.append(user.getValidateCode());
    sb.append("\">http://localhost:8080/springmvc/user/register?action=activate&email=");
    sb.append(email);
    sb.append("&validateCode=");
    sb.append(user.getValidateCode());
    sb.append("</a>");
 
    //發(fā)送郵件
    SendEmail.send(email, sb.toString());
    System.out.println("發(fā)送郵件");
 
  }
 
  /**
   * 處理激活
   * @throws ParseException
   */
   ///傳遞激活碼和email過(guò)來(lái)
  public void processActivate(String email , String validateCode)throws ServiceException, ParseException{ 
     //數(shù)據(jù)訪問(wèn)層,通過(guò)email獲取用戶信息
    UserModel user=userDao.find(email);
    //驗(yàn)證用戶是否存在
    if(user!=null) { 
      //驗(yàn)證用戶激活狀態(tài) 
      if(user.getStatus()==0) {
        ///沒(méi)激活
        Date currentTime = new Date();//獲取當(dāng)前時(shí)間 
        //驗(yàn)證鏈接是否過(guò)期
        currentTime.before(user.getRegisterTime());
        if(currentTime.before(user.getLastActivateTime())) { 
          //驗(yàn)證激活碼是否正確 
          if(validateCode.equals(user.getValidateCode())) { 
            //激活成功, //并更新用戶的激活狀態(tài),為已激活
            System.out.println("==sq==="+user.getStatus());
            user.setStatus(1);//把狀態(tài)改為激活
            System.out.println("==sh==="+user.getStatus());
            userDao.update(user);
          } else { 
            throw new ServiceException("激活碼不正確"); 
          } 
        } else { throw new ServiceException("激活碼已過(guò)期!"); 
        } 
      } else {
        throw new ServiceException("郵箱已激活,請(qǐng)登錄!"); 
      } 
    } else {
      throw new ServiceException("該郵箱未注冊(cè)(郵箱地址不存在)!"); 
    } 
 
  }
}
  

3.UserModel.java

package com.code.model;
import java.beans.Transient;
import java.util.Calendar;
import java.util.Date;
 
public class UserModel {
  private Long id;
 private String name;
 private String password;
 private String email;//注冊(cè)賬號(hào)
 private int status=0;//激活狀態(tài)
 private String validateCode;//激活碼
 private Date registerTime;//注冊(cè)時(shí)間
 
   
  /////////////////
  public Long getId() {
    return id;
  }
 
  public void setId(Long id) {
    this.id = id;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public String getPassword() {
    return password;
  }
 
  public void setPassword(String password) {
    this.password = password;
  }
 
  public String getEmail() {
    return email;
  }
 
  public void setEmail(String email) {
    this.email = email;
  }
 
  public int getStatus() {
    return status;
  }
 
  public void setStatus(int status) {
    this.status = status;
  }
 
  public String getValidateCode() {
    return validateCode;
  }
 
  public void setValidateCode(String validateCode) {
    this.validateCode = validateCode;
  }
 
  public Date getRegisterTime() {
    return registerTime;
  }
 
  public void setRegisterTime(Date registerTime) {
    this.registerTime = registerTime;
  }
  /////////////////////////
  @Transient
  public Date getLastActivateTime() {
    Calendar cl = Calendar.getInstance();
    cl.setTime(registerTime);
    cl.add(Calendar.DATE , 2);
 
    return cl.getTime();
  }
 
}

4.SendEmail.java

package com.app.tools;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 
public class SendEmail {
 
  public static final String HOST = "smtp.163.com";
  public static final String PROTOCOL = "smtp"; 
  public static final int PORT = 25;
  public static final String FROM = "xxxxx@xx.com";//發(fā)件人的email
  public static final String PWD = "123456";//發(fā)件人密碼
 
  /**
   * 獲取Session
   * @return
   */
  private static Session getSession() {
    Properties props = new Properties();
    props.put("mail.smtp.host", HOST);//設(shè)置服務(wù)器地址
    props.put("mail.store.protocol" , PROTOCOL);//設(shè)置協(xié)議
    props.put("mail.smtp.port", PORT);//設(shè)置端口
    props.put("mail.smtp.auth" , true);
 
    Authenticator authenticator = new Authenticator() {
      @Override
      protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(FROM, PWD);
      }
 
    };
    Session session = Session.getDefaultInstance(props , authenticator);
 
    return session;
  }
 
  public static void send(String toEmail , String content) {
    Session session = getSession();
    try {
      System.out.println("--send--"+content);
      // Instantiate a message
      Message msg = new MimeMessage(session);
 
      //Set message attributes
      msg.setFrom(new InternetAddress(FROM));
      InternetAddress[] address = {new InternetAddress(toEmail)};
      msg.setRecipients(Message.RecipientType.TO, address);
      msg.setSubject("賬號(hào)激活郵件");
      msg.setSentDate(new Date());
      msg.setContent(content , "text/html;charset=utf-8");
 
      //Send the message
      Transport.send(msg);
    }
    catch (MessagingException mex) {
      mex.printStackTrace();
    }
  }
}

5.jsp頁(yè)面  

 registerEmailValidae.jsp

<h2>注冊(cè)激活</h2>
<form action="user/register?action=register" method="post">
   Email:<input type="text" id="email" name="email" value="" >
   <input type="submit" value="提交">
</form>

register_success.jsp

<body>
  恭喜你注冊(cè)成功!請(qǐng)到注冊(cè)的郵箱點(diǎn)擊鏈接激活!
 </body>

activate_success.jsp:

<body>
  賬號(hào)激活成功,點(diǎn)擊這里去登錄!
 </body>

activate_failure.jsp:

<body>
  激活失??!錯(cuò)誤信息:${message }
</body>

以上就是Java 注冊(cè)時(shí)發(fā)送激活郵件和激活的簡(jiǎn)單實(shí)例,如有疑問(wèn)請(qǐng)留言討論,共同進(jìn)步,關(guān)于java開(kāi)發(fā)的文章本站還有很多,

歡迎大家,搜索參閱,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Netty的Handler鏈調(diào)用機(jī)制及如何組織詳解

    Netty的Handler鏈調(diào)用機(jī)制及如何組織詳解

    這篇文章主要為大家介紹了Netty的Handler鏈調(diào)用機(jī)制及如何組織示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 基于SpringBoot和Vue3的博客平臺(tái)發(fā)布、編輯、刪除文章功能實(shí)現(xiàn)

    基于SpringBoot和Vue3的博客平臺(tái)發(fā)布、編輯、刪除文章功能實(shí)現(xiàn)

    在上一個(gè)教程中,我們已經(jīng)實(shí)現(xiàn)了基于Spring?Boot和Vue3的用戶注冊(cè)與登錄功能。本教程將繼續(xù)引導(dǎo)您實(shí)現(xiàn)博客平臺(tái)的發(fā)布、編輯、刪除文章功能,需要的朋友參考一下
    2023-04-04
  • 在JAR文件中找不到主清單屬性的原因與解決方案

    在JAR文件中找不到主清單屬性的原因與解決方案

    在Java中,一個(gè)JAR文件通常包含一個(gè)名為MANIFEST.MF的清單文件,這個(gè)文件定義了關(guān)于JAR文件的各種元數(shù)據(jù),然而,有時(shí)我們可能會(huì)遇到一個(gè)問(wèn)題,那就是在JAR文件中找不到主清單屬性,本文給大家介紹了JAR文件中找不到主清單屬性的原因和解決方案,需要的朋友可以參考下
    2024-04-04
  • java編程之xpath介紹

    java編程之xpath介紹

    這篇文章主要介紹了java編程之xpath介紹,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • Mybatis條件if test如何使用枚舉值

    Mybatis條件if test如何使用枚舉值

    這篇文章主要介紹了Mybatis條件if test如何使用枚舉值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • java使用DOM4J對(duì)XML文件進(jìn)行增刪改查操作

    java使用DOM4J對(duì)XML文件進(jìn)行增刪改查操作

    這篇文章主要為大家詳細(xì)介紹了java使用DOM4J對(duì)XML文件進(jìn)行增刪改查操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • SpringBoot2.1.4中的錯(cuò)誤處理機(jī)制

    SpringBoot2.1.4中的錯(cuò)誤處理機(jī)制

    這篇文章主要介紹了SpringBoot2.1.4中的錯(cuò)誤處理機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 詳解SpringMVC中設(shè)置靜態(tài)資源不被攔截的問(wèn)題

    詳解SpringMVC中設(shè)置靜態(tài)資源不被攔截的問(wèn)題

    這篇文章主要介紹了詳解SpringMVC中設(shè)置靜態(tài)資源不被攔截的問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • javac -encoding 用法詳解

    javac -encoding 用法詳解

    當(dāng)我們編輯了一個(gè)Java源文件保存時(shí),是以操作系統(tǒng)默認(rèn)的字符編碼保存的(Windows xp默認(rèn)字符集是GBK)。這篇文章主要介紹了javac -encoding 用法詳解,非常具有實(shí)用價(jià)值。
    2016-12-12
  • springboot 整合druid及配置依賴

    springboot 整合druid及配置依賴

    這篇文章主要介紹了springboot 整合druid及jdbc 依賴、數(shù)據(jù)庫(kù)依賴(mysql),druid 依賴的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12

最新評(píng)論