欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot實(shí)現(xiàn)登錄功能的完整步驟

 更新時間:2023年09月17日 11:27:38   作者:大盤雞加面  
這篇文章主要給大家介紹了關(guān)于springboot實(shí)現(xiàn)登錄功能的完整步驟,在web應(yīng)用程序中,用戶登錄權(quán)限驗(yàn)證是非常重要的一個步驟,文中通過代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下

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腳本并獲取輸出信息【推薦】

    這篇文章主要介紹了Java遠(yuǎn)程調(diào)用Shell腳本并獲取輸出信息,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Java中用enum結(jié)合testng實(shí)現(xiàn)數(shù)據(jù)驅(qū)動的方法示例

    Java中用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-01
  • Java實(shí)現(xiàn)Huffman編碼的示例代碼

    Java實(shí)現(xiàn)Huffman編碼的示例代碼

    Huffman編碼是一種編碼方式,本文主要介紹了Java實(shí)現(xiàn)Huffman編碼的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Spring 使用JavaConfig實(shí)現(xiàn)配置的方法步驟

    Spring 使用JavaConfig實(shí)現(xiàn)配置的方法步驟

    這篇文章主要介紹了Spring 使用JavaConfig實(shí)現(xiàn)配置的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Java中各種集合判空方法總結(jié)

    Java中各種集合判空方法總結(jié)

    最近接觸集合比較多,經(jīng)常對于集合是否為空做判斷,下面這篇文章主要給大家介紹了關(guān)于Java中各種集合判空方法總結(jié)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 在java上使用亞馬遜云儲存方法

    在java上使用亞馬遜云儲存方法

    這篇文章主要介紹了在java上使用亞馬遜云儲存方法,首先寫一個配置類,寫一個controller接口調(diào)用方法存儲文件,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-01-01
  • SpringMVC獲取請求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼

    SpringMVC獲取請求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼

    這篇文章主要給大家介紹了SpringMVC獲取請求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼,文中通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2023-12-12
  • spring一個項(xiàng)目多個模塊聚合打包問題解決方案(最新推薦)

    spring一個項(xiàng)目多個模塊聚合打包問題解決方案(最新推薦)

    最近遇到個需求,針對后端解耦模塊較多的項(xiàng)目,想在云端啟動時簡潔些只啟動一個jar文件的情景,本文重點(diǎn)給大家介紹spring一個項(xiàng)目多個模塊聚合打包問題解決方案,感興趣的朋友一起看看吧
    2023-09-09
  • SpringBoot中DTO/VO/Entity相互轉(zhuǎn)換詳解

    SpringBoot中DTO/VO/Entity相互轉(zhuǎn)換詳解

    在我們平時開發(fā)中,dto、vo、entity之間的相互轉(zhuǎn)換是很頻繁的操作,這篇文章就簡單記錄一下在平時開發(fā)中SpringBoot的轉(zhuǎn)換方法,希望對大家有所幫助
    2025-01-01
  • springboot如何通過session實(shí)現(xiàn)單點(diǎn)登入詳解

    springboot如何通過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

最新評論