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

登录用户注册的邮箱

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

java邮箱找回密码_Spring实现简单的邮箱找回密码功能相关推荐

  1. java qq邮箱服务器端口_spring mail借助qq邮箱服务器发送邮件

    spring mail封装了javaMail的邮件服务,让邮件服务使用起来更简单,下面以qq邮箱服务器为例,用spring mail服务来发送邮件 配置qq邮箱,"设置"--&qu ...

  2. java spring mvc 实例_spring mvc 简单实例

    转至:http://blog.csdn.net/dingx/article/details/2242105 Spring Framework可以被使用在很多场合之中,考虑到目前大多数Java EE的项 ...

  3. input正则邮箱_用正则表达式进行简单的邮箱校验

    先说一波正则表达式的元字符: d               表示数字 w               表示数字,字母和下划线 s               表示空格和制表符 D           ...

  4. 邮箱密码忘记了怎么办?邮箱密码找回技巧

    有没有小伙伴像我一样经常忘记自己的各种密码的?支付密码,银行卡密码,视频密码,社交账号密码等等,也不是密码多复杂就是很容易忘记.导致帐号不是被锁定就是联系平台重置密码,大部分平台密码找回流程都比较繁琐 ...

  5. java学习笔记——众筹项目练习——项目中的忘记密码(密码找回)与记住我(自动登录)功能 和 返回json数据低版本浏览器显示下载问题的解决、众筹系统架构重构

                                          忘记密码(密码找回) 忘记密码(密码找回)这个功能可以说是目前所有为别人提供服务的软件系统都具备的基础功能啦!很普遍,因为总 ...

  6. django重置密码发送html邮件,django 开发忘记密码通过邮箱找回功能示例

    一.流程分析: 1.点击忘记密码====>forget.html页面,输入邮箱和验证码,发送验证链接网址的邮件====>发送成功,跳到send_success.html提示 2.到邮箱里找 ...

  7. SVN远程改密码的超简单的java实现

    SVN远程改密码的超简单的java实现java源码下载地址 对于使用VisualSVNServer的免费使用者来说,为方便用户的使用,远程改密是十分必要滴.对于只会java开发的程序员来说,按照以下的 ...

  8. bilibili账号申诉中心_b站(bilibili)账号忘记密码了怎么办?如何用邮箱找回?找回得多久?...

    哔哩哔哩忘记密码了怎么办?忘记了b站会员账号登录密码的话要怎么找回呢?不记得密码了的用户可以来看下文教程方法找回哦. 哔哩哔哩忘记密码怎么办?怎么用邮箱找回?(快速涨粉上热门!就去B站助推网) 1.进 ...

  9. Java实现QQ邮箱验证激活 Java简单发送邮箱

    Java简单发送邮箱 1.首先要去qq邮箱 设置–账户–把所有服务都开启 (记住其中任意一个授权码就OK了) 如下图: 2. 导入jar包 创建测试类 (复制即可) 如下: package testE ...

最新文章

  1. 使用WinSCP上传文件到指定服务器
  2. linux怎么添加工作组,linux 用户与工作组
  3. Codeforces Round #245 (Div. 1) E. Points and Segments 欧拉回路 + 建模
  4. Windows下安装Python模块时环境配置
  5. 为什么服务端程序都需要先 listen 一下?
  6. ZZULIOJ 1117: 查找数组元素
  7. java 网络编程学习笔记
  8. php markdown 电子书_PHP Markdown转PDF解决方案
  9. 【语言学习】Java
  10. 在线英英词典完整代码
  11. 最新MTK刷机工具资料(SP_Flash_Tool_exe_Windows_v5.1844.00.000)
  12. 77GHz雷达信号处理流程框图及应用方案
  13. 2022“杭电杯”中国大学生算法设计超级联赛(5)杭电多校第五场
  14. java8中switch不能,switch 语句
  15. Java中内存溢出和内存泄露详解
  16. php中函数trim,PHP中的trim函数怎么用
  17. nand flash多少次写_这个比QQ空间还古老的网站,是多少女孩的精神家园?
  18. 《吴军 阅读与习作讲义》 序和第3章 日常实用写作
  19. Aptana插件ZIP包下载方法
  20. 【PP-YOLOE+】第18届全国大学生智能汽车竞赛百度完全模型组线上资格

热门文章

  1. {网络编程}和{多线程}应用:基于UDP协议【实现多发送方发送数据到同一个接收者】--练习
  2. 华为手机怎么隐藏按键图标_华为手机8个隐藏功能,快来看看有没有你不知道的...
  3. Android中基于TCP协议的网络通信之使用Socket进行通信
  4. 利用Spring的Aop实现项目的日志监控
  5. 百度云android隐藏空间,一招教你使手机端百度网盘中的隐藏空间在文件列表中显示出来...
  6. linux最常用的目录表示,Linux磁盘分区的命名方式和常用目录?【每日一个知识点第84期-Linux】...
  7. linuxsed替换字符串后保存_字符串方法——replace()
  8. 从零入门 Serverless | 一文详解 Serverless 技术选型
  9. php查询跳转结果页面,登录判断跳转页面
  10. c语言以冒号分割字符串,C语言里面的冒号