java邮箱找回密码_Spring实现简单的邮箱找回密码功能

通过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界面(写出主要的表单代码)

a4c26d1e5885305701be709a3d33442f.png

登录用户注册的邮箱

a4c26d1e5885305701be709a3d33442f.png

点击地址跳转到修改密码的界面

a4c26d1e5885305701be709a3d33442f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值