通过spring可以实现简单的邮箱找回密码的功能,在此做一下简单的笔记。
1.首先就是导入一些相关的jar包
2.加入配置文件,具体配置信息如下:
encoding="UTF-8"?>
/p>
2.0//EN"
class="org.springframework.mail.javamail.JavaMailSenderImpl">
smtp.163.com
name="javaMailProperties">
key="mail.smtp.auth">true
java19881012@163.com
邮箱密码
class="org.springframework.mail.SimpleMailMessage">
java19881012@163.com
湖南工程学院基建处后台管理找回密码
class="com.hnie.utils.MailSenderJob">
name="mailMessage">
name="mailSender">
3.写好配置文件后就再建立发送邮件的工具类com.hnie.utils.MailSenderJob
package
com.hnie.utils;
import
org.springframework.mail.MailSender;
import
org.springframework.mail.SimpleMailMessage;
public
class MailSenderJob {
private
static final long serialVersionUID = 1L;
private
MailSender mailSender;
private
SimpleMailMessage mailMessage;
public
void sendMail(String emal, String text) {
//
收件人的邮箱
mailMessage.setTo(emal);
SimpleMailMessage
message = new SimpleMailMessage(mailMessage);
message.setText(text);
mailSender.send(message);
}
public
MailSenderJob() {
}
public
MailSender getMailSender() {
return
mailSender;
}
public
void setMailSender(MailSender mailSender) {
this.mailSender
= mailSender;
}
public
SimpleMailMessage getMailMessage() {
return
mailMessage;
}
public
void setMailMessage(SimpleMailMessage mailMessage) {
this.mailMessage
= mailMessage;
}
}
4.写好工具类后就可以在action处理具体的业务操作了。在这里找回密码的方式是通过给用户邮箱发送一个验证码(验证码是一个随机的六位数,将其放在session中,存活周期设为半个小时),通过验证码后再修改密码,本实例是使用了strut1,具体的配置如下
path="/mail/findPass" name="userForm" scope="request"
parameter="method">
name="find"
path="/page/control/findpass/findPwd.jsp"/>
name="update"
path="/page/control/findpass/findPwd2.jsp"/>
Action处理类
@Controller("/mail/findPass")
public
class MailPassAction extends DispatchAction {
@Resource(name
= "userServiceBean")
private
UserService userService;
public
ActionForward sendPass(ActionMapping mapping, ActionForm
form,
HttpServletRequest
request, HttpServletResponse response) throws Exception
{
UserForm
formbean = (UserForm) form;
User
user=null;
try
{
user =
userService.findByloginid(formbean.getLoginid());
} catch
(Exception e) {
request.setAttribute("mess",
"输入信息不合法!");
return
mapping.findForward("find");
}
//
创建一个session
HttpSession
session = request.getSession();
String
sessionId = session.getId();
//
将sessionId写到cookie中
Cookie
cookie = new Cookie("JSESSIONID", sessionId);
cookie.setMaxAge(30
* 60);
response.addCookie(cookie);
//
向session放入随即数
String
random = getRandomNum() + "";
session.setAttribute("random",
random);
//从spring中获取bean
ApplicationContext
cxt = new ClassPathXmlApplicationContext("beans.xml");
MailSenderJob
send = (MailSenderJob) cxt.getBean("sender");
if
(user != null) {
//
将随机数发送到邮件中,内容是一个网址,包括用户id和用户类型
String
url = request.getRequestURL().toString()
+
"?method=update&&loginid=" +
formbean.getLoginid();
String
text = user.getUsername() + "您好,您本次修改密码的随机数是" +
random
+
",有效时间为半小时,请点击"
+ url + "进行密码修改。";
try
{
send.sendMail(user.getEmail(),
text);
request.setAttribute("mess","验证码已发送到邮箱,请登录邮箱进行密码修改!");
return
mapping.findForward("find");
} catch
(Exception e) {
request.setAttribute("mess",
"网络异常,邮件发送失败,请重新发送");
return
mapping.findForward("find");
}
} else
{
request.setAttribute("mess",
"输入信息不合法!");
return
mapping.findForward("find");
}
}
//
随即生成六位数
private
int getRandomNum() {
Random
r = new Random();
return
r.nextInt(900000) + 100000;
}
//修改密码
public
ActionForward update(ActionMapping mapping, ActionForm
form,
HttpServletRequest
request, HttpServletResponse response) throws Exception
{
UserForm
formbean = (UserForm) form;
//将用户信息写到回话中
request.getSession().setAttribute("loginid",
formbean.getLoginid());
return
mapping.findForward("update");
}
public
ActionForward update2(ActionMapping mapping, ActionForm
form,
HttpServletRequest
request, HttpServletResponse response) throws Exception
{
UserForm
formbean = (UserForm) form;
HttpSession
session = request.getSession();
String
old =null;
try
{
old =
session.getAttribute("random").toString();
} catch
(Exception e) {
request.setAttribute("mess",
"验证码获取失败,请使用同一浏览器访问!");
return
mapping.findForward("update");
}
if(old==null){
request.setAttribute("mess",
"验证码获取失败,请使用同一浏览器访问!");
return
mapping.findForward("update");
}
if
(old.equals(formbean.getCheckNum())) {
//
验证码正确,修改密码
User
user = userService.findByloginid(formbean.getLoginid());
user.setPassword(formbean.getNewPass());
userService.update(user);
request.setAttribute("mess",
"密码修改成功,请返回登录!");
return
mapping.findForward("update");
} else
{
request.setAttribute("mess",
"验证码错误");
return
mapping.findForward("update");
}
}
}
5.建立简单的jsp界面(写出主要的表单代码)
登录用户注册的邮箱
点击地址跳转到修改密码的界面