六,業務功能:登入
@
- 六,業務功能:登入
- 編寫 AuthController 作為登入控制器
- 編寫 EmpService 業務處理
- 編寫 target.html 登入成功頁面顯示
- 啟動 Tomcat 伺服器,執行測試
編寫 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部落格
對應順序是下一節內容:✏️✏️✏️