分析:
首先創建含有激活狀態的javaBean對象
public class User implements Serializable {
private int uid;//用戶id
private String username;//用戶名,賬號
private String password;//密碼
private String name;//真實姓名
private String birthday;//出生日期
private String sex;//男或女
private String telephone;//手機號
private String email;//郵箱
private String status;//激活狀態,Y代表激活,N代表未激活
private String code;//激活碼(要求唯一)
省略了getter/setter toString 方法等
}
用戶激活其實就是修改用戶表中的status狀態,我們在這用Y和N表示,Y表示已經激活,N表示未激活。
然後再創建一個封裝信息的javaBean對象
private boolean flag;//後端返回結果正常爲true,發生異常返回false
private Object data;//後端返回結果數據對象
private String errorMsg;//發生異常的錯誤消息
Servlet
@WebServlet("/activeUserServlet")
public class ActiveUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//獲取激活碼
String code=request.getParameter("code");
if (code!=null){
//調用service完成激活
Userservice service=new UserServiceImpl();
boolean flag=service.active(code);
//判斷標記 響應不同信息
String msg=null;
if (flag){
//激活成功
msg="激活成功,請<a href='login.html'>登錄</a>";
}else{
//激活失敗
msg="激活失敗,請聯繫管理員!";
}
response.setContentType("text/html;charset=utf-8");
response.getWriter().write(msg);
}
}
Service
/*
-
註冊用戶
-
*/
public boolean regist(User user) { //根據用戶名查詢用戶對象 User u=userDao.findByUsername(user.getUsername()); //判斷u是否爲null if (u!=null){ //用戶名存在,註冊失敗 return false; } //保存用戶信息 //2.1設置激活碼,唯一字符串 便於Servlet區分用戶 user.setCode(UuidUtil.getUuid()); //設置激活狀態 user.setStatus("N"); userDao.save(user); //激活郵件發送 String content="<a href='http://localhost:8055/travel/activeUserServlet? code="+user.getCode()+"'>點擊激活</a>"; MailUtils.sendMail(user.getEmail(),content,"激活郵件"); return true; }
/*
- 激活用戶
- */
@Override
public boolean active(String code) {
//根據激活碼查詢用戶對象
User user=userDao.findByCode(code);
if (user!=null){
//調用dao修改激活狀態的方法
userDao.updateStatus(user);
return true;
}else {
return false;
}
}
Dao
/*
- 根據激活碼查找用戶
- /
@Override
public User findByCode(String code) {
User user=null;
try {
String sql=“select * from tab_user where code=?”;
user=template.queryForObject(sql,new BeanPropertyRowMapper(User.class),code);
} catch (Exception e) {
e.printStackTrace();
}
return user;
}
/ - 修改激活狀態
- */
@Override
public void updateStatus(User user) {
String sql=“update tab_user set status=‘Y’ where uid=?”;
template.update(sql,user.getUid());
}
在這需要獲取客戶端的授權碼大家可以參考一下獲取qq郵箱授權碼
mail工具類
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
/**
-
發郵件工具類
*/public final class MailUtils { private static final String USER = ""; // 發件人稱號,同郵箱地址 private static final String PASSWORD = ""; // 使用郵箱授權碼
/**
*-
@param to 收件人郵箱
-
@param text 郵件正文
-
@param title 標題
/
/ 發送驗證信息的郵件 */public static boolean sendMail(String to, String text, String title){ try { final Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.host", "smtp.qq.com"); // 發件人的賬號 props.put("mail.user", USER); //發件人的密碼 props.put("mail.password", PASSWORD); // 構建授權信息,用於進行SMTP進行身份驗證 Authenticator authenticator = new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { // 用戶名、密碼 String userName = props.getProperty("mail.user"); String password = props.getProperty("mail.password"); return new PasswordAuthentication(userName, password); } }; // 使用環境屬性和授權信息,創建郵件會話 Session mailSession = Session.getInstance(props, authenticator); // 創建郵件消息 MimeMessage message = new MimeMessage(mailSession); // 設置發件人 String username = props.getProperty("mail.user"); InternetAddress form = new InternetAddress(username); message.setFrom(form); // 設置收件人 InternetAddress toAddress = new InternetAddress(to); message.setRecipient(Message.RecipientType.TO, toAddress); // 設置郵件標題 message.setSubject(title); // 設置郵件的內容體 message.setContent(text, "text/html;charset=UTF-8"); // 發送郵件 Transport.send(message); return true; }catch (Exception e){ e.printStackTrace(); } return false; } public static void main(String[] args) throws Exception { // 做測試用 MailUtils.sendMail("發件人郵箱","你好,這是一封測試郵件,無需回覆。","測試郵件"); System.out.println("發送成功"); } }
-
Uuid工具類
import java.util.UUID;
/**
- 產生UUID隨機字符串工具類
/
public final class UuidUtil {
private UuidUtil(){}
public static String getUuid(){
return UUID.randomUUID().toString().replace("-","");
}
/*- 測試
*/
public static void main(String[] args) {
System.out.println(UuidUtil.getUuid());
System.out.println(UuidUtil.getUuid());
System.out.println(UuidUtil.getUuid());
System.out.println(UuidUtil.getUuid());
}
}
- 測試