package com.yc.wowo.servlets;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
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.yc.wowo.dao.DBHelper;
import com.yc.wowo.utils.SendEmail;
/**
* Servlet implementation class TestServlet
*/
public class TestServlet extends BasicServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String op=request.getParameter("op");
if(op!=null&&!"".equals(op)){
if("reg".equals(op)){
regOP(request,response);
}
}
}
private void regOP(HttpServletRequest request, HttpServletResponse response) {
DBHelper db=new DBHelper();
String email=request.getParameter("email");
String pwd=request.getParameter("pwd");
//创建激活码
Calendar c=Calendar.getInstance();
long time=c.getTimeInMillis();
String token=email+pwd+time;
//过期时间为24小时后
// int token_exptime=(int)(time+1000*60*60*24);
String tokenexptime=(time+1000*120)+"";
String id=UUID.randomUUID().toString();
System.out.println(id);
String sql="insert into tb_user(id,username,pwd,token,tokenexptime,regtime,status) values (?,?,?,?,?,sysdate,0)";
System.out.println(sql);
List<Object> params=new ArrayList<Object>();
params.add(id);
params.add(email);
params.add(pwd);
params.add(token);
params.add(tokenexptime); //这里测试是用的20秒
int r=db.doUpdate(sql, params);
if(r>0){
//发送邮件
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
StringBuffer sb=new StringBuffer("<div style=\"width:660px;overflow:hidden;border-bottom:1px solid #bdbdbe;\"><div style=\"height:52px;overflow:hidden;border:1px solid #464c51;background:#353b3f url(http://www.lofter.com/rsc/img/email/hdbg.png);\"><a href=\"http://www.lofter.com?mail=qbclickbynoticemail_20120626_01\" target=\"_blank\" style=\"display:block;width:144px;height:34px;margin:10px 0 0 20px;overflow:hidden;text-indent:-2000px;background:url(http://www.lofter.com/rsc/img/email/logo.png) no-repeat;\">LOFTER</a></div>"+"<div style=\"padding:24px 20px;\">您好,"+email+"<br/><br/>LOFTER是一款\"专注兴趣、分享创作\"的轻博客产品,旨在为\"热爱记录生活、追求时尚品质、崇尚自由空间\"的你,打造一个全新而定展示平台!<br/><br/>请点击下面链接激活账号,24小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!</br>");
sb.append("<a href=\"http://localhost:8080/wowo/EmailActivateCheckServlet?op=activate&id=");
sb.append(id);
sb.append("&token=");
sb.append(token);
sb.append("\">http://localhost:8080/wowo/EmailActivateCheckServlet?op=activate&id=");
sb.append(id);
sb.append("&token=");
sb.append(token);
sb.append("</a>"+"<br/>如果以上链接无法点击,请把上面网页地址复制到浏览器地址栏中打开<br/><br/><br/>LOFTER,专注兴趣,分享创作<br/>"+sdf.format(new Date())+ "</div></div>" );
//发送邮件
SendEmail.send(email, sb.toString());
}
try {
response.sendRedirect("DoEmailLoginServlet?op=emaillogin&email="+email+"&pwd="+pwd);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.yc.wowo.utils;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendEmail {
public static final String HOST = "smtp.163.com";
// public static final String PROTOCOL = "smtp";
// public static final int PORT = 25;
public static final String FROM = "zyt1227133794@163.com";//发件人的email
public static final String PWD = "zyt0818123";//发件人密码
/**
* 获取Session
* @return
*/
private static Session getSession() {
Properties props = new Properties();
props.put("mail.smtp.host", HOST);//设置服务器地址
// props.put("mail.store.protocol" , PROTOCOL);//设置协议
// props.put("mail.smtp.port", PORT);//设置端口
props.put("mail.smtp.auth" , "true");
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(FROM, PWD);
}
};
Session session = Session.getDefaultInstance(props , authenticator);
return session;
}
public static void send(String toEmail , String content) {
Session session = getSession();
try {
// System.out.println("--send--"+content);
// Instantiate a message
Message msg = new MimeMessage(session);
//Set message attributes
msg.setFrom(new InternetAddress(FROM));
InternetAddress[] address = {new InternetAddress(toEmail)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("账号激活邮件");
msg.setSentDate(new Date());
msg.setContent(content , "text/html;charset=utf-8");
//Send the message
Transport.send(msg);
}
catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
package com.yc.wowo.servlets;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.yc.wowo.dao.DBHelper;
import com.yc.wowo.entities.User;
/**
* Servlet implementation class EmailActivateCheckServlet
*/
public class EmailActivateCheckServlet extends BasicServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 取出op
String op = request.getParameter("op");
System.out.println(op);
// 判断op是什么,调用不同的方法做处理
try {
if (op != null && !"".equals(op)) {
if( "activate".equals(op)){
activateOP(request,response);
}
} else {
}
} catch (Exception e) {
e.printStackTrace();
response.sendRedirect("common/500.jsp");
}
}
private void activateOP(HttpServletRequest request,
HttpServletResponse response) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, Exception {
//获取参数token的值,即激活识别码。
//将它与数据表中的用户信息进行查询对比,如果有相应的数据集,判断是否过期,如果在有效期内则将对应的用户表中字段status设置1,即已激活,这样就完成了激活功能。
String id=request.getParameter("id");
String token=request.getParameter("token");
Calendar c = Calendar.getInstance();
//现在的时间(单位:毫秒)
long curtime = c.getTimeInMillis();
String sql="select id,tokenexptime,token,username,pwd from tb_user where status=0 and token=?";
List<Object> params=new ArrayList<Object>();
params.add( token );
DBHelper db=new DBHelper();
User u=db.findByone(sql, params, User.class);
String email=u.getUsername();
String pwd=u.getPwd();
if( u!=null ){
long token_exptime=Long.parseLong(u.getTokenexptime());
if( curtime>token_exptime ){
//激活码过期,先删除该用户记录,然后重新发送邮件
sql="delete from tb_user where id='"+u.getId()+"'";
db.doUpdate(sql, null);
response.sendRedirect("actionfailer.jsp?email="+email+"&pwd="+pwd);
// throw new DataExistAlreadyException("激活码已过期!");
return;
}else{
//验证激活码是否正确
if( token.equals(u.getToken())){
//激活成功, //并更新用户的激活状态,为已激活
sql="update tb_user set status=1 where id='"+u.getId()+"'";
db.doUpdate(sql, null);
response.sendRedirect("actionsuccess.jsp");
}else{
sql="delete from tb_user where id='"+u.getId()+"'";
db.doUpdate(sql, null);
response.sendRedirect("actionfailer.jsp?email="+email+"&pwd="+pwd);
return;
// throw new DataExistAlreadyException("激活码不正确");
}
}
}
}
}
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
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.yc.wowo.dao.DBHelper;
import com.yc.wowo.utils.SendEmail;
/**
* Servlet implementation class TestServlet
*/
public class TestServlet extends BasicServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String op=request.getParameter("op");
if(op!=null&&!"".equals(op)){
if("reg".equals(op)){
regOP(request,response);
}
}
}
private void regOP(HttpServletRequest request, HttpServletResponse response) {
DBHelper db=new DBHelper();
String email=request.getParameter("email");
String pwd=request.getParameter("pwd");
//创建激活码
Calendar c=Calendar.getInstance();
long time=c.getTimeInMillis();
String token=email+pwd+time;
//过期时间为24小时后
// int token_exptime=(int)(time+1000*60*60*24);
String tokenexptime=(time+1000*120)+"";
String id=UUID.randomUUID().toString();
System.out.println(id);
String sql="insert into tb_user(id,username,pwd,token,tokenexptime,regtime,status) values (?,?,?,?,?,sysdate,0)";
System.out.println(sql);
List<Object> params=new ArrayList<Object>();
params.add(id);
params.add(email);
params.add(pwd);
params.add(token);
params.add(tokenexptime); //这里测试是用的20秒
int r=db.doUpdate(sql, params);
if(r>0){
//发送邮件
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
StringBuffer sb=new StringBuffer("<div style=\"width:660px;overflow:hidden;border-bottom:1px solid #bdbdbe;\"><div style=\"height:52px;overflow:hidden;border:1px solid #464c51;background:#353b3f url(http://www.lofter.com/rsc/img/email/hdbg.png);\"><a href=\"http://www.lofter.com?mail=qbclickbynoticemail_20120626_01\" target=\"_blank\" style=\"display:block;width:144px;height:34px;margin:10px 0 0 20px;overflow:hidden;text-indent:-2000px;background:url(http://www.lofter.com/rsc/img/email/logo.png) no-repeat;\">LOFTER</a></div>"+"<div style=\"padding:24px 20px;\">您好,"+email+"<br/><br/>LOFTER是一款\"专注兴趣、分享创作\"的轻博客产品,旨在为\"热爱记录生活、追求时尚品质、崇尚自由空间\"的你,打造一个全新而定展示平台!<br/><br/>请点击下面链接激活账号,24小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!</br>");
sb.append("<a href=\"http://localhost:8080/wowo/EmailActivateCheckServlet?op=activate&id=");
sb.append(id);
sb.append("&token=");
sb.append(token);
sb.append("\">http://localhost:8080/wowo/EmailActivateCheckServlet?op=activate&id=");
sb.append(id);
sb.append("&token=");
sb.append(token);
sb.append("</a>"+"<br/>如果以上链接无法点击,请把上面网页地址复制到浏览器地址栏中打开<br/><br/><br/>LOFTER,专注兴趣,分享创作<br/>"+sdf.format(new Date())+ "</div></div>" );
//发送邮件
SendEmail.send(email, sb.toString());
}
try {
response.sendRedirect("DoEmailLoginServlet?op=emaillogin&email="+email+"&pwd="+pwd);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.yc.wowo.utils;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendEmail {
public static final String HOST = "smtp.163.com";
// public static final String PROTOCOL = "smtp";
// public static final int PORT = 25;
public static final String FROM = "zyt1227133794@163.com";//发件人的email
public static final String PWD = "zyt0818123";//发件人密码
/**
* 获取Session
* @return
*/
private static Session getSession() {
Properties props = new Properties();
props.put("mail.smtp.host", HOST);//设置服务器地址
// props.put("mail.store.protocol" , PROTOCOL);//设置协议
// props.put("mail.smtp.port", PORT);//设置端口
props.put("mail.smtp.auth" , "true");
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(FROM, PWD);
}
};
Session session = Session.getDefaultInstance(props , authenticator);
return session;
}
public static void send(String toEmail , String content) {
Session session = getSession();
try {
// System.out.println("--send--"+content);
// Instantiate a message
Message msg = new MimeMessage(session);
//Set message attributes
msg.setFrom(new InternetAddress(FROM));
InternetAddress[] address = {new InternetAddress(toEmail)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("账号激活邮件");
msg.setSentDate(new Date());
msg.setContent(content , "text/html;charset=utf-8");
//Send the message
Transport.send(msg);
}
catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
package com.yc.wowo.servlets;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.yc.wowo.dao.DBHelper;
import com.yc.wowo.entities.User;
/**
* Servlet implementation class EmailActivateCheckServlet
*/
public class EmailActivateCheckServlet extends BasicServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 取出op
String op = request.getParameter("op");
System.out.println(op);
// 判断op是什么,调用不同的方法做处理
try {
if (op != null && !"".equals(op)) {
if( "activate".equals(op)){
activateOP(request,response);
}
} else {
}
} catch (Exception e) {
e.printStackTrace();
response.sendRedirect("common/500.jsp");
}
}
private void activateOP(HttpServletRequest request,
HttpServletResponse response) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, Exception {
//获取参数token的值,即激活识别码。
//将它与数据表中的用户信息进行查询对比,如果有相应的数据集,判断是否过期,如果在有效期内则将对应的用户表中字段status设置1,即已激活,这样就完成了激活功能。
String id=request.getParameter("id");
String token=request.getParameter("token");
Calendar c = Calendar.getInstance();
//现在的时间(单位:毫秒)
long curtime = c.getTimeInMillis();
String sql="select id,tokenexptime,token,username,pwd from tb_user where status=0 and token=?";
List<Object> params=new ArrayList<Object>();
params.add( token );
DBHelper db=new DBHelper();
User u=db.findByone(sql, params, User.class);
String email=u.getUsername();
String pwd=u.getPwd();
if( u!=null ){
long token_exptime=Long.parseLong(u.getTokenexptime());
if( curtime>token_exptime ){
//激活码过期,先删除该用户记录,然后重新发送邮件
sql="delete from tb_user where id='"+u.getId()+"'";
db.doUpdate(sql, null);
response.sendRedirect("actionfailer.jsp?email="+email+"&pwd="+pwd);
// throw new DataExistAlreadyException("激活码已过期!");
return;
}else{
//验证激活码是否正确
if( token.equals(u.getToken())){
//激活成功, //并更新用户的激活状态,为已激活
sql="update tb_user set status=1 where id='"+u.getId()+"'";
db.doUpdate(sql, null);
response.sendRedirect("actionsuccess.jsp");
}else{
sql="delete from tb_user where id='"+u.getId()+"'";
db.doUpdate(sql, null);
response.sendRedirect("actionfailer.jsp?email="+email+"&pwd="+pwd);
return;
// throw new DataExistAlreadyException("激活码不正确");
}
}
}
}
}