六,业务功能:登录
六,业务功能:登录
@
编写 AuthController 作为登录控制器
在 demo-module02-component
模块下,的 src/main/java/目录下创建一个名为:
com.rainbowsea.imperial.court.controller 的包,下创建一个名为 AuthController
的类(注意:类上要添加上 @Controller 注解),作为登录控制器处理
package com.rainbowsea.imperial.court.controller;
import com.rainbowsea.imperial.court.entity.User;
import com.rainbowsea.imperial.court.service.api.UserService;
import com.rainbowsea.imperial.court.utils.ImperialCourtConst;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpSession;
@Controller //
public class AuthController {
@Autowired
private UserService userService;
@RequestMapping("/auth/login")
public String doLogin(
@RequestParam("loginAccount") String loginAccount,
@RequestParam("loginPassword") String loginPassword,
HttpSession session,
Model model
) {
// 1、尝试查询登录信息
User user = userService.getUserByLogin(loginAccount, loginAccount);
// 2、判断登录是否成功
if (user == null) {
// 登录失败,密码错误
model.addAttribute("message", ImperialCourtConst.LOGIN_FAILED_MESSAGE);
// 返回首页重新登录
// 3、如果登录失败则回到登录页面显示提示消息
return "index";
} else {
// 4、如果登录成功则将登录信息存入 Session 域
session.setAttribute("loginInfo", user);
return "target";
}
}
}
在 demo-module01-web 模块下的 resources 根路径下的 spring mvc.xml
文件中添加上,对于 com.rainbowsea.imperial.court.controller 包下的控制器的组件扫描。
编写 EmpService 业务处理
在 demo-module02-component 模块下的,src\main\java 目录下创建一个:com.rainbowsea.imperial.court.service.api包,在该包下创建一个名为 :UserService 的接口。
package com.rainbowsea.imperial.court.service.api;
import com.rainbowsea.imperial.court.entity.User;
public interface UserService {
User getUserByLogin(String loginAccount, String loginAccount1);
}
在 demo-module02-component 模块下的,src\main\java 目录下创建一个:com.rainbowsea.imperial.court.service.impl包,在该包下创建一个名为 :UserServiceImpl 类并实现 UserService 的接口中的 getUserByLogin( ) 方法。
package com.rainbowsea.imperial.court.service.impl;
import com.rainbowsea.imperial.court.entity.User;
import com.rainbowsea.imperial.court.entity.UserExample;
import com.rainbowsea.imperial.court.mapper.UserMapper;
import com.rainbowsea.imperial.court.service.api.UserService;
import com.rainbowsea.imperial.court.utils.MD5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional(readOnly = true) // 事务管理
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserByLogin(String loginAccount, String loginPassword) {
// 1、密码加密
String encodeLoginPassword = MD5Util.encode(loginPassword);
// 2、通过 QBC 查询方式封装查询条件
UserExample example = new UserExample();
UserExample.Criteria criteria = example.createCriteria();
criteria.andNameEqualTo(loginAccount).andPasswordEqualTo(loginPassword);
List<User> users = userMapper.selectByExample(example);
if (users != null && users.size() > 0) {
// 3、返回查询结果
return users.get(0);
}
return null;
}
}
或者是在
spring-persist.xml
中添加组件扫描也可以。注意:无论是 sping mvc.xml 还是 spring-persist.xml 两者的哪一个都可以,但是其中的一个一定要添加上 对于 service 业务上的类,的组件扫描。
编写 target.html 登录成功页面显示
在 demo-module01-web 模块下的 webapp\WEB-INF\templates 目录下,创建一个名为 target.html
的前端页面。
<!DOCTYPE html>
<html lang="en" xml:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>登录成功</title>
</head>
<body>
<p th:text="${session.loginInfo}"></p>
</body>
</html>
启动 Tomcat 服务器,运行测试
测试:输入正确的密码,能否登录成功
测试:输入错误的密码,能否成功
对应顺序上一节内容:✏️✏️✏️ 五,搭建环境:辅助功能-CSDN博客
对应顺序是下一节内容:✏️✏️✏️