SpringMVC中模擬郵件驗證實現註冊登入
阿新 • • 發佈:2018-12-19
第一步:安裝郵箱伺服器和客戶端
第二步:專案匯入郵件jar包 ( 密碼:mben)
第三步:專案中使用程式碼傳送郵件
我的資料庫user表:
專案中傳送郵件的程式碼體現在service中:
public interface IUserService {
User queryOne(User user)throws Exception;
void update(User user)throws Exception;
void addUser(User user)throws Exception;
}
@Service public class UserServiceImpl implements IUserService { @Autowired private UserDaoImpl dao; @Override public User queryOne(User user) throws Exception { return dao.queryOne(user); } @Override public void update(User user) throws Exception { System.out.println(user.getUuid()); dao.update(user); } @Override public void addUser(User user) throws Exception { user.setUuid(UUID.randomUUID().toString());//生成一個uuid dao.addUser(user); //傳送郵件 Properties prop = new Properties(); prop.setProperty("mail.host", "192.168.43.66");//192.168.43.66 --> 本地ip地址 prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.auth", "true"); // 使用JavaMail傳送郵件的5個步驟 // 1、建立session Session session = Session.getInstance(prop); // 開啟Session的debug模式,這樣就可以檢視到程式傳送Email的執行狀態 session.setDebug(true); // 2、通過session得到transport物件 Transport ts = session.getTransport(); // 3、使用郵箱的使用者名稱和密碼連上郵件伺服器,傳送郵件時,發件人需要提交郵箱的使用者名稱和密碼給smtp伺服器,使用者名稱和密碼都通過驗證之後才能夠正常傳送郵件給收件人。 ts.connect("192.168.43.66", "a", "a"); // 4、建立郵件 Message message = createSimpleMail(session,user.getUuid()); // 5、傳送郵件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); } public MimeMessage createSimpleMail(Session session,String uuid) throws Exception { // 建立郵件物件 MimeMessage message = new MimeMessage(session); // 指明郵件的發件人 message.setFrom(new InternetAddress("
[email protected]")); // 指明郵件的收件人,現在發件人和收件人是一樣的,那就是自己給自己發 message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]")); // 郵件的標題 message.setSubject("只包含文字的簡單郵件"); // 郵件的文字內容 message.setContent("你好:<a href='http://localhost:8080/zq/update.do?uuid="+uuid+"'>驗證使用者註冊</a>", "text/html;charset=UTF-8"); // 返回建立好的郵件物件 return message; } }
dao層實現資料的增刪改查:
public interface IUserDao {
User queryOne(User user)throws Exception;
void update(User user)throws Exception;
void addUser(User user)throws Exception;
}
@Repository public class UserDaoImpl implements IUserDao { @Autowired private JdbcTemplate jt; @Override public User queryOne(User user) { User u = null; try { String sql = "select * from user where isenabled=true and username=?"; //如果不捕獲異常 --> ResultSet is empty u = (User) jt.queryForObject(sql, new BeanPropertyRowMapper(User.class), user.getUsername()); } catch (Exception e) { e.printStackTrace(); return null; } return u; } @Override public void update(User user) throws Exception { System.out.println("updateUser======"); String sql="update user set isenabled=true,uuid=null where uuid=?"; jt.update(sql,user.getUuid()); System.out.println("updateUser==後======"); } @Override public void addUser(User user) throws Exception { System.out.println("addUser======"); String sql="insert into user(username,password,uuid) values(?,?,?)"; jt.update(sql,user.getUsername(),user.getPassword(),user.getUuid()); System.out.println(sql+"-======-"); } }
controller控制層做頁面跳轉邏輯處理:
@Controller
public class LoginController {
@Autowired
private UserServiceImpl service;
@RequestMapping("/login.do")
public String login(User user,HttpSession session) throws Exception {
User u = service.queryOne(user);
if (u == null) {
return "redirect:/login.html";
} else {
if (user==null || !user.getPassword().equals(u.getPassword())) {
return "redirect:/login.html";
}
}
session.setAttribute("user", u);
return "/index.html";
}
@RequestMapping("/signup.do")
public String signup(User user) throws Exception{
/**
* 註冊使用者
* 1.儲存資料
* 2.傳送郵件
*/
System.out.println("signup.do前====");
service.addUser(user);
System.out.println("signup.do新增後====");
return "redirect:/login.html";
}
//驗證方法 127.0.0.1/zq/update?uuid=值
@RequestMapping("/update.do")
public String update(User user) throws Exception{
/**
* 註冊使用者
* 1.儲存資料
* 2.傳送郵件
*/
service.update(user);
return "redirect:/login.html";
}
}
登入註冊頁面-->寫的很簡單,主要看郵件驗證的功能實現
login.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登入頁面</title>
</head>
<body align="center">
<h1>登入頁面</h1>
<form action="/zq/login.do" method="post">
使用者名稱:<input type="text" name="username" placeholder="賬號/手機號/郵箱"><br />
密碼:<input type="text" name="password" placeholder="密碼"><br />
<button type="submit">登 錄</button>
</form>
</body>
</html>
register.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body align="center">
<h1>註冊頁面</h1>
<form action="/zq/signup.do" method="post">
使用者名稱:<input type="text" name="username" placeholder="使用者名稱"><br />
密碼:<input type="text" name="password" placeholder="密碼"><br />
<input type="submit"><br />
</form>
</body>
</html>
具體程式碼看分享的專案資源吧~ 密碼: v5yw
這裡簡單說下我的郵箱設定之類的吧
郵箱服務端: -->我新建的是a和b兩個賬號
郵箱客服端:
傳送郵件