自定义异常

 主要是起到语义的作用

package com.it.travel.exception;

/**
 * 用户自定义异常
 */
public class CustomMessageException extends Exception {

    /**
     * 构造方法
     * @param message 要传入的错误信息
     */
    public CustomMessageException(String message) {
        super(message);
    }
}

步骤

  1. 检查用户名是否存在,如果不存在则抛出自定义异常:用户不存在。

  2. 如果用户存在,则对提交的密码使用md5加密

  3. 如果不相同,则抛出自定义异常:密码不正确。

  4. 否则登录成功,返回查询到的用户对象

代码

/**
 * 登录的方法
 * @param username
 * @param password
 */
@Override
public User login(String username, String password) throws CustomMessageException {
    //1.调用dao中用户名查找的方法
    User user = userDao.findByUsername(username);
    //2.如果没有找到,抛出异常,用户名不存在
    if (user == null) {
        throw new CustomMessageException("用户名不存在");
    }
    //3.如果找到,对密码使用md5加密,判断密码是否正确
    String md5 = Md5Utils.getMd5(password);
    //4.如果密码错误抛出异常
    if (!md5.equals(user.getPassword())) {
        throw new CustomMessageException("密码错误");
    }
    //5.返回user对象,表示登录成功
    return user;
}

在Servlet中实现登录的方法

步骤

  1. 判断验证码是否正确,如果不正确,将信息封装成ResultInfo打印信息给浏览器。

  2. 验证码正确,则得到提交的用户名和密码。

  3. 调用业务UserService的login业务方法

  4. 如果有用户自定义异常,则将异常信息封装成ResultInfo对象打印给浏览器。

  5. 如果登录成功,则将用户信息currentUser保存在会话域中,封装ResultInfo(true)信息给浏览器。

代码

/*
登录方法
 */
protected void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //1. 判断验证码是否正确,如果不正确,将信息封装成ResultInfo打印信息给浏览器。
    HttpSession session = request.getSession();
    //2. 验证码正确,则得到提交的用户名和密码。
    String vcode = (String) session.getAttribute("vcode");
    String check = request.getParameter("check");

    ResultInfo resultInfo = new ResultInfo();
    if (!check.equalsIgnoreCase(vcode)) {
        resultInfo.setSuccess(false);
        resultInfo.setMessage("验证码错误");
    }
    else {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //3. 调用业务UserService的login业务方法
        try {
            User user = userService.login(username, password);
            //5. 如果登录成功,则将用户信息currentUser保存在会话域中,封装ResultInfo(true)信息给浏览器。
            session.setAttribute("currentUser", user);
            resultInfo.setSuccess(true);
        } catch (CustomMessageException e) {
            //4. 如果有用户自定义异常,则将异常信息封装成ResultInfo对象打印给浏览器。
            resultInfo.setSuccess(false);
            //获取异常中信息
            resultInfo.setMessage(e.getMessage());
        }
    }
    //打印resultInfo到浏览器端
    printJsonString(response, resultInfo);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值