主要是起到语义的作用
package com.it.travel.exception;
/**
* 用户自定义异常
*/
public class CustomMessageException extends Exception {
/**
* 构造方法
* @param message 要传入的错误信息
*/
public CustomMessageException(String message) {
super(message);
}
}
步骤
-
检查用户名是否存在,如果不存在则抛出自定义异常:用户不存在。
-
如果用户存在,则对提交的密码使用md5加密
-
如果不相同,则抛出自定义异常:密码不正确。
-
否则登录成功,返回查询到的用户对象
代码
/**
* 登录的方法
* @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中实现登录的方法
步骤
-
判断验证码是否正确,如果不正确,将信息封装成ResultInfo打印信息给浏览器。
-
验证码正确,则得到提交的用户名和密码。
-
调用业务UserService的login业务方法
-
如果有用户自定义异常,则将异常信息封装成ResultInfo对象打印给浏览器。
-
如果登录成功,则将用户信息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);
}