(四)登录

从登录界面进入主界面要进行用户名和密码的验证,首先,前台通过form表单的提交

form

在后台获取用户名和密码以及mothod:

String method = req.getParameter("method");
if(method.equals("getjsp")){
     req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(req, resp);
}else if(method.equals("login")){
     login();
}

在login()方法中实现对登录用户的校验:

private void login(){
    try {
        String loginName = request.getParameter("loginName");
        String password = request.getParameter("passWord");
        Map result = shopService.login(loginName, password);
        if(result.get("code").equals(0)){
            //登录成功//跳转到主界面
            User user = (User) result.get("msg");
            request.setAttribute(Constants.USER_SESSION, user);
            //请求跳转到主界面的Servlet
            response.sendRedirect(request.getContextPath()+"/list?method=getAll");
            //request.getRequestDispatcher("/WEB-INF/jsp/list.jsp").forward(request, response);
        }else{
            //登录失败
            String msg = (String) result.get("msg");
            request.setAttribute("msg", msg);
            request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
        }
    } catch (ServletException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

在shopService.login(loginName, password);方法进行判断,首先在接口中定义方法:

(四)登录_第1张图片

然后进入实现类:

(四)登录_第2张图片

首先在这里得到数据访问层对象,然后调用login方法:

public Map login(String loginName, String password) {
    Map results = new HashMap();
    //判断参数是否为空
    if(StringUtils.isEmpty(loginName) || StringUtils.isEmpty(password)){
        //参数为空
        results.put("code", 1);
        results.put("msg", "参数为空了");
    }else{
        //根据用户名查询用户对象
        User user = userMapper.login(loginName);
        if(user != null){
            //判断密码
            if(user.getPassword().equals(password)){
                //登录成功
                //应该将登录成功的用户存入到Session会话中
                results.put("code", 0);
                results.put("msg", user);
            }else{
                //登录失败
                results.put("code", 2);
                results.put("msg", "密码错误了");
            }
        }else{
            //登录名不存在
            results.put("code", 3);
            results.put("msg", "登录名不存在");
        }
    }
    return results;
}

首先利用StringUtils.isEmpty()方法判断传递过来参数是否为空,如果不为空则调用userMapper中的login方法

sql

在这里调用数据库语句,根据用户名获取user然后返回业务层,再根据user中的密码比对用户输入的密码是否相同,将结果放入Map类型的result中,然后在LoginServlet中读取result中的内容:

登录

如果结果中的code为0,代表数据库中的用户名和密码匹配,用户登录成功,然后跳转到主界面。

转载于:https://www.cnblogs.com/zqm-sau/p/11409218.html

你可能感兴趣的:((四)登录)