在这里关系到异常的处理,一种是声明式异常,一种是编程式异常,在这里用了编程式异常
首先要建立两个类,都继承自RuntimeException
/**
* 用户登录
* @param userId
* @param password
* @return
*/
public User login(String userId, String password) {
User user = findUserById(userId);
if (user == null) {
throw new UserNotFoundException("用户代码不正确,代码=【" + userId + "】");
}
if (!user.getPassword().equals(password)) {
throw new PasswordNotCorrentException("密码错误");
}
return user;
}
注意,当你用字符串拼接的方式用Statement来对登录进行处理的话就有可能会发生sql注入式的攻击
// /**
// * 用户登录
// *
// * 演示sql注入,输入如下数据:
// * 用户名称:sdfsdfdsf
// * 密码:' or '1'='1
// *
// * 生成的sql如下:
// * select * from t_user where user_id='sdfsdfdsf' and password='' or '1'='1 '
// *
// * @param userId
// * @param password
// * @return
// */
// public boolean login(String userId, String password) {
// String sql = "select * from t_user where user_id='" + userId + "' and password='" + password + "'";
// System.out.println(sql);
// Connection conn = null;
// PreparedStatement pstmt = null;
// ResultSet rs = null;
// boolean success = false;
// try {
// conn = DbUtil.getConnection();
// pstmt = conn.prepareStatement(sql);
// rs = pstmt.executeQuery();
// if (rs.next()) {
// success = true;
// System.out.println("用户和密码正确!");
// }
// }catch(SQLException e) {
// e.printStackTrace();
// }finally {
// DbUtil.close(rs);
// DbUtil.close(pstmt);
// DbUtil.close(conn);
// }
// return success;
// }