登录流程分析
handler方法
所在工程:atcrowdfunding-admin-2-component
全类名:com.atguigu.crowd.funding.handler.AdminHandler
@RequestMapping("/admin/do/login")
public String doLogin(
@RequestParam("loginAcct") String loginAcct,
@RequestParam("userPswd") String userPswd,
Model model,
HttpSession session) {
// 调用adminService的login方法执行登录业务逻辑,返回查询到的Admin对象
Admin admin = adminService.login(loginAcct, userPswd);
// 判断admin是否为null
if(admin == null) {
model.addAttribute("MESSAGE", "登录账号或密码不正确!请核对后再登录!");
return "admin-login";
}
session.setAttribute("LOGIN-ADMIN", admin);
return "admin-main";
}
后台主页面
所在工程:atcrowdfunding-admin-1-webui
文件位置:
内容:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>❤汇聚点滴的力量,成就非凡的伟业❤</title>
</head>
<body>
<h1>后台主页面</h1>
${sessionScope['LOGIN-ADMIN'] }
</body>
</html>
service方法
@Override
public Admin login(String loginAcct, String userPswd) {
// 根据loginAcct查询数据库
AdminExample adminExample = new AdminExample();
adminExample.createCriteria().andLoginAcctEqualTo(loginAcct);
// 执行查询
List<Admin> list = adminMapper.selectByExample(adminExample);
if(!CrowdFundingUtils.collectionEffective(list)) {
// 如果查询结果集合无效,则直接返回null
return null;
}
// 获取唯一集合元素
Admin admin = list.get(0);
// 确认admin不为null
if(admin == null) {
return null;
}
// 比较密码
String userPswdDataBase = admin.getUserPswd();
String userPswdBroswer = CrowdFundingUtils.md5(userPswd);
if(Objects.equals(userPswdBroswer, userPswdDataBase)) {
// 如果两个密码相等那么说明登录能够成功,返回Admin对象
return admin;
}
return null;
}
在spring-persist-tx.xml配置文件中加入事务属性配置
<tx:method name="login" read-only="true"/>