J2EE 之 邮箱激活示例(一)

直接上代码了:

com.ethan.accountactivate.domain

package com.ethan.accountactivate.domain;

public class User {
	private int id;
	private String name;
	private String password;
	private String email;
	private boolean activated;
	private String randKey;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public boolean isActivated() {
		return activated;
	}
	public void setActivated(boolean activated) {
		this.activated = activated;
	}
	public String getRandKey() {
		return randKey;
	}
	public void setRandKey(String randKey) {
		this.randKey = randKey;
	}
	
}
com.ethan.accountactivate.dao

package com.ethan.accountactivate.dao;

import com.ethan.accountactivate.domain.User;

public interface UserDao {
	void addUser(User user);
	void updateUser(User user);
	User findUserById(int id);
	User findUserByName(String name);
}

没有使用任何数据库,直接利用内存了。

com.ethan.accountactivate.dao.impl

package com.ethan.accountactivate.dao.impl;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;

import com.ethan.accountactivate.dao.UserDao;
import com.ethan.accountactivate.domain.User;

public class UserDaoImpl implements UserDao {
	
	private UserDaoImpl() {}
	private static UserDaoImpl instance = new UserDaoImpl();
	public static UserDaoImpl getInstance() {
		return instance;
	}
	Map<Integer,User> users = new HashMap<Integer,User>();
	private int nextId = 1;
	@Override
	public void addUser(User user) {
		user.setId(nextId++);
		//增加用户的时候产生randKey
		user.setRandKey(UUID.randomUUID().toString());
		users.put(user.getId(), user);
	}

	@Override
	public void updateUser(User user) {
		users.put(user.getId(), user);
	}

	@Override
	public User findUserById(int id) {
		
		return users.get(id);
	}

	@Override
	public User findUserByName(String name) {
		Collection values = users.values();
		Iterator<User> itr = values.iterator();
		while(itr.hasNext()) {
			User user = itr.next();
			if(user.getName().equals(name)) {
				return user;
			}
		}
		return null;
	}
	
}

com.ethan.accountactivate.servlets

package com.ethan.accountactivate.servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class RegisterUserUI extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public RegisterUserUI() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.getRequestDispatcher("/WEB-INF/pages/registerUserUI.jsp").forward(request, response);
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}

package com.ethan.accountactivate.servlets;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ethan.accountactivate.dao.UserDao;
import com.ethan.accountactivate.dao.impl.UserDaoImpl;
import com.ethan.accountactivate.domain.User;
import com.ethan.accountactivate.utils.AccountActivateUtil;
import com.ethan.accountactivate.utils.EmailUtil;

public class RegisterUser extends HttpServlet {
	
	//要做成单例,否则各种操作的servlet中的dao(内存)不一致,users map没有意义
	private UserDao userDao = UserDaoImpl.getInstance();
	/**
	 * Constructor of the object.
	 */
	public RegisterUser() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		String password2 = request.getParameter("password2");
		String email = request.getParameter("email");
		
		//记录错误信息
		Map<String,String> errors = new HashMap<String,String>();
		
		if(userName==null||userName.trim().length()<=0) {
			errors.put("userName", "必须输入用户名!");
		} else if(userName!=null&&userDao.findUserByName(userName)!=null) {
			errors.put("userName", "用户已存在!");
		}
		if(password==null||password.trim().length()<3) {
			errors.put("password", "密码至少要有3个字符!");
		} else if(password!=null&&!password.equals(password2)) {
			errors.put("password2", "确认密码不一致!");
		}
		
		if(email==null||!email.matches("[a-zA-Z0-9\\._-]+@[a-zA-Z0-9\\._-]+(\\.[a-zA-Z0-9_-]+)+")) {
			errors.put("email", "email不合法!");
		}
		
		if(!errors.isEmpty()) {
			request.setAttribute("errors", errors);
			request.getRequestDispatcher("/RegisterUserUI").forward(request, response);
			return;
		}
		User user = new User();
		user.setName(userName);
		user.setPassword(password);
		user.setEmail(email);
		//user.setRandKey(UUID.randomUUID().toString());
		//采用内存数据库,hashMap
		userDao.addUser(user);
		
		request.getSession().setAttribute("user", user);
		
		try {
			EmailUtil.sendMail(user);
		} catch (Exception e) {
			System.out.println("send error");
			e.printStackTrace();
		}
		request.getRequestDispatcher("/WEB-INF/pages/registerUser.jsp").forward(request, response);
		return;
	}

	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}

package com.ethan.accountactivate.servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginUI extends HttpServlet {

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.getRequestDispatcher("/WEB-INF/pages/loginUI.jsp").forward(request, response);
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

}

package com.ethan.accountactivate.servlets;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ethan.accountactivate.dao.UserDao;
import com.ethan.accountactivate.dao.impl.UserDaoImpl;
import com.ethan.accountactivate.domain.User;

public class Login extends HttpServlet {

	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		
		//记录错误信息
		Map<String,String> errors = new HashMap<String,String>();
		
		if(userName==null||userName.trim().length()<=0) {
			errors.put("userName", "必须输入用户名!");
		} 
		
		UserDao userDao = UserDaoImpl.getInstance();
		User user = userDao.findUserByName(userName);
		
		if(user==null) {
			errors.put("userName", "用户名不存在!");
		} else {
			if(!user.getPassword().equals(password)) {
				errors.put("userName", "密码不对!");
			}
		}
		
		if(!errors.isEmpty()) {
			request.setAttribute("errors", errors);
			request.getRequestDispatcher("/LoginUI").forward(request, response);
			return;
		}
		
		request.getSession().setAttribute("user", user);
		request.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(request, response);
	}

	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

}

激活:

package com.ethan.accountactivate.servlets;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ethan.accountactivate.dao.UserDao;
import com.ethan.accountactivate.dao.impl.UserDaoImpl;
import com.ethan.accountactivate.domain.User;
import com.ethan.accountactivate.utils.AccountActivateUtil;

public class ActivateAccount extends HttpServlet {

	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String idValue = request.getParameter("id");
		int id = 0;
		try {
			id = Integer.parseInt(idValue);
			
		} catch (Exception e) {
			//一片空白
			return;
		}
		
		UserDao userDao = UserDaoImpl.getInstance();
		User user = userDao.findUserById(id);
		//user.setActivated(true);
		
		user.setActivated(AccountActivateUtil.verifyCheckcode(request, user));
		//内存中的对象,改了就会自动改。下边可以不要
		userDao.updateUser(user);
		request.getSession().setAttribute("user", user);
		request.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(request, response);
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值