SpringBoot+Vue前后端分离开发案例

1.后端准备工作

准备sql

CREATE DATABASE demo CHARSET 'utf8';
USE demo;
CREATE TABLE whitelist_setting
(
    id           BIGINT      NOT NULL AUTO_INCREMENT,
    `name`       VARCHAR (150) NOT NULL COMMENT '用户名',
    PASSWORD     VARCHAR (150) NOT NULL COMMENT '密码',
    role_id      BIGINT COMMENT '用户角色id',
    is_enabled   BOOL         NOT NULL DEFAULT 1 COMMENT '是否启用',
    is_deleted   BOOL         NOT NULL DEFAULT 0 COMMENT '是否删除',
    gmt_created  TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    gmt_modified TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (id)
);
INSERT INTO whitelist_setting(`name`,`password`) VALUE('test','123456');

创建SpringBoot项目

创建项目略,引入pom.xml配置(可能有冗余)

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
            <scope>runtime</scope>
        </dependency>

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

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

删除原配置文件application.properties,创建新配置文件application.yml并添加数据库配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://172.16.0.3:3306/demo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
    username: root
    password: admin

创建项目包结构与文件 在这里插入图片描述具体文件内容如下
WhitelistSettingController.java

package com.example.demo.controller;

import com.example.demo.entity.WhitelistSetting;
import com.example.demo.service.WhitelistSettingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/whitelistSetting")
public class WhitelistSettingController {
   @Autowired
   private WhitelistSettingService whitelistSettingService;

   @PostMapping("login")
   public WhitelistSetting login(@RequestBody WhitelistSetting whitelistSetting){
       WhitelistSetting user = whitelistSettingService.login(whitelistSetting);
       return user;
   }
}

WhitelistSetting.java

package com.example.demo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

@Data
@Accessors(chain = true)
public class WhitelistSetting extends Model<WhitelistSetting> {

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    private String name;

    private String password;

    private Long roleId;

    @TableField(value = "is_enabled")
    private Boolean enabled;

    @TableField(value = "is_deleted")
    @TableLogic
    private Boolean deleted;

    private LocalDateTime gmtCreated;

    private LocalDateTime gmtModified;

}

WhitelistSettingMapper.java

package com.example.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.WhitelistSetting;

public interface WhitelistSettingMapper extends BaseMapper<WhitelistSetting> {

}

WhitelistSettingServiceImpl.java

package com.example.demo.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demo.entity.WhitelistSetting;
import com.example.demo.mapper.WhitelistSettingMapper;
import com.example.demo.service.WhitelistSettingService;
import org.springframework.stereotype.Service;

@Service
public class WhitelistSettingServiceImpl extends ServiceImpl<WhitelistSettingMapper, WhitelistSetting> implements WhitelistSettingService {
    @Override
    public WhitelistSetting login(WhitelistSetting whitelistSetting) {
        QueryWrapper<WhitelistSetting> wrapper = new QueryWrapper<>();
        wrapper.eq("name",whitelistSetting.getName())
                .eq("password", whitelistSetting.getPassword())
                .eq("is_enabled", 1);
        WhitelistSetting user = baseMapper.selectOne(wrapper);
        return user;
    }
}

WhitelistSettingService.java

package com.example.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.entity.WhitelistSetting;

public interface WhitelistSettingService extends IService<WhitelistSetting> {
    WhitelistSetting login(WhitelistSetting whitelistSetting);
}

DemoApplication.java

package com.example.demo;

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

@SpringBootApplication
@MapperScan({"com.example.demo.mapper"})
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

WhitelistSettingMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisplus.mapper.WhitelistSettingMapper">

</mapper>

前端准备

创建vue项目并下载axios与element-ui依赖

npm add axios
npm i element-ui -S

在 main.js 中写入以下内容:

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
 
 
Vue.use(ElementUI)

配置跨域

在 config\index.js 中,找到 proxyTable 位置,修改为以下内容:

proxyTable: {
      '/api': {
        target: 'http://localhost:8080',// 要代理的域名
        changeOrigin: true,// 允许跨域
        pathRewrite: {
          '^/api': '/api' 
        }
      }
    }

创建Login.vue

Login.vue

<template>
 <div class="loginbody">
   <div class="logindata">
     <div class="logintext">
       <h2>登录界面</h2>
     </div>
     <div class="formdata">
       <el-form>
         <el-form-item>
           <el-input
             v-model="user.name"
             clearable
             placeholder="请输入用户名"
           ></el-input>
         </el-form-item>
         <el-form-item>
           <el-input
             v-model="user.password"
             clearable
             placeholder="请输入密码"
             show-password
           ></el-input>
         </el-form-item>
       </el-form>
     </div>
     <div class="butt">
       <el-button type="primary" @click="login">登录</el-button>
     </div>
   </div>
 </div>
</template>

<script>
import axios from 'axios'
export default {
 name: 'login',
 data () {
   return {
     user: {
       name: '123',
       password: '123'
     }
   }
 },
 methods: {
   login () {
     axios.post('/api/whitelistSetting/login', this.user).then(res => {
      if (res.data) {
         this.$message({
           message: '登录成功',
           type: 'success'
         })
       } else {
         this.$message({
           message: '用户名或密码错误或账号被禁用',
           type: 'warning'
         })
       }
     })
   }
 }
}
</script>

<style scoped>
 .loginbody {
   width: 100%;
   height: 100%;
   min-width: 1000px;
   background-image: url("../assets/loginbg.jpeg");
   background-size: 100% 100%;
   background-position: center center;
   overflow: auto;
   background-repeat: no-repeat;
   position: fixed;
   line-height: 100%;
   padding-top: 150px;
 }

 .logintext {
   margin-bottom: 20px;
   line-height: 50px;
   text-align: center;
   font-size: 30px;
   font-weight: bolder;
   color: white;
   text-shadow: 2px 2px 4px #000000;
 }

 .logindata {
   width: 400px;
   height: 300px;
   transform: translate(-50%);
   margin-left: 50%;
 }

 .tool {
   display: flex;
   justify-content: space-between;
   color: #606266;
 }

 .butt {
   margin-top: 10px;
   text-align: center;
 }

 .shou {
   cursor: pointer;
   color: #606266;
 }

 /*ui*/
 /* /deep/ .el-form-item__label {
   font-weight: bolder;
   font-size: 15px;
   text-align: left;
 }

 /deep/ .el-button {
   width: 100%;
   margin-bottom: 10px;

 } */
</style>

附背景图:
在这里插入图片描述最终实现效果:
在这里插入图片描述在这里插入图片描述

  • 61
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听夜雨声烦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值