springboot實(shí)現(xiàn)登錄功能的完整步驟
springboot實(shí)現(xiàn)登錄功能
springboot實(shí)現(xiàn)登錄功能需完成以下步驟:
- 實(shí)現(xiàn)springboot啟動器
- 使用maven下載相應(yīng)的包
- 配置resources目錄下的application.yaml文件
- 編寫數(shù)據(jù)庫entity實(shí)體層、service業(yè)務(wù)層
- 實(shí)現(xiàn)公共函數(shù)result
- 編寫controller控制層
springboot啟動類
使用idea創(chuàng)建的springboot項(xiàng)目,會自動生成啟動類,有 @SpringBootApplication
注解的類就是啟動類
springboot使用maven
springboot生成后在會生成pom.xml,在 pom.xml
寫對應(yīng)的包名、版本、下載鏈接,點(diǎn)擊idea右上角的刷新按鈕就可以自動下載,但是包下載的路徑是在哪里呢?
這就需要修改一下idea的maven設(shè)置了,
File >> setting >> 搜索maven
頁面有三個設(shè)置需要修改:
- Maven home directory(maven安裝路徑)
- User setting file(maven配置文件路徑)
- Local repository(包下載路徑)
注意:包的下載路徑盡量放在repository目錄(自己手動創(chuàng)建該目錄)下,不然可能會報錯,找不到對應(yīng)的包
配置resources目錄下的application.yaml文件
application.yaml
是springboot的配置文件,yaml類型需使用key: value方式, :
后面一定要跟空格分隔。使用登錄只需要設(shè)置數(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.Driver
port是sprongboot啟動后的訪問端口
username是數(shù)據(jù)庫的登錄用戶名
password是登錄密碼
url數(shù)據(jù)庫訪問地址,jdbc:mysql://localhost:3306可直接復(fù)制,exam是我的數(shù)據(jù)庫名字,serverTimezone=Asia/Shanghai設(shè)置時區(qū),不設(shè)置有時會報錯,driver-class-name是mysql驅(qū)動,MySQL版本以上使用com.mysql.cj.jdbc.Driver,mysql5及以下使用 com.mysql.jdbc.Driver。
編寫數(shù)據(jù)庫entity實(shí)體層、service業(yè)務(wù)層
springboot在maven中配置mybatis-plus依賴
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> </dependency>
entity實(shí)體層為數(shù)據(jù)庫添加字段映射service業(yè)務(wù)層包含數(shù)據(jù)庫的常用操作
實(shí)體層
實(shí)體類主要是為了方便在java代碼中使用數(shù)據(jù)庫字段,實(shí)現(xiàn)java屬性與數(shù)據(jù)庫字段的一一映射。
在springboot啟動類同級目錄下新建一個entity目錄,entity目錄下新建一個Entity類
使用lombok依賴可以減少代碼開發(fā)量,lombok會生成get、set方法
@data注解
:生成所有屬性的get、set方法
@AllArgsConstructor
:生成該類下全部屬性的構(gòu)造方法
NoArgsConstructor
:生成無參的構(gòu)造方法
服務(wù)層service
服務(wù)層可以實(shí)現(xiàn)數(shù)據(jù)庫常用操作:增刪改查,這些命令都已寫好,可以直接使用,減少大家開發(fā)量。
在springboot啟動類同級目錄下新建一個service目錄,service目錄下新建一個EmployeeService接口,該接口繼承mybatisplus的IService接口
public interface EmployeeService extends IService<Employee> { }
然后在EmployeeService同級目錄下新建一個impl目錄,該目錄下新建EmployeeImplService類,@Service標(biāo)記當(dāng)前類是一個service類,加上該注解會將當(dāng)前類自動注入到spring容器中
@Service public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService { }
EmployeeServiceImpl
繼承mybatisplus的 ServiceImpl
再實(shí)現(xiàn)剛才的 EmployeeService
接口。到現(xiàn)在為止,數(shù)據(jù)庫相關(guān)配置已經(jīng)做好了
實(shí)現(xiàn)公共函數(shù)result
web應(yīng)用中,后端和前端交互,返回值包含:數(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層,該層實(shí)現(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、講頁面提交的密碼進(jìn)行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、沒有查詢到結(jié)果則返回登錄失敗 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類標(biāo)記為處理RESTful請求的控制器
@RequestMapping("/employee")注解使得該類所有的控制器方法映射的請求前面都加上/employee
EmployeeController 類中先聲明了employeeService,用于使用數(shù)據(jù)庫的增刪改查
@PostMapping("/login")注解代表網(wǎng)頁訪問/login時,會使用當(dāng)前方法,且使用的是POST方式訪問。
然后就是具體的login方法,這里實(shí)現(xiàn)了
- 將頁面提交的密碼進(jìn)行md5加密
- 根據(jù)用戶名查詢數(shù)據(jù)庫
- 若沒有查詢到該用戶、密碼不一致、用戶被禁用則返回
登錄失敗
- 登錄成功,在session中保存id值
到這里為止登錄的后端就已經(jīng)寫好了,只需要配置好前端的代碼就可以實(shí)現(xiàn)登錄功能了。
###啟動
運(yùn)行springboot啟動類,在終端顯示下列信息則成功:
在瀏覽器訪問: http://localhost:8081/employee/login
總結(jié)
到此這篇關(guān)于springboot實(shí)現(xiàn)登錄功能的文章就介紹到這了,更多相關(guān)springboot登錄功能實(shí)現(xiàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java遠(yuǎn)程調(diào)用Shell腳本并獲取輸出信息【推薦】
這篇文章主要介紹了Java遠(yuǎn)程調(diào)用Shell腳本并獲取輸出信息,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09Java中用enum結(jié)合testng實(shí)現(xiàn)數(shù)據(jù)驅(qū)動的方法示例
TestNG數(shù)據(jù)驅(qū)動提供的參數(shù)化讓我們在測試項(xiàng)目可以靈活根據(jù)需求建立不同的dataprovider來提供數(shù)據(jù),而真正實(shí)現(xiàn)數(shù)據(jù),頁面,測試彼此獨(dú)立而又有機(jī)結(jié)合的可能性。 下面這篇文章主要給大家介紹了Java中用enum和testng做數(shù)據(jù)驅(qū)動的方法示例,需要的朋友可以參考借鑒。2017-01-01Java實(shí)現(xiàn)Huffman編碼的示例代碼
Huffman編碼是一種編碼方式,本文主要介紹了Java實(shí)現(xiàn)Huffman編碼的示例代碼,具有一定的參考價值,感興趣的可以了解一下2023-08-08Spring 使用JavaConfig實(shí)現(xiàn)配置的方法步驟
這篇文章主要介紹了Spring 使用JavaConfig實(shí)現(xiàn)配置的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01SpringMVC獲取請求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼
這篇文章主要給大家介紹了SpringMVC獲取請求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼,文中通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下2023-12-12spring一個項(xiàng)目多個模塊聚合打包問題解決方案(最新推薦)
最近遇到個需求,針對后端解耦模塊較多的項(xiàng)目,想在云端啟動時簡潔些只啟動一個jar文件的情景,本文重點(diǎn)給大家介紹spring一個項(xiàng)目多個模塊聚合打包問題解決方案,感興趣的朋友一起看看吧2023-09-09SpringBoot中DTO/VO/Entity相互轉(zhuǎn)換詳解
在我們平時開發(fā)中,dto、vo、entity之間的相互轉(zhuǎn)換是很頻繁的操作,這篇文章就簡單記錄一下在平時開發(fā)中SpringBoot的轉(zhuǎn)換方法,希望對大家有所幫助2025-01-01springboot如何通過session實(shí)現(xiàn)單點(diǎn)登入詳解
單點(diǎn)登錄(SSO)的定義是在多個應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng),下面這篇文章主要給大家介紹了關(guān)于springboot如何通過session實(shí)現(xiàn)單點(diǎn)登入的相關(guān)資料,需要的朋友可以參考下2021-12-12