注册的一个大概流程
注意:其实注册就是一个数据的插入过程
注册流程如下----------------------------------------------
1、接受参数
2、参数的合法性检验
3、检验成功后,唯一性匹配
(注册的一个用户是否被别人注册过,如果说已经被注册过了,那么我们跳转到登录页面,提示该用户已被注册)
4、不存在,执行注册
5、注册成功,跳转;注册失败,返回到注册页面重新注册
(如果说合法了,那么我们继续往下走,去根据用户名查询这个记录是否存在,查询就会涉及到JDBC)
代码演示如下:
1 // “/”这个不要忘记加,不然启动会报错 2 @WebServlet(name="UserRegistrerController",urlPatterns="/userRegistrerController.do") 3 public class UserRegistrerController extends HttpServlet { 4 5 /** 6 * 7 */ 8 private static final long serialVersionUID = 308527142250580706L; 9 10 @Override 11 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 12 throws ServletException, IOException { 13 14 //doget请求统一转发到dopost里面,我们统一在dopost里面完成他的一个流程 15 doPost(req, resp); 16 17 } 18 19 20 @Override 21 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 22 throws ServletException, IOException { 23 24 /** 25 * 注册的一个大概流程 26 * 1.接受参数 27 * 2.参数的合法性校验 28 * 3.校验成功后,唯一性匹配 29 * (思想:注册的一个用户名是否已经被别人注册过了,如果说,存在,那么我们跳转到登录,提示该用户已经被注册) 30 * 4.不存在,执行注册 31 * 5.注册成功后,跳转;不成功,返回到注册页面 32 */ 33 34 //1.接受参数 35 String userName = req.getParameter("userName"); 36 String userPwd = req.getParameter("userPwd"); 37 38 //2.参数的合法性校验 39 //怎么校验呢???这里我们判断下他的用户名和密码是否为空 40 /* 41 * 不合法场景下注册逻辑: 42 * 如果用户名或者密码为空的话,我们就不往下再执行了,我们给他一个提示信息 43 */ 44 String msg = ""; 45 if (MyStringUtil.isNullOrEmpty(userName) || MyStringUtil.isNullOrEmpty(userPwd)) { 46 msg = "用户名或密码不能为空!"; 47 req.setAttribute("msg", msg); 48 //然后给他转发到注册页面 注册页面 register.jsp 49 req.getRequestDispatcher("register.jsp").forward(req, resp); 50 //然后结束 51 return; 52 53 } 54 55 /* 56 * 合法场景下: 57 * 如果说合法了,那么我们继续往下走,去根据用户名查询这个记录是否存在,查询就会涉及到我们的JDBC 58 * 59 * 合法场景下注册逻辑: 60 * JDBC连接步骤 61 * 1.获取连接 62 * 2.获取预编译块(PreparedStatement) ,传入sql 63 * 3.设置参数 64 * 4.查询获取结果集,resultset 65 * 5.遍历结果集,获取值 66 * 6.执行判断 67 * 7.不存在记录,执行插入;存在记录,不执行插入,返回到注册页面,加入提示信息 68 * 8.执行注册,成功跳转;不成功返回注册页面,加入提示信息 69 * 9.关闭连接 70 */ 71 72 Connection conn = null;//提升作用域 73 PreparedStatement ps = null;//提升作用域 74 ResultSet rs = null;//提升作用域 75 try { 76 //1.连接 77 conn = MyDBUtil.getMysqlConn(); 78 79 //2.获取preparedstatement 80 //统计一下 81 String sql = "select count(1) from user where user_name=?"; 82 ps = conn.prepareStatement(sql); 83 //3.设置他的参数,参数的索引从第一个开始 84 ps.setString(1, userName);//把userName放进去 85 86 //4.执行查询结果集 87 rs = ps.executeQuery(); 88 89 //5.遍历 90 long count = 0; 91 while(rs.next()){ 92 //这里我们获取他的第一列的值就可以了 93 count = rs.getLong(1); 94 } 95 96 if (count > 0) {//大于0说明有用户注册了 97 msg="该用户已经注册"; 98 //然后转发到注册页面 99 req.setAttribute("msg", msg); 100 req.getRequestDispatcher("register.jsp").forward(req, resp); 101 return; 102 } 103 104 /** 105 * 如果没有注册,我们继续往下走,没有注册就是插入也是添加 106 */ 107 String sql2 = "insert into user(user_name,user_pwd) values(?,?)"; 108 ps = conn.prepareStatement(sql2 ); 109 ps.setString(1, userName); 110 ps.setString(2, userPwd); 111 112 int result = ps.executeUpdate(); 113 if (result == 0) {//等于0,说明添加失败 114 msg="注册失败,请稍后重试"; 115 req.setAttribute("msg", msg); 116 req.getRequestDispatcher("register.jsp").forward(req, resp); 117 return; 118 } 119 120 //剩下的就是注册成功 121 req.setAttribute("userName", userName); 122 req.getRequestDispatcher("success.jsp").forward(req, resp); 123 124 } catch (SQLException e) { 125 e.printStackTrace(); 126 }finally{//最后关闭连接 127 MyDBUtil.close(rs, ps, conn); 128 } 129 } 130 131 }