您的位置:首页 > 其它

SSH框架搭建电商系统之密码找回

2017-03-31 22:38 267 查看
1.导入Spring发邮件需要的Jar包:   mail.jar    activation.jar

2.邮箱设置打开smtp协议,并看好端口号,设置好密码(接下来的配置有用)。我用的是163邮箱为例,在applicationContext.xml里完成发件邮箱的配置。 <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.163.com" />
<property name="port" value="25" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />

<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
</props>
</property>
</bean>3.在action里编写seekpassword()方法,注入Service。判断是否用户名和Email匹配,若匹配则设置邮箱收发地址,主题与文字(文字包括时间,用户名及随机产生的临时密码),若不匹配则返回错误信息actionError。
public String seekpassword(){

System.out.println(admin.getAdminEmail());
Admin newAdmin = adminService.seekpassword(admin);
if(newAdmin == null){
this.addActionError("用户名和电子邮箱不匹配!");
return "WRONGEMAIL";
}else{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
JavaMailSender mailSender= (JavaMailSender) context.getBean("mailSender");
SimpleMailMessage mail = new SimpleMailMessage();
mail.setFrom("${username}");
mail.setTo(admin.getAdminEmail());
mail.setSubject(" 电子商城密码找回!");
mail.setText("亲爱的管理员" + admin.getAdminUser() + ",您好!"+"\n"
+ "您在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "提交找回密码的请求。"
+ "以下是您的帐户及密码信息:" + "\n"
+ "用户名:" + newAdmin.getAdminUser() + "\n" + ",密码:" + newAdmin.getAdminPass() + "\n"
+ "该密码是临时密码,请您尽快修改密码,感谢使用本系统。" + "\n"
+ "此为自动发送邮件,请勿直接回复!" );
mailSender.send(mail);
return INPUT;

}

4.serviceImpl里分两个Dao实现类,findbyAdminUserAndAdminEmail(admin)[确认用户名和电子邮箱匹配],changePasswordBySendMail(testAdmin)[给查到的用户名初始化随即密码]。

5.Dao层分别实现方法,代码如下:

(1)findbyAdminUserAndAdminEmail(admin)

/**
* 通过管理员用户名和管理员Email查询管理员
*/
public Admin findbyAdminUserAndAdminEmail(Admin admin) {
// TODO Auto-generated method stub
String hql = "from Admin where adminUser=? and adminEmail=?";
List<Admin> list = this.getHibernateTemplate().find(hql,admin.getAdminUser(),admin.getAdminEmail());
if(list.size()>0)
{
return list.get(0);
}else{
return null;
}

[b](2)changePasswordBySendMail(testAdmin):[md5加密代码会在我另一篇博客分享],将未加密的随机密码存入admin对象中。
[/b]

/**
* 赋予管理员六位初始化密码
*/
public Admin changePasswordBySendMail(Admin admin) {
// TODO Auto-generated method stub
int newPass = (int) ((Math.random()*9+1)*100000);
String newPass1 = String.valueOf(newPass);
admin.setAdminPass(Md5Utils.md5(newPass1));
this.getHibernateTemplate().update(admin);
admin.setAdminPass(newPass1);
return admin;
}


6.完成功能! ps:关于sendmail的jar 会在我的资源中分享。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: