5、最终的jsp页面
原理:
步骤实现
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
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);
// 对数据库执行一次真实的更新操作
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
195)]
[外链图片转存中…(img-QpcpMaWe-1714872427195)]
[外链图片转存中…(img-MJ5gA26o-1714872427196)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!