import java.util.Map.Entry;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;
import cn.itzheng.store.domain.User;
import cn.itzheng.store.service.UserService;
import cn.itzheng.store.service.serviceImpl.UserServiceImpl;
import cn.itzheng.store.utils.MailUtils;
import cn.itzheng.store.utils.MyBeanUtils;
import cn.itzheng.store.utils.UUIDUtils;
import cn.itzheng.store.web.base.BaseServlet;
public class UserServlet extends BaseServlet {
// jsp的method 会统一发现这里的,并发送到父类的service 方法当中
// 先执行父类的init方法和service方法,之后在执行该方法,
// BaseServlet通过this.getclass的方式获取到该类字节码文件名获取到该方法而执行该方法(执行什么方法由jsp页面传入的method来决定)
public String registUI(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
return “/jsp/register.jsp”;
}
// userRegist
public String userRegist(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, Exception {
// 接收业务注册功能
// 遍历map
Map<String, String[]> map = request.getParameterMap();// 获取页面上的键值对数据
User user = new User();
user.setUid(UUIDUtils.getId());
user.setState(0);
user.setCode(UUIDUtils.getCode());
MyBeanUtils.populate(user, map);// 调用MyBeanUtils的populate静态方法
System.out.println(user);
/*
-
// 1_创建时间类型的转换器 DateConverter dt = new DateConverter();//
-
用来设置BeanUtils当中对应的获得时间的格式 // 2_设置转换的格式 dt.setPattern(“yyyy-MM-dd”); //
-
3_注册转换器 ConvertUtils.register(dt, java.util.Date.class);
-
BeanUtils.populate(user, map);//将map当中的数据通过populate放入到user
-
System.out.println(user); Set keySet = map.keySet();//
-
将map当中的key集合放入到keySet的set集合当中 Iterator iterator = keySet.iterator();
-
while (iterator.hasNext()) { String str = iterator.next();// 获取到每一个key
-
System.out.println(str); String[] strs = map.get(str);// 通过键获取到每一个值 for
-
(String string : strs) { System.out.println(string); } System.out.println();
-
}
*/
// 调用业务注册功能
UserService userservice = new UserServiceImpl();
try {
userservice.userRegist(user);
// 注册注册成功,向用户邮箱发送信息,跳转到提示页面
// 发送邮件
//
MailUtils.sendMail(user.getEmail(), user.getCode());
request.setAttribute(“msg”, “用户注册成功,请激活”);
} catch (Exception e) {
// 注册失败,跳转到提示页面
request.setAttribute(“msg”, “用户注册失败,请重新注册”);
}
return “/jsp/info.jsp”;
}
//
public String active(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
// 获取激活码
String code = request.getParameter(“code”);
// 调用业务层激活功能
UserService userService = new UserServiceImpl();
boolean flag = userService.userActive(code);
if (flag == true) {
// 用户激活成功,向request当中放入提示信息,转发到登录页面
request.setAttribute(“msg”, “用户激活成功,请登录!”);
return “/jsp/login.jsp”;
} else {
// 用户激活失败,向request当中放入提示信息,转发提示页面
request.setAttribute(“msg”, “用户激活失败,请重新注册”);
return “/jsp/info.jsp”;
}
// 进行激活的信息提示
}
}
package cn.itzheng.store.service;
import java.sql.SQLException;
import cn.itzheng.store.domain.User;
public interface UserService {
void userRegist(User user) throws SQLException;
boolean userActive(String code) throws SQLException;
}
package cn.itzheng.store.service.serviceImpl;
import java.sql.SQLException;
import cn.itzheng.store.dao.UserDao;
import cn.itzheng.store.dao.daoImpl.UserDaoImpl;
import cn.itzheng.store.domain.User;
import cn.itzheng.store.service.UserService;
public class UserServiceImpl implements UserService {
@Override
public void userRegist(User user) throws SQLException {
// TODO Auto-generated method stub
// 实现注册功能
UserDao userDao = new UserDaoImpl();
userDao.userRegist(user);
}
@Override
public boolean userActive(String code)throws SQLException {
// TODO Auto-generated method stub
UserDao userDao = new UserDaoImpl();
// 对DB发送select * from user where code = ?
User user = userDao.userActive(code);// 将code传入到dao层查看数据,返回该code对应的user,以方便后面操作user
if (null != user) {
// 可以根据激活码查询到一个用户
// 修改用户的状态,清除激活码
user.setState(1);
user.setCode(null);
// 对数据库执行一次真实的更新操作
//update user set username=? ,password = ? ,name = ? ,email = ? ,telephone = ? , birthday = ?,sex = ? ,state = ? ,code = ? where uid = ?
userDao.updateUser(user);
return true;
} else {
// 不可以根据激活码查询到一个用户
return false;
}
}
}
package cn.itzheng.store.dao.daoImpl;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import cn.itzheng.store.dao.UserDao;
import cn.itzheng.store.domain.User;
import cn.itzheng.store.utils.JDBCUtils;
public class UserDaoImpl implements UserDao {
/*
-
@Override public void userRegist(User user) throws SQLException { // TODO
-
Auto-generated method stub
-
String sql=“INSERT INTO USER VALUES(?,?,?,?,?,?,?,?,?,?)”; QueryRunner qr =
-
new QueryRunner(JDBCUtils.getDataSource()); // 将user当中的数据放入到Object对象的数组当中
-
Object[] params = { user.getUid(), user.getUsername(), user.getPassword(),
-
user.getName(), user.getEmail(), user.getTelephone(), user.getBirthday(),
-
user.getSex(), user.getState(), user.getCode() }; qr.update(sql, params);//
-
通过dbutils当中QueryRunner的update方法将数据与对应的SQL语句的问号匹配
-
}
*/
@Override
public void userRegist(User user01) throws SQLException {
String sql = “INSERT INTO USER VALUES(?,?,?,?,?,?,?,?,?,?)”;
Object[] params = { user01.getUid(), user01.getUsername(), user01.getPassword(), user01.getName(),
user01.getEmail(), user01.getTelephone(), user01.getBirthday(), user01.getSex(), user01.getState(),
user01.getCode() };
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
qr.update(sql, params);
}
// 判断是否有对应的code
@Override
public User userActive(String code) throws SQLException {
String sql=“select * from user where code =?”;
QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());
return qr.query(sql, new BeanHandler(User.class),code);
}
@Override
public void updateUser(User user01) throws SQLException {
String sql=“UPDATE USER SET username= ? ,PASSWORD=? ,NAME =? ,email =? ,telephone =? , birthday =? ,sex =? ,state= ? , CODE = ? WHERE uid=?”;
Object[] params={user01.getUsername(),user01.getPassword(),user01.getName(),user01.getEmail(),user01.getTelephone(),user01.getBirthday(),user01.getSex(),user01.getState(),user01.getCode(),user01.getUid()};
QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());
qr.update(sql,params);
}
}