项目案例 || 如何快速实现邮箱注册

会员免费获取本源码及其他资源,加入会员群链接:学习资源分享群,你值得进入

说起Web项目,学过Java的一定都做过很多,今天就介绍一个常用的功能——邮箱注册

这个功能主要针对面向大众的一些在线系统,比如我们平时注册一些网站,都需要首先提供邮箱,然后系统自动发送邮件到注册邮箱,激活验证通过后才能使用。

项目介绍

我们首先搭建项目,框架和数据库随意,演示系统使用的是Servlet,数据库使用Mysql。

项目结构图如下:

Mysql数据库

演示操作

具体实现

为了简化操作,项目只有注册功能。在register页面右键run as,启动后填写注册信息,注册成功后跳转到login,失败跳转到msg。具体细节操作在Servlet,下面我们详细介绍。

Jsp页面创建一个Form,填写注册信息:

<div class="col-md-12" style="width:100%;background:url('${pageContext.request.contextPath}/images/regist_bg.jpg');">
			<div class="col-md-2"></div>
			<div class="col-md-8" style="background:#fff;padding:40px 80px;margin:30px 30px 20px 45px ;border:7px solid #ccc;width:70%">
				<font>会员注册</font>USER REGISTER
				<form class="form-horizontal" name="f_reg" style="margin-top:5px;" method="post" action="${pageContext.request.contextPath}/register" onsubmit="return checkFrom()">
					 <div class="form-group">
					    <label for="username" class="col-sm-2 control-label">用户名</label>
					    <div class="col-sm-6">
					      <input type="text" class="form-control" id="username" placeholder="请输入用户名  字母开头后跟数字或下划线" name="username">
					    </div>
					  </div>
					   <div class="form-group">
					    <label for="inputPassword3" class="col-sm-2 control-label">密码</label>
					    <div class="col-sm-6">
					      <input type="password" class="form-control" id="inputPassword3" placeholder="请输入密码,至少6位" name="password">
					    </div>
					  </div>
					   <div class="form-group">
					    <label for="confirmpwd" class="col-sm-2 control-label">确认密码</label>
					    <div class="col-sm-6">
					      <input type="password" class="form-control" id="confirmpwd" placeholder="请输入确认密码" name="password2">
					    </div>
					  </div>
					  <div class="form-group">
					    <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
					    <div class="col-sm-6">
					      <input type="email" class="form-control" id="inputEmail3" placeholder="Email  如 haha520@163.com" name="email">
					    </div>
					  </div>
					 <div class="form-group">
					    <label for="usercaption" class="col-sm-2 control-label">姓名</label>
					    <div class="col-sm-6">
					      <input type="text" class="form-control" id="usercaption" placeholder="请输入姓名" name="realname">
					    </div>
					  </div>
					  <div class="form-group opt">  
					  <label for="inlineRadio1" class="col-sm-2 control-label">性别</label>  
					  <div class="col-sm-6">
					    <label class="radio-inline">
					  <input type="radio" name="sex" id="inlineRadio1" value="男" checked> 男
					</label>
					<label class="radio-inline">
					  <input type="radio" name="sex" id="inlineRadio2" value="女"> 女
					</label>
					</div>
					  </div>		
					  <div class="form-group">
					    <label for="date" class="col-sm-2 control-label">出生日期</label>
					    <div class="col-sm-6">
					      <input type="date" class="form-control" placeholder="请输入日期" onclick="laydate()"  name="birthday">		      
					    </div>
					  </div>
					  <div class="form-group">
					    <div class="col-sm-offset-2 col-sm-10">
					      <input type="submit"  width="100" value="注册" name="submit" border="0"
						    style="background: url('${pageContext.request.contextPath}/images/register.gif') no-repeat scroll 0 0 rgba(0, 0, 0, 0);
						    height:35px;width:100px;color:white;">
					    </div>
					  </div>
				</form>
			</div>

Servlet中,我们需要使用163邮箱作为发送端,在里面配置上个人邮箱及密码即可,代码:

@SuppressWarnings("serial")
public class RegisterServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		
		String email = request.getParameter("email");
		Map<String, String[]> map = request.getParameterMap();
		//2、封装成User对象
		User u = new User();
		MyBeanUtils.populate(u, map);
		//3、调用Service层完成功能
		UserService us = new UserServiceImpl();
		boolean b = us.insertUser(u);
		try { 
			String from = "你的邮箱"; // 获取发件人 
			String to = email; // 获取收件人 
			String subject = "恭喜你,注册成功"; // 获取邮件主题 
			String messageText = "欢迎你注册本网站,你现在已经注册成功,请返回到登录界面登录,更多优惠,更多精彩!"; // 获取邮件内容 
			String ddd = "邮箱密码"; // 获取发件人邮箱密码 
			String mailserver = "smtp.163.com"; // 指定SMTP服务器的主机名 
			// 建立邮件会话 
			Properties props = new Properties(); 
			props.put("http.proxySet","true");//设置代理主机参数  
			props.put("http.proxyHost","172.17.18.80");  
			props.put("http.proxyPort","8080");  
			props.put("mail.smtp.host", mailserver); // 指定SMTP协议 
			props.put("mail.smtp.auth", "true"); // 指定需要向服务器端提交身份认证 
			Session sess = Session.getInstance(props); // 获取session 
			sess.setDebug(true); // 设置调试标志 
			MimeMessage message = new MimeMessage(sess); // 新建一个消息对象 
			// 设置发件人 
			InternetAddress from_mail = new InternetAddress(from); 
			message.setFrom(from_mail); 
			// 设置收件人 
			InternetAddress to_mail = new InternetAddress(to); 
			message.setRecipient(Message.RecipientType.TO, to_mail); 
			// 设置主题 
			message.setSubject(subject); 
			// 设置内容 
			message.setText(messageText); 
			// 设置发送时间 
			message.setSentDate(new Date()); 
			// 发送邮件 
			message.saveChanges(); // 保证报头域同会话内容保持一致 
			Transport transport = sess.getTransport("smtp"); 
			transport.connect(mailserver, from, ddd); // 建立与邮件服务器之间的连接 
			transport.sendMessage(message, message.getAllRecipients()); // 发送邮件 
			transport.close(); // 关闭与邮件服务器之间的连接 
			//4、响应注册的结果		
			if(b){				
				request.setAttribute("msg","请到邮箱验证是否注册成功!");
				us.updatestatus(u);
				request.getRequestDispatcher("/jsp/msg.jsp").forward(request, response);
			}else{
				request.setAttribute("msg","对不起,注册失败,请联系管理员!");
				request.getRequestDispatcher("/jsp/msg.jsp").forward(request, response);
			}
			} catch (Exception e) { 
				request.setAttribute("msg","对不起,注册失败,请检查 邮箱是否正确!");
				request.getRequestDispatcher("/jsp/msg.jsp").forward(request, response);
			} 
	}

如果注册成功,则写入数据库中:

public class UserDaoImpl implements UserDao {
	//DBUtils的核心类,用于执行sql语句的核心对象
	private QueryRunner runner = new  QueryRunner();
	//1、注册用户的方法
	public int insertUser(User u) {
		//1、编写sql
		String sql = "insert into user values(null,?,?,?,?,?,?,?,null)";
		//2、准备参数与结果集,参数为数组,结果集为int类型的结果
		Object[] parm = {u.getUsername(),u.getPassword(),u.getRealname(),u.getEmail(),u.getSex(),u.getBirthday(),0};
		int i=0;
		try {
			//3、获取连接对象,使用QueryRunner对象执行sql语句
			i=runner.update(JDBCUtils.getConnection(), sql, parm);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return i;
	}
	
	
	public int updatestatus(User u) {
		//1、编写sql
		QueryRunner qr= new QueryRunner();
		String sql = "update user set status = ? where username = ?";
		try {
			qr.update(JDBCUtils.getConnection(), sql, 1,u.getUsername());
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return 1;
	}
	
}

以上就是具体实现过程,如果你有任何问题,欢迎留言,我们共同交流讨论。

获取源码请进行下载。

资源下载价格5立即支付
注意:(1)此购买内容包含源码,数据库文件,讲解视频,导入视频,售后服务(解答代码问题,请添加站长微信咨询),不包含远程调试。如果需要远程安装,请直接联系站长预约时间。另外,如果左方系统文章描述中涉及文档的说明或截图,表示含有文档,如未说明,均不包含文档。(2)此非实物交易,每个案例我们都经过严谨测试,购买后无质量问题不退款,请考虑好再购买。(3)如果需要定做毕业设计,或者购买等其它疑问,均可添加站长微信咨询,添加后勿问在否,直接说明来意。
资源下载价格5立即支付
注意:(1)此购买内容包含源码,数据库文件,讲解视频,导入视频,售后服务(解答代码问题,请添加站长微信咨询),不包含远程调试。如果需要远程安装,请直接联系站长预约时间。另外,如果左方系统文章描述中涉及文档的说明或截图,表示含有文档,如未说明,均不包含文档。(2)此非实物交易,每个案例我们都经过严谨测试,购买后无质量问题不退款,请考虑好再购买。(3)如果需要定做毕业设计,或者购买等其它疑问,均可添加站长微信咨询,添加后勿问在否,直接说明来意。
0
分享到:

评论0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
网站所有系统都包含源代码+数据库+导入视频+演示视频+典型代码讲解视频+远程部署成功+售后答疑,需要联系客服微信:mtyeducation
没有账号? 忘记密码?
豫ICP备19004322号-2