当前位置:首页 > 开发 > IT生活 > 正文

dwr实现找回密码的功能

发表于: 2009-08-20   作者:chicony   来源:转载   浏览次数:
摘要: 需求:用户根据自己注册的账号、邮箱实现可以找回密码的功能。 实现:就是根据正确的账号、邮箱,实现自动发邮件的功能。 下面看我的实现过程: 先看两个配置文件: 1.db.properties database.driver_class=oracle.jdbc.driver.OracleDriver database.url=jdbc:oracle:thin:@webnet
需求:用户根据自己注册的账号、邮箱实现可以找回密码的功能。
实现:就是根据正确的账号、邮箱,实现自动发邮件的功能。

下面看我的实现过程:

先看两个配置文件:
1.db.properties
database.driver_class=oracle.jdbc.driver.OracleDriver
database.url=jdbc:oracle:thin:@webnet:1521:orcl
database.username=baseext
database.password=11


2.mail.properties
mail.account=wenbinandy@gmail.com
mail.password=*******
mail.host=smtp.gmail.com


DAO层UnionUsersDAO查询数据库得到密码
public String getPassword(String account,String email) throws Exception{
	    InputStream inputStream =this.getClass().getClassLoader().getResourceAsStream("db.properties");    
	    Properties p = new Properties();    
		try {    
			p.load(inputStream);
		    inputStream.close();
		} catch (IOException e1) {    
		    e1.printStackTrace();    
		}    
	   	String drivers	= p.getProperty("database.driver_class");
		String url		= p.getProperty("database.url");
		String user		= p.getProperty("database.username");
		String password = p.getProperty("database.password");
	    Connection conn = null;
	    Statement stat = null;
	    ResultSet rs = null;
	    String passWord = "";
	    try{
	        Class.forName(drivers);
			conn = DriverManager.getConnection(url, user, password);
			stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
					                    ResultSet.CONCUR_READ_ONLY);
			String sql = "select c_password from union_users where c_account='"+account+"' and c_email ='"+email+"'";
			rs = stat.executeQuery(sql);
			while(rs.next()){
				passWord = rs.getString(1);
			}
	     }catch(Exception e){
	          e.printStackTrace();
	     }finally{
			 if(rs!=null){
				rs.close();
				rs=null;
		     }
	         if(stat!=null){
				stat.close();
				stat=null;
			 }
			 if(conn!=null){
				conn.close();
				conn=null;
			 }
	     }
	     return passWord;
	} 



Service层UnionUsersServiceImpl
public String getPassword(String account, String email){
		try {
			return this.getUnionUsersDao().getPassword(account, email);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "";
	}



applicationContext.xml中相关配置
         <!--  dao 注入-->
	<bean id="UnionUsersDAO" class="com.ao.dao.UnionUsersDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>

         <!--  service 注入-->
	<bean id="unionUsersService"
		class="com.ao.service.impl.UnionUsersServiceImpl">
		<property name="unionUsersDao">
			<ref bean="UnionUsersDAO" />
		</property>
	</bean>


dwr.xml中的配置
       <create creator="spring" javascript="UsersService" scope="application">
	      <param name="beanName" value="unionUsersService" />
        </create>

        <create creator="new" javascript="SendMail" scope="application">
	      <param name="class" value="com.ao.web.util.SendMail" />
        </create>


com.ao.web.util.SendMail
package com.ao.web.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class SendMail {

	// Smtp服务IP;
	private String host = null;

	// 发送者邮箱;
	private String from = null;

	// 接收者邮箱;
	private String to = null;

	// 本地附件;
	private String fileAttachment = null;

	// 邮件主题;
	private String subject = null;

	// 邮件内容;
	private String text = null;

	public String getFileAttachment() {
		return fileAttachment;
	}

	public void setFileAttachment(String fileAttachment) {
		this.fileAttachment = fileAttachment;
	}

	public String getFrom() {
		return from;
	}

	public void setFrom(String from) {
		this.from = from;
	}

	public String getHost() {
		return host;
	}

	public void setHost(String host) {
		this.host = host;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}

	public String getTo() {
		return to;
	}

	public void setTo(String to) {
		this.to = to;
	}

	public boolean sendM() {
		try {
			// system properties
			java.security.Security
					.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
			final Properties props = new Properties();
			props.put("mail.transport.protocol", "smtp");
			props.put("mail.smtp.starttls.enable", "true");
			props.put("mail.smtp.host", host);
			props.put("mail.smtp.port", "465");
			props.put("mail.smtp.timeout", "25000");
			props.put("mail.smtp.auth", "true");
			props.put("mail.smtp.socketFactory.class",
					"javax.net.ssl.SSLSocketFactory");
			props.put("mail.smtp.socketFactory.fallback", "false");

			InputStream inputStream = this.getClass().getClassLoader()
					.getResourceAsStream("mail.properties");
			Properties p = new Properties();
			try {
				p.load(inputStream);
				inputStream.close();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			final String account = p.getProperty("mail.account");
			final String password = p.getProperty("mail.password");

			// 获取 session
			Session sendMailSession = Session.getInstance(props,
					new Authenticator() {
						public PasswordAuthentication getPasswordAuthentication() {
							return new PasswordAuthentication(account, password);
						}
					});

			// 声名 message
			MimeMessage message = new MimeMessage(sendMailSession);
			message.setFrom(new InternetAddress(from));
			message.addRecipient(Message.RecipientType.TO, new InternetAddress(
					to));
			message.setSubject(subject);
			message.setSentDate(new Date());

			// 建立 message part
			MimeBodyPart messageBodyPart = new MimeBodyPart();

			// 内容;
			messageBodyPart.setText(text);
			Multipart multipart = new MimeMultipart();
			multipart.addBodyPart(messageBodyPart);
			// 附件;
			messageBodyPart = new MimeBodyPart();
			if (fileAttachment != null && !fileAttachment.equals("")) {
				DataSource source = new FileDataSource(fileAttachment);
				messageBodyPart.setDataHandler(new DataHandler(source));
				messageBodyPart.setFileName(fileAttachment);
				multipart.addBodyPart(messageBodyPart);
			}

			message.setContent(multipart);
			// 发送邮件;
			Transport.send(message);
			return true;
		} catch (MessagingException m) {

			m.printStackTrace();
			return false;

		}
	}

	public int send(String to, String title, String text, String path) {
		InputStream inputStream = this.getClass().getClassLoader()
				.getResourceAsStream("mail.properties");
		Properties p = new Properties();
		try {
			p.load(inputStream);
			inputStream.close();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		String account = p.getProperty("mail.account");
		String host = p.getProperty("mail.host");
		SendMail sm = new SendMail();
		sm.setFileAttachment(path); // 本地附件;
		sm.setFrom(account); // 发送者邮箱;
		sm.setTo(to); // 接收者邮箱;
		sm.setHost(host); // Smtp服务IP;
		sm.setSubject(title); // 邮件主题
		sm.setText(text); // 邮件内容
		int i = -1;
		if (sm.sendM()) {
			i = 1;
		} else {
			i = 2;
		}
		return i;
	}
}



getPassword.jsp中调用
<script type='text/javascript' src='<%=path%>/dwr/interface/UsersService.js'></script>
		<script type='text/javascript' src='<%=path%>/dwr/interface/SendMail.js'></script>
        <script type='text/javascript' src='<%=path%>/dwr/engine.js'></script>
		<script type='text/javascript' src='<%=path%>/dwr/util.js'></script>
		<script type="text/javascript">
			function Trim(str){ 
	            return str.replace(/^\s*|\s*$/g,""); 
	         }
			function getPassword(){
				var account = document.getElementById("account").value;
				var email = document.getElementById("email").value;
				//var passCode = document.getElementById("getPassword_passCode").value; 
				
				if(Trim(account)==""||Trim(email)==""){
		     		alert("所填信息均不能为空!");
		     		return ;
		     	}
		     	if (email !=""&&email.search(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ ) == -1){
		     	    alert("邮箱格式不对!");
		     		return ;
		     	}
		     	
		     	UsersService.getPassword(account,email,function(result){
			     	if(result==""){
			     		window.alert("账号或邮箱错误!");
			     	}else { 
			     	    var title = "找回密码";
			     	    var text = "你的账号密码为:"+result+",请妥善保管密码!";
			     	    var path = "";//附件路径
			     		SendMail.send(email, title, text, path,function(date){
			     		   if(date==1){
			     			    window.alert("密码已经发送到你的邮箱!");
			     			    window.close();
			     			}else{
			     			    window.alert("密码发送到失败,请稍后再试!");
			     			}
			     		});
			     	}
		     	});
			}
        </script>


dwr实现找回密码的功能

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
java web实现 忘记密码(找回密码)功能及代码 (一).总体思路 (二).部分截图 (三).部分代码 (一).总
通过邮件找回密码功能的实现 1、最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回。现在的
最近根据公司需求,写个邮件发送。 这里面的传入的地址信息的参数都是经过加密的。 主要是保证用户
原文: C# Email邮件发送,功能是密码找回或者重置功能。 最近根据公司需求,写个邮件发送。 这里面的
利用的是一种默认的配置。 User和Message是2个Javabean,封装用户及消息数据。 ChatLogon负责登录后
linux玩了一段时间,又有一个月没有动linux了,天天忙着写业务逻辑去了。今天又要用到linux服务器了
linux玩了一段时间,又有一个月没有动linux了,天天忙着写业务逻辑去了。今天又要用到linux服务器了
“忘记了CentOS(Linux)root管理密码怎么办?可以通过单用户模式进去系统来修改root密码。 ” 有些
生活中,容易忘记Oracle数据库system用户的密码,怎么办呢,小生带你一步步重新登上Oracle ,及时你
1.通过Windows Server 2008 R2的安装光盘引导计算机启动,映像加载完毕后 ,按 Shift+F10 ,打开命
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号