最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot+MyBatist實現(xiàn)前后臺交互登陸功能方式

 更新時間:2024年01月16日 16:51:48   作者:wilson_m  
這篇文章主要介紹了Springboot+MyBatist實現(xiàn)前后臺交互登陸功能方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

整體實現(xiàn)的流程

如下:

1 用戶輸入用戶名密碼

2 獲取用戶輸入的用戶名以及密碼,傳遞到后臺數(shù)據(jù)庫,進行信息查詢,如果用戶的用戶名和密碼在數(shù)據(jù)庫中存在,則登陸成功,跳轉(zhuǎn)至登陸成功的界面。反之登陸失敗,返回登陸界面,重新登陸

整個系統(tǒng)中功能實現(xiàn)的流程

如下:

前臺發(fā)送請求即要實現(xiàn)哪種功能,然后service層傳遞到mapper層,進行數(shù)據(jù)庫的交互,然后將數(shù)據(jù)庫查詢的結(jié)果進行一層一層的返回,最后在前臺頁面展示返回的結(jié)果

整個系統(tǒng)的項目結(jié)構(gòu)圖

如下:

項目結(jié)構(gòu)圖

第一步

在pom.xml文件中,添加相關(guān)依賴,代碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>First</groupId>
    <artifactId>First</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.1.1</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

添加相關(guān)依賴后,為放置啟動類會報錯,進行以下操作:

右擊pom.xml文件pom.xml->Maven會出現(xiàn)以下頁面:

導(dǎo)入依賴

里面有Reimport和Download Sources and Documention選項,兩個都點擊下。

第二步

修改application.yml配置文件,進行數(shù)據(jù)庫連接

配置文件如下:

spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/sqltest?useUnicode=true&characterEncoding=UTF-8 username: root password: root thymeleaf:

注意:sqltest是數(shù)據(jù)庫名字,sqltest后面帶問號的一串代碼,不要省去,該代碼是防止在前臺顯示數(shù)據(jù)時出現(xiàn)亂碼

第三步

書寫啟動類,在整個系統(tǒng)中只需要啟動啟動類,整個系統(tǒng)便能夠跑起來,啟動類代碼如下:

package test;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan("test.mapper")
@SpringBootApplication
public class TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);

    }
}

@MapperScan進行掃描,掃描的位置就是mapper包的路徑,因為該包下面存放的都是與數(shù)據(jù)庫交互的操作。 

如果啟動類中的代碼出現(xiàn)紅色情況,請回到第一步進行Reimport和Download Sources and Documention,該問題便會消失。

第四步

編寫實體類,代碼如下:

在entity包里面建立實體類Stu,Stu類中的屬性和數(shù)據(jù)庫中stu表的屬性一樣。

(定義基本的幾個屬性后,可以通過鍵盤上的“alt+insert”鍵,來進行自動添加該類自帶的get和set方法,以及toString方法)

package test.entity;

public class Stu {
    public String sno;
    public String sname;
    public String password;
    public String tno;
    public String tname;
    public String tgrade;

    public String getSno() {
        return sno;
    }

    public void setSno(String sno) {
        this.sno = sno;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getTno() {
        return tno;
    }

    public void setTno(String tno) {
        this.tno = tno;
    }

    public String getTname() {
        return tname;
    }

    public void setTname(String tname) {
        this.tname = tname;
    }

    public String getTgrade() {
        return tgrade;
    }

    public void setTgrade(String tgrade) {
        this.tgrade = tgrade;
    }

    @Override
    public String toString() {
        return "Stu{" +
                "sno='" + sno + '\'' +
                ", sname='" + sname + '\'' +
                ", password='" + password + '\'' +
                ", tno='" + tno + '\'' +
                ", tname='" + tname + '\'' +
                ", tgrade='" + tgrade + '\'' +
                '}';
    }
}

書寫mapper類,實現(xiàn)數(shù)據(jù)庫交互,操作數(shù)據(jù)庫(增刪改查)

代碼如下:

package test.mapper;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

@Component
public interface Common {
    @Select("select sname from stu where sno=#{sno} and password=#{password}")
    public String login(@Param("sno") String sno,@Param("password") String password);
}



其中,#{sno}是用戶輸入的用戶名,通過@Param參數(shù)的的方式傳遞。

同過用戶在前臺輸入的用戶名和密碼與數(shù)據(jù)庫比較,返回查詢到的sname屬性。

引用@Select注解進行查詢。

如果要進行更新操作,則需要使用@Update注解,括號里面是相關(guān)的sql語句,通過調(diào)用注解下面的方法,便可以實現(xiàn)該sql語句的功能。

第五步

書寫service,業(yè)務(wù)層,控制業(yè)務(wù),主要負責(zé)業(yè)務(wù)邏輯模塊的邏輯應(yīng)用設(shè)計

package test.service;

import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import test.mapper.Common;

@Service
public class CommonService {
    @Autowired
    public Common commonmapper;
    public String login(String sno, String password){
        return commonmapper.login(sno, password);
    }
}

第六步

controller控制層,負責(zé)具體的業(yè)務(wù)模塊流程的控制,即頁面訪問控制,調(diào)用service層里面的接口控制具體的業(yè)務(wù)流程

代碼如下:

package test.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import test.service.CommonService;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * Created by MWL on 2017/11/25.
 */
@Controller
public class CommonController {
    @Autowired
    public CommonService commonservice;

    @RequestMapping(value = "/", method = {RequestMethod.POST, RequestMethod.GET})
    public String login() {
        return "/login/login";
    }

    @RequestMapping(value = "/loginPage", method = {RequestMethod.POST, RequestMethod.GET})
    public String login(HttpServletRequest request, HttpSession session) {
        String tno = request.getParameter("tno");
        String password = request.getParameter("password");
        System.out.println("你輸入的用戶名為:" + tno);
        System.out.println("你輸入的密碼為:" + password);
        String tname = commonservice.login(tno, password);
        session.setAttribute("tname", tname);
        if (tname == null) {
            return "redirect:/";
        } else {
            return "redirect:/index";
        }
    }

    @RequestMapping(value = "/index", method = {RequestMethod.POST, RequestMethod.GET})
    public String loginindex() {
        return "/login/test";

    }
}

代碼解釋:

1 @RequestMapping(value = “/”)

即在地址欄輸入localhost:8080/ 的時候會跳轉(zhuǎn)到login文件夾下面的login.html頁面

2 @RequestMapping(value = “/loginPage”, method = {RequestMethod.POST, RequestMethod.GET}) HttpServletRequest request

該value的值loginPage要與login.html頁面中form中的action值一樣,是通過form表單提交數(shù)據(jù),即點擊登錄按鈕時,提交數(shù)據(jù),發(fā)送請求

String tno = request.getParameter(“tno”);改代碼是獲取前臺頁面中用戶輸入的用戶名的值,getParameter后面的tno要與form表單中tno中的name值相同。

即獲取的值為用戶名后面輸入框中的值。假設(shè)name的是a,getParameter(“a”),獲取的就是該文本框的值。(不會擅長表達,不過意思相信都能夠理解)

3 “redirect:/”

進行重定向,redirect后面跟的是什么,就返回到哪一個requestmapping的value值,也就是說"redirect:/"重新定向到了

@RequestMapping(value = “/”, method = {RequestMethod.POST, RequestMethod.GET})這串代碼的請求。

4 表單中的提交按鈕類型為submit

5 session進行綁定,用于后面登陸成功的時候知道是哪個用戶登陸的,顯示更直觀。

前臺登陸頁面代碼如下:

<!DOCTYPE html>
<html>
<head>
    <div>
        <div>登錄系統(tǒng)</div>
        <form action="loginPage" method="post">
            <table>
                <tr>
                    <td>用戶名:</td>
                    <td><input type="text" name="tno" ></input></td>
                </tr>

                <tr>
                    <td>密碼:</td>
                    <td><input type="password" name="password" ></input></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" value="登陸"></input></td>
                </tr>
            </table>
        </form>
    </div>
</head>
</html>

登陸后主頁面代碼如下:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <div>
        <h3 th:text="'歡迎您::' + ${session.tname}"></h3>
        <p>
            你好!
        </p>
        <p>如果你看到這個頁面,代表你是登陸成功了</p>
    </div>
</head>
</html>

頁面自己寫的丑,不過功能倒是實現(xiàn)了

最后,運行啟動類

在瀏覽器中輸入localhost:8080回車便出現(xiàn)以下頁面:

登陸界面

輸入用戶名以及密碼便可以登陸了

數(shù)據(jù)庫信息如下圖所示:

數(shù)據(jù)庫信息

請根據(jù)數(shù)據(jù)庫中的信息進行登陸,登陸失敗還是此界面。輸入用戶名111密碼123456,顯示登陸成功會出現(xiàn)以下界面:

總結(jié)

寫了這么長的時間,簡單功能實現(xiàn)了,感興趣的小伙伴可以根據(jù)我寫的親手試驗一下。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot實現(xiàn)quartz定時任務(wù)可視化管理功能

    SpringBoot實現(xiàn)quartz定時任務(wù)可視化管理功能

    這篇文章主要介紹了SpringBoot實現(xiàn)quartz定時任務(wù)可視化管理功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Maven項目中出現(xiàn)“非法字符:?65279”錯誤的解決辦法

    Maven項目中出現(xiàn)“非法字符:?65279”錯誤的解決辦法

    在使用Maven進行項目構(gòu)建時,有時會遇到一些意想不到的問題,其中一個常見的問題是遇到非法字符???65279??,這個字符通常被稱為零寬度無斷行空格(Zero-width?no-break?space),本文將詳細介紹如何識別和解決這個問題,需要的朋友可以參考下
    2025-12-12
  • java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析下

    java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析下

    這篇文章主要為大家介紹了java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析下,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • java必學(xué)必會之this關(guān)鍵字

    java必學(xué)必會之this關(guān)鍵字

    java必學(xué)必會之this關(guān)鍵字,java中this的用法進行了詳細的分析介紹,感興趣的小伙伴們可以參考一下
    2015-12-12
  • JavaCV攝像頭實戰(zhàn)之實現(xiàn)口罩檢測

    JavaCV攝像頭實戰(zhàn)之實現(xiàn)口罩檢測

    這篇文章主要介紹了利用JavaCV實現(xiàn)口罩檢測,功能是檢測攝像頭內(nèi)的人是否帶了口罩,把檢測結(jié)果實時標(biāo)注在預(yù)覽窗口。感興趣的可以試一試
    2022-01-01
  • maven搭建spring項目(圖文教程)

    maven搭建spring項目(圖文教程)

    下面小編就為大家?guī)硪黄猰aven搭建spring項目(圖文教程)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java畢業(yè)設(shè)計實戰(zhàn)之校園一卡通系統(tǒng)的實現(xiàn)

    Java畢業(yè)設(shè)計實戰(zhàn)之校園一卡通系統(tǒng)的實現(xiàn)

    這是一個使用了java+Springboot+Maven+mybatis+Vue+mysql+wd開發(fā)的校園一卡通系統(tǒng),是一個畢業(yè)設(shè)計的實戰(zhàn)練習(xí),具有校園一卡通系統(tǒng)該有的所有功能,感興趣的朋友快來看看吧
    2022-01-01
  • springboot項目同時啟動web服務(wù)和grpc服務(wù)的方法

    springboot項目同時啟動web服務(wù)和grpc服務(wù)的方法

    本文主要介紹了springboot項目同時啟動web服務(wù)和grpc服務(wù)的方法,通過實際代碼示例展示了實現(xiàn),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • Mybatis 動態(tài)表名+Map參數(shù)傳遞+批量操作詳解

    Mybatis 動態(tài)表名+Map參數(shù)傳遞+批量操作詳解

    這篇文章主要介紹了Mybatis 動態(tài)表名+Map參數(shù)傳遞+批量操作詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Java枚舉(Enum)從基礎(chǔ)到高級應(yīng)用詳解

    Java枚舉(Enum)從基礎(chǔ)到高級應(yīng)用詳解

    文章詳細介紹了Java枚舉(enum)的概念、基礎(chǔ)語法、內(nèi)置方法及高級用法,強調(diào)了枚舉在提高代碼類型安全性、可讀性和維護性方面的優(yōu)勢,文中還列舉了添加字段、方法和實現(xiàn)接口等高級用法,并提供了命名規(guī)范、不可變性、異常處理等最佳實踐建議,需要的朋友可以參考下
    2026-05-05

最新評論

潞城市| 巴林右旗| 合肥市| 秦皇岛市| 太谷县| 丹东市| 枣庄市| 始兴县| 皮山县| 伊春市| 教育| 霍林郭勒市| 大渡口区| 班玛县| 尚义县| 怀来县| 沙湾县| 通渭县| 西吉县| 靖远县| 临西县| 宜君县| 延长县| 灵武市| 万安县| 和田市| 长兴县| 班戈县| 黄冈市| 凭祥市| 嵊州市| 重庆市| 营山县| 宁陵县| 安图县| 介休市| 如皋市| 西充县| 出国| 上饶市| 饶平县|