springboot實現(xiàn)登錄功能的完整步驟
springboot實現(xiàn)登錄功能
springboot實現(xiàn)登錄功能需完成以下步驟:
- 實現(xiàn)springboot啟動器
- 使用maven下載相應的包
- 配置resources目錄下的application.yaml文件
- 編寫數(shù)據(jù)庫entity實體層、service業(yè)務層
- 實現(xiàn)公共函數(shù)result
- 編寫controller控制層
springboot啟動類
使用idea創(chuàng)建的springboot項目,會自動生成啟動類,有 @SpringBootApplication 注解的類就是啟動類

springboot使用maven
springboot生成后在會生成pom.xml,在 pom.xml 寫對應的包名、版本、下載鏈接,點擊idea右上角的刷新按鈕就可以自動下載,但是包下載的路徑是在哪里呢?
這就需要修改一下idea的maven設置了,
File >> setting >> 搜索maven

頁面有三個設置需要修改:
- Maven home directory(maven安裝路徑)
- User setting file(maven配置文件路徑)
- Local repository(包下載路徑)
注意:包的下載路徑盡量放在repository目錄(自己手動創(chuàng)建該目錄)下,不然可能會報錯,找不到對應的包
配置resources目錄下的application.yaml文件
application.yaml 是springboot的配置文件,yaml類型需使用key: value方式, : 后面一定要跟空格分隔。使用登錄只需要設置數(shù)據(jù)庫和端口號
server:
port: 8081
spring:
datasource:
username: root
password: 123
url: jdbc:mysql://localhost:3306/exam?serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driverport是sprongboot啟動后的訪問端口
username是數(shù)據(jù)庫的登錄用戶名
password是登錄密碼
url數(shù)據(jù)庫訪問地址,jdbc:mysql://localhost:3306可直接復制,exam是我的數(shù)據(jù)庫名字,serverTimezone=Asia/Shanghai設置時區(qū),不設置有時會報錯,driver-class-name是mysql驅(qū)動,MySQL版本以上使用com.mysql.cj.jdbc.Driver,mysql5及以下使用 com.mysql.jdbc.Driver。
編寫數(shù)據(jù)庫entity實體層、service業(yè)務層
springboot在maven中配置mybatis-plus依賴
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>entity實體層為數(shù)據(jù)庫添加字段映射service業(yè)務層包含數(shù)據(jù)庫的常用操作
實體層
實體類主要是為了方便在java代碼中使用數(shù)據(jù)庫字段,實現(xiàn)java屬性與數(shù)據(jù)庫字段的一一映射。
在springboot啟動類同級目錄下新建一個entity目錄,entity目錄下新建一個Entity類
使用lombok依賴可以減少代碼開發(fā)量,lombok會生成get、set方法
@data注解:生成所有屬性的get、set方法
@AllArgsConstructor:生成該類下全部屬性的構造方法
NoArgsConstructor:生成無參的構造方法

服務層service
服務層可以實現(xiàn)數(shù)據(jù)庫常用操作:增刪改查,這些命令都已寫好,可以直接使用,減少大家開發(fā)量。
在springboot啟動類同級目錄下新建一個service目錄,service目錄下新建一個EmployeeService接口,該接口繼承mybatisplus的IService接口
public interface EmployeeService extends IService<Employee> {
}然后在EmployeeService同級目錄下新建一個impl目錄,該目錄下新建EmployeeImplService類,@Service標記當前類是一個service類,加上該注解會將當前類自動注入到spring容器中
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {
}
EmployeeServiceImpl 繼承mybatisplus的 ServiceImpl 再實現(xiàn)剛才的 EmployeeService 接口。到現(xiàn)在為止,數(shù)據(jù)庫相關配置已經(jīng)做好了
實現(xiàn)公共函數(shù)result
web應用中,后端和前端交互,返回值包含:數(shù)據(jù)、返回碼、消息
這些事每次交互都會返回的,既然每次訪問都需要返回,那這個功能可以提取出來,作為一個公共類Result
在啟動類同級目錄下創(chuàng)建common目錄,在該目錄下創(chuàng)建Result類
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result<T> {
private Integer code;
private String msg;
private T data;
private Map map = new HashMap();
public static <T> Result<T> success(T data){
Result<T> result = new Result<>();
result.data = data;
result.code = 1;
return result;
}
public static <T> Result<T> error(String msg){
Result<T> result = new Result<>();
result.msg = msg;
result.code = 0;
return result;
}
}定義了success、error兩個方法,一個是訪問成功的返回、一個是訪問失敗的返回。
編寫controller控制層
最后一步,編寫controller層,該層實現(xiàn)路由控制以及具體的功能
在啟動類同級目錄下創(chuàng)建controller目錄,該目錄下創(chuàng)建EmployeeController類
@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
/**
* 員工登錄
* @param request
* @param employee
* @return
*/
@PostMapping("/login")
public Result<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
//1、講頁面提交的密碼進行md5加密
String password = employee.getPassword();
password = DigestUtils.md5DigestAsHex(password.getBytes());
//2、根據(jù)用戶名查數(shù)據(jù)庫
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Employee::getUsername, employee.getUsername());
Employee emp = employeeService.getOne(queryWrapper);
//3、沒有查詢到結果則返回登錄失敗
if(emp ==null){
return Result.error("登陸失敗");
}
if (!emp.getPassword().equals(password)) {
return Result.error("登錄失敗");
}
if (emp.getStatus() == 0) {
return Result.error("該用戶已被禁用");
}
//存?zhèn)€Session,只存?zhèn)€id就行了
request.getSession().setAttribute("employee",emp.getId());
return Result.success(emp);
}@Slf4j是日志注解,使用該注解之后,在類中可以直接使用log方法生成日志
@RestController注解是Spring MVC中的一個組件,用于將Java類標記為處理RESTful請求的控制器
@RequestMapping("/employee")注解使得該類所有的控制器方法映射的請求前面都加上/employee
EmployeeController 類中先聲明了employeeService,用于使用數(shù)據(jù)庫的增刪改查
@PostMapping("/login")注解代表網(wǎng)頁訪問/login時,會使用當前方法,且使用的是POST方式訪問。
然后就是具體的login方法,這里實現(xiàn)了
- 將頁面提交的密碼進行md5加密
- 根據(jù)用戶名查詢數(shù)據(jù)庫
- 若沒有查詢到該用戶、密碼不一致、用戶被禁用則返回
登錄失敗 - 登錄成功,在session中保存id值
到這里為止登錄的后端就已經(jīng)寫好了,只需要配置好前端的代碼就可以實現(xiàn)登錄功能了。
###啟動
運行springboot啟動類,在終端顯示下列信息則成功:

在瀏覽器訪問: http://localhost:8081/employee/login
總結
到此這篇關于springboot實現(xiàn)登錄功能的文章就介紹到這了,更多相關springboot登錄功能實現(xiàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java遠程調(diào)用Shell腳本并獲取輸出信息【推薦】
這篇文章主要介紹了Java遠程調(diào)用Shell腳本并獲取輸出信息,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
Java中用enum結合testng實現(xiàn)數(shù)據(jù)驅(qū)動的方法示例
TestNG數(shù)據(jù)驅(qū)動提供的參數(shù)化讓我們在測試項目可以靈活根據(jù)需求建立不同的dataprovider來提供數(shù)據(jù),而真正實現(xiàn)數(shù)據(jù),頁面,測試彼此獨立而又有機結合的可能性。 下面這篇文章主要給大家介紹了Java中用enum和testng做數(shù)據(jù)驅(qū)動的方法示例,需要的朋友可以參考借鑒。2017-01-01
Spring 使用JavaConfig實現(xiàn)配置的方法步驟
這篇文章主要介紹了Spring 使用JavaConfig實現(xiàn)配置的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01
SpringMVC獲取請求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼
這篇文章主要給大家介紹了SpringMVC獲取請求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼,文中通過代碼示例給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下2023-12-12
spring一個項目多個模塊聚合打包問題解決方案(最新推薦)
最近遇到個需求,針對后端解耦模塊較多的項目,想在云端啟動時簡潔些只啟動一個jar文件的情景,本文重點給大家介紹spring一個項目多個模塊聚合打包問題解決方案,感興趣的朋友一起看看吧2023-09-09
SpringBoot中DTO/VO/Entity相互轉(zhuǎn)換詳解
在我們平時開發(fā)中,dto、vo、entity之間的相互轉(zhuǎn)換是很頻繁的操作,這篇文章就簡單記錄一下在平時開發(fā)中SpringBoot的轉(zhuǎn)換方法,希望對大家有所幫助2025-01-01
springboot如何通過session實現(xiàn)單點登入詳解
單點登錄(SSO)的定義是在多個應用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng),下面這篇文章主要給大家介紹了關于springboot如何通過session實現(xiàn)單點登入的相關資料,需要的朋友可以參考下2021-12-12

