登陆的一个大概流程:----------------------------------
1、接受登陆参数
2、参数的合法性检验
3、检验成功,执行用户名是否存在的查询
4、如果不存在该用户,返回登陆页面,并加入提示信息
5、如果存在,检验密码是否正确,如果密码不正确,返回登陆页面,加入提示信息
6、密码匹配正确的情况下,user用户加入session,执行跳转到主页面index.jsp
代码演示如下:
1 @WebServlet(name="UserLoginController",urlPatterns="/userLoginController.do") 2 public class UserLoginController extends HttpServlet { 3 4 /** 5 * 6 */ 7 private static final long serialVersionUID = 316814735375739240L; 8 9 @Override 10 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 11 throws ServletException, IOException { 12 doPost(req, resp); 13 } 14 15 @Override 16 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 17 throws ServletException, IOException { 18 /** 19 * 登陆的一个大概流程: 20 * 1、接受登陆参数 21 * 2、参数的合法性检验 22 * 3、检验成功,执行用户名是否存在的查询 23 * 4、如果不存在该用户,返回登录页面,并加入提示信息 24 * 5、如果存在,检验密码是否正确,如果密码不正确,返回登录页面,并加入提示信息 25 * 6、密码匹配正确情况,user用户加入到session中,执行跳转到主页面index.jsp 26 */ 27 28 //1.接受参数 29 String userName = req.getParameter("userName"); 30 String userPwd = req.getParameter("userPwd"); 31 32 //2.参数的合法性检验 33 String msg = ""; 34 if (MyStringUtil.isNullOrEmpty(userName) || MyStringUtil.isNullOrEmpty(userPwd)) { 35 msg ="用户名或密码不能为空"; 36 req.setAttribute("msg", msg); 37 req.getRequestDispatcher("login.jsp").forward(req, resp); 38 return; 39 } 40 41 42 //合法性检验后,我们就执行一个用户名是否存在的一个查询,用到JDBC 43 Connection conn = null; 44 PreparedStatement ps = null; 45 ResultSet rs = null; 46 User user = null; 47 try { 48 conn = MyDBUtil.getMysqlConn(); 49 String sql = "select id,user_name as userName,user_pwd as userPwd from user where user_name=?"; 50 ps = conn.prepareStatement(sql); 51 ps.setString(1, userName); 52 53 rs = ps.executeQuery(); 54 55 while(rs.next()){ 56 user = new User(); 57 user.setId(rs.getInt("id")); 58 user.setUserName(rs.getString("userName")); 59 user.setUserPwd(rs.getString("userPwd")); 60 } 61 62 //判断用户是否为空 63 if (user == null) { 64 msg = "该用户不存在"; 65 req.setAttribute("msg", msg); 66 req.getRequestDispatcher("login.jsp").forward(req, resp); 67 return; 68 } 69 70 //判断输入的密码是否和数据库中的密码一致 71 if (!userPwd.equals(user.getUserPwd())) { 72 msg = "密码不正确"; 73 req.setAttribute("msg", msg); 74 req.getRequestDispatcher("login.jsp").forward(req, resp); 75 return; 76 } 77 78 req.getSession().setAttribute("user", user); 79 req.getRequestDispatcher("index.jsp").forward(req, resp); 80 81 } catch (SQLException e) { 82 e.printStackTrace(); 83 }finally{ 84 MyDBUtil.close(rs, ps, conn); 85 } 86 87 } 88 }
登陆成功后还要有退出,下面是退出的代码演示:
1 /** 2 * 登陆写完了,这个还有退出按钮 3 * @author 王东海 4 * @2017年4月17日 5 */ 6 @WebServlet(name="UserLoginOutController",urlPatterns="/userLoginOutController.do") 7 public class UserLoginOutController extends HttpServlet { 8 9 /** 10 * 11 */ 12 private static final long serialVersionUID = 2644950956616792942L; 13 14 @Override 15 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 16 throws ServletException, IOException { 17 doPost(req, resp); 18 } 19 20 /** 21 * 对于退出,我们要做什么操作? 22 * 清理下我们的session,然后转发到我们的登陆页面,也就是login.jsp 23 */ 24 @Override 25 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 26 throws ServletException, IOException { 27 req.getSession().setAttribute("user", null);//将user对应的信息制空 28 req.getRequestDispatcher("login.jsp").forward(req, resp);//转发到登录页面 29 } 30 }