Java Web 网络商城案例演示五(用户激活)
发布日期:2021-06-29 15:01:11
浏览次数:2
分类:技术文章
本文共 7266 字,大约阅读时间需要 24 分钟。
Java Web 网络商城案例演示五(用户激活)
1、用户激活
2、登录 3、退出 4、抽取公共页面 5、查询所有分类 6、首页热门商品_最新商品显示 7、商品详情显示 8、基础分页操作 9、首页分类商品带分页查询开发通用步骤:
1、准备工作 2、Servlet 3、service 4、Dao 5、最终的jsp页面1、用户激活
原理:
步骤实现 1、准备工作(忽略) 用户点击了邮箱当中激活链接,向服务端发送method=active&code=15514444(随机生成激活码) 2、UserServlet—》 active 获取到激活码 调用service功能,对账户进行激活操作 进行信息的提示(成功,失败) 3、service dao 4、/jsp/login.jsp 获取到注册成功提示信息。Servlet实现激活并跳转
package cn.itzheng.store.web.servlet;import java.io.IOException;import java.lang.reflect.InvocationTargetException;import java.sql.SQLException;import java.util.Iterator;import java.util.Map;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 Mapmap = 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); }}
在login.jsp页面里面稍作改动
会员登录USER LOGIN${ msg }
转载地址:https://code100.blog.csdn.net/article/details/104880484 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月03日 09时19分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
「2020年大学生电子设计竞赛分享」电源题,省一等奖!
2019-04-29
又一国产开源微内核操作系统上线!源代码已开放下载
2019-04-29
10年老兵!从大学毕业生到嵌入式系统工程师的修炼之道……
2019-04-29
如何才能学好单片机?
2019-04-29
一根网线有这么多“花样”,你知道吗?
2019-04-29
雷军1994年写的诗一样的代码,我把它运行起来了!
2019-04-29
2020年大学生电子设计竞赛,B题,单相在线式不间断电源,详细技术方案!
2019-04-29
大佬终于把鸿蒙OS讲明白了,收藏了!
2019-04-29
知乎热议:嵌入式开发中C++好用吗?
2019-04-29
这100道Linux常见面试题,看看你会多少?
2019-04-29
嵌入式开发中常用的几种通信接口总结
2019-04-29
什么?电路板上还要喷漆?
2019-04-29
读博读废了是种什么样的体验?
2019-04-29
2020年,技术圈十大“翻车”事件!
2019-04-29
C语言状态机编程思想
2019-04-29
为什么很多电器设备都要使用单片机?
2019-04-29
在中国做操作系统研发 20 年是种什么体验?
2019-04-29
PCB走线角度为90度到底行不行?
2019-04-29
这个 17 岁的黑客天才,破解了第一代 iPhone!
2019-04-29
在STM32价格疯长下,哪些国产32可以替代?
2019-04-29