基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(一)

Vue.js 是一个流行的前端框架,用于构建用户界面和单页应用程序。Vue 2 是其第二个主要版本,它提供了数据绑定、组件化、虚拟DOM等核心特性。要搭建一个 Vue 2 的工程化项目,可以遵循以下步骤:

一、前端环境搭建

(一)安装nodejs并配置环境变量

1、安装过程参考:

nodejs安装

标题2、环境配置参考:

nodejs相关环境配置
其中配置全局安装目录目的
就是新建一个自定义目录的文件夹, 存放之后将要安装的将一些Vue-Cli脚手架、以及产生的缓存等数据(如果我们不指定的话它就自动在c盘下的文件夹存放,不想c盘空间爆红的话建议自己确定一个存放目录

(二)安装Vue-Cli 脚手架

1、在cmd终端中输入以下命令进行全局安装:

npm install -g @vue/cli

2、创建Vue项目

2.1

使用cd命令进入你准备创建项目的文件夹,在该文件夹下新建我们的VUE工程项目:
例如我在D:\my_workspace\myProjects文件夹下创建名为:pro_1_management 的项目,那么进入该文件夹在终端输入命令:vue create pro_1_management,回车
在这里插入图片描述

3、这将启动一个交互式流程,让你选择配置选项,按向下键选择Manually select features

然后按空格键,回车
在这里插入图片描述

4、选择如下配置(使用空格键选中)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5、项目创建完成在这里插入图片描述

来看看创建好的项目文件夹里有什么

在这里插入图片描述

6、在VsCode中打开该创建好的项目

在这里插入图片描述
在这里插入图片描述

7、启动项目

快捷键:ctrl+tab上面的波浪键----- 打开VsCode终端
然后cd命令进入该项目:cd pro_1_management
输入启动命令:npm run serve
在这里插入图片描述

8、按住ctrl并单击上图中圈3链接,会在浏览器打开如下界面,说明脚手架环境搭建成功。

在这里插入图片描述

二、用户管理页面**

在第一章节中,我们完成了项目开发环境和运行环境的搭建。第二章节来搭建EJob管理系统中的用户管理界面

(一)页面整体布局搭建

1、先安装element-ui

####在终端按ctrl+c键,输入Y,就暂停终端运行了,然后输入以下命令,等待安装

npm i element-ui -S

2、给main.js文件添加代码

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
完整代码如下图:

在这里插入图片描述

3、修改HomeView.vue文件

用以下代码段替换下图中划掉的代码
<el-container>
  <el-aside width="200px">Aside</el-aside>
  <el-container>
    <el-header>Header</el-header>
    <el-main>Main</el-main>
  </el-container>
</el-container>

在这里插入图片描述

代码段出处:Element网站(下面的代码出处同理)

Continer布局容器
在这里插入图片描述

2、删除App.vue文件中如下3~6行的代码

在这里插入图片描述

3、修改后保存,运行项目

终端运行命令:npm run serve
浏览器查看效果:

在这里插入图片描述

4、继续修改HomeView.vue文件

4.1修改侧边栏Aside
用下面的代码段替换掉下图中划掉的代码
<el-menu
      default-active="2"
      class="el-menu-vertical-demo"
      @open="handleOpen"
      @close="handleClose"
      background-color="#545c64"
      text-color="#fff"
      active-text-color="#ffd04b">
      <el-submenu index="1">
        <template slot="title">
          <i class="el-icon-location"></i>
          <span>导航一</span>
        </template>
        <el-menu-item-group>
          <template slot="title">分组一</template>
          <el-menu-item index="1-1">选项1</el-menu-item>
          <el-menu-item index="1-2">选项2</el-menu-item>
        </el-menu-item-group>
        <el-menu-item-group title="分组2">
          <el-menu-item index="1-3">选项3</el-menu-item>
        </el-menu-item-group>
        <el-submenu index="1-4">
          <template slot="title">选项4</template>
          <el-menu-item index="1-4-1">选项1</el-menu-item>
        </el-submenu>
      </el-submenu>
      <el-menu-item index="2">
        <i class="el-icon-menu"></i>
        <span slot="title">导航二</span>
      </el-menu-item>
      <el-menu-item index="3" disabled>
        <i class="el-icon-document"></i>
        <span slot="title">导航三</span>
      </el-menu-item>
      <el-menu-item index="4">
        <i class="el-icon-setting"></i>
        <span slot="title">导航四</span>
      </el-menu-item>
    </el-menu>

在这里插入图片描述

Ctrl+S保存,浏览器查看效果

在这里插入图片描述

4.2修改Header、Main部分
用下面的代码段依次替换掉下图中划掉的代码

在这里插入图片描述

替换Header
<el-dropdown>
<i class="el-icon-arrow-down el-icon--right"></i>
  <span class="el-dropdown-link">
    巴旦木榛
  </span>
  <el-dropdown-menu slot="dropdown">
    <el-dropdown-item>查看</el-dropdown-item>
    <el-dropdown-item>新增</el-dropdown-item>
    <el-dropdown-item>删除</el-dropdown-item>
  </el-dropdown-menu>
</el-dropdown>
替换Main
		<el-table
            :data="tableData"
            style="width: 100%">
              <el-table-column
                prop="date"
                label="日期"
                width="180">
              </el-table-column>
              
              <el-table-column
                prop="name"
                label="姓名"
                width="180">
              </el-table-column>
              
              <el-table-column
                prop="address"
                label="地址">
              </el-table-column>
            </el-table>
修改<script></script>里的内容,完整代码如下
<script>
// @ is an alias to /src(@是/src的别名)
import HelloWorld from '@/components/HelloWorld.vue'

export default {
  name: 'HomeView',
  /*
  components:{}不能与下面的data一起出现
  */
data(){//这里变量名与上面的字段名有对应关系
   const item = { 
    date: '2017-03-026',
    name: '王小明',
    address: '新疆伊犁哈萨克自治州艾兰木巴格街道'
   };
   // 这里用数据函数批量生成表格中数据
   return {
    tableData: Array(10).fill(item)
   }
  }
 }
</script>

5、ctrl+s保存,浏览器查看效果

在这里插入图片描述

(二)页面优化

上一小节我们完成了用户管理页面基础布局的搭建,本小节我们针对页面效果不理想的地方进行优化。

1、优化侧边栏使其高度占满浏览窗口

在assets文件夹下新建文件gloable.css,添加全局样式,具体代码如下
html,body,div{
    margin:0;
    padding:0;
}
html,body{
    height: 100%;
}
1.1、在main.js中引入gloable.css
import './assets/gloable.css' 

在这里插入图片描述

2、修改HomeView.vue

2.2、复制以下代码替换该文件之前的所有代码
代码如下
<template>
  <div class="home">
  <!--侧边菜单栏设计开始-->
    <el-container style="height: 100%; border: 1px solid #eee">
      <el-aside width="200px" >
      <!--菜单栏整体设置-->
      <el-menu style="min-height:100%; overflow-x:hidden"  
      default-active="2"  
      class="el-menu-vertical-demo"  
      background-color="#67C23A"
      text-color="#000000"
      active-text-color="#D56C0C"> 
      <!--菜单栏标题--> 
      <div style="height:60px; line-height:60px; text-align:center">
        <img src="../assets/logo.png" style="width:20px;position:relative;top:5px;margin-right:5px"/>
        <b style="color:white">EJob管理系统</b>
      </div>
      <!--菜单栏导航-->
      <el-submenu index="1">
        <template slot="title">
          <i class="el-icon-location"></i>
          <span>导航一</span>
        </template>
        <el-menu-item-group>
          <template slot="title">分组一</template>
          <el-menu-item index="1-1">选项1</el-menu-item>
          <el-menu-item index="1-2">选项2</el-menu-item>
        </el-menu-item-group>
        <el-menu-item-group title="分组2">
          <el-menu-item index="1-3">选项3</el-menu-item>
        </el-menu-item-group>
        <el-submenu index="1-4">
          <template slot="title">选项4</template>
          <el-menu-item index="1-4-1">选项1</el-menu-item>
        </el-submenu>
      </el-submenu>
      <el-menu-item index="2">
        <i class="el-icon-menu"></i>
        <span slot="title">导航二</span>
      </el-menu-item>
      <el-menu-item index="3" disabled>
        <i class="el-icon-document"></i>
        <span slot="title">导航三</span>
      </el-menu-item>
      <el-menu-item index="4">
        <i class="el-icon-setting"></i>
        <span slot="title">导航四</span>
      </el-menu-item>
    </el-menu>
      </el-aside>
      <!--侧边菜单栏设计结束-->
<el-container>
        <!--用户头部栏设计开始-->
          <el-header style="text-align: right; font-size: 12px; border-bottom:1px solid red; line-height:60px">
            <el-dropdown>
              <i class="el-icon-setting el-icon--right"></i>
                <span class="el-dropdown-link">阿丽巴旦古丽榛</span>
                <el-dropdown-menu slot="dropdown">
                  <el-dropdown-item>个人信息</el-dropdown-item>
                  <el-dropdown-item>退出</el-dropdown-item>
                </el-dropdown-menu>
            </el-dropdown>
          </el-header>
          <!--用户头部栏设计结束-->
          <!--页面主体设计开始-->
          <el-main>
          <!--搜索栏设计开始-->
          <div style="padding:10px">
              <el-input style="width:250px" suffix-icon="el-icon-search" placeholder="请输入名称搜索"></el-input>
              <el-input style="width:250px" suffix-icon="el-icon-email" placeholder="请输入邮箱搜索"></el-input>
              <el-input style="width:250px" suffix-icon="el-icon-position" placeholder="请输入地址搜索"></el-input>
              <el-button style="margin-left:5px" type="primary">搜索</el-button>
          </div> 
          <!--搜索栏设计结束-->
          <!--批量操作按钮设计开始-->
          <div style="margin:10px">
              <el-button type="primary">新增<i class="el-icon-circle-plus"></i></el-button>
              <el-button type="danger">批量删除<i class="el-icon-remove"></i></el-button>
              <el-button type="primary">导入<i class="el-icon-bottom"></i></el-button>
              <el-button type="primary">导出<i class="el-icon-top"></i></el-button> 
          </div>
          <!--批量操作按钮设计结束-->
          <!--表格设计开始-->
            <el-table
            :data="tableData"
            style="width: 100%">
              <el-table-column
                prop="date"
                label="日期"
                width="180">
              </el-table-column >
              <el-table-column
                prop="name"
                label="姓名"
                width="180">
              </el-table-column>
              <el-table-column
                prop="address"
                label="地址">
              </el-table-column>
              <!--表格设计结束-->
                <!--行工具栏操作按钮设计开始-->
                <el-table-column fixed="right" label="操作">
                <template slot-scope="scope">
                  <el-button type="success" size="small" icon="el-icon-edit">编辑</el-button>
                  <el-button type="danger" size="small"  icon="el-icon-delete">删除</el-button>
                </template>
              </el-table-column>
              <!--行工具栏操作按钮设计结束-->
            </el-table>
            <!--表格设计结束-->
          <!--添加分页功能,text-align:left靠左-->
            <div style="padding:10px;text-align:left">
              <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="currentPage4"
              :page-sizes="[5, 10, 15, 20]"
              :page-size="10"
              layout="total, sizes, prev, pager, next, jumper"
              :total="400">
              </el-pagination>
            </div>
          <!--分页结束-->
          </el-main>
        </el-container>
    </el-container>
  </div>
</template>

<script>
// @ is an alias to /src(@是/src的别名)
import HelloWorld from '@/components/HelloWorld.vue'

export default {
  name: 'HomeView',
  data(){//这里变量名与上面的字段名有对应关系
    const item = { 
      date: '2019-03-026',
      name: '古丽埃克索',
      address: '新疆伊犁哈萨克自治州艾兰木巴格街道'
    };
    return {// 这里用数据函数批量生成表格中数据
      tableData: Array(10).fill(item),
      currentPage4: 5  // 这里设置分页框中的数字
    }
  },
  // 添加分页功能函数
  method: {
      handleSizeChange(val) {
        console.log(`每页 ${val}`);
      },
      handleCurrentChange(val) {
        console.log(`当前页: ${val}`);
      }
    }
 }
</script>
<!--scope:定义局部组件适用样式-->
<style scope>
.el-main{
  text-align: left;
}
</style>

3、保存后浏览器查看效果

优化后界面效果

(三)用户管理页面后端

上一小节我们完成了用户管理页面前端页面搭建与优化,本小节我们用IDEA编写用户管理模块后端,这样前后端联通后就能进行真正的数据交互。

1、新建工程

特别提醒:如果JDK不能选8,可以换源,如下图,点击设置按钮,把阿里云链接复制到框内,点击🆗,就能选8了,项目名称自定义,我的存放位置是前端项目同级文件夹下。
在这里插入图片描述

点击next,选择好SpringBoot版本,然后如图选择下面的几个插件,点击creat

在这里插入图片描述

2、修改application.properties文件名为application.yml,并添加以下代码:

server:
  port: 8085
spring:
  datasource:
    username: root
    #下面这里改成自己的数据库密码
    password: ******
    #url中database为对应的数据库名称,我这里是mysql
    url: jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
    cache: false
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3、在添加thymeleaf依赖

内测后端环境时要在项目中创建html页面,所以添加thymeleaf依赖,后期用Vue+ElementUI,就不需要thymeleaf了。
3.1、在pom.xml中添加以下依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
3.2、新建controller包,包里新建类来设置控制器路由

在这里插入图片描述

3.3、resources下新建templates包,包下添加main.html文件

在这里插入图片描述

4、运行测试

4.1、报错

在这里插入图片描述

4.2、降低pom.xml中的SpringBoot、MyBatis版本以及maven中的版本(maven没有版本号就不用修改)

在这里插入图片描述
在这里插入图片描述

4.3、再次运行成功启动

在这里插入图片描述

4.4、浏览器查看效果

在这里插入图片描述

5、热部署(非必须)

5.1、在pom中添加依赖
      <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
5.2、修改编译配置
然后点击 :apply——>🆗

在这里插入图片描述

5.3、关闭并重启项目,热部署生效

6、前后端传值测试

6.1、测试后端向前端传值
(1)添加路由(提供了两种方式)
    @GetMapping("/")
    /*Map方式
    public String index(Map<String, Object> map){
        map.put("msg", "Hello, Spring Boot!");
        return "login.html";
    }*/
    /*Model 方式*/
    public String index(Model model){
        model.addAttribute("msg", "Hello 同学");
        return "login.html";
    }
(2)新建login.html文件
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>登录</title>
</head>
<body>
  <h1>登录</h1>
  <span th:text="${msg}"></span>
</body>
</html>
(3)浏览器输入http://localhost:8085/,回车,查看运行效果

在这里插入图片描述

6.2、测试前端向后端传值
(1)修改前端login.html页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>欢迎登录</title>
    <link rel="shortcut icon" href="#">
</head>
<body>
<form action="login" method="post">
    <table>
        <h2><span th:text="${msg}"></span></h2>
        <tr>
            <td>用户名: </td>
            <td>
                <input  type="text" name="username"/>
            </td>
        </tr>
        <tr>
            <td>密码: </td>
            <td>
                <input  type="password" name="password"/>
            </td>
        </tr>
        <tr>
            <td>
                <input  type="submit" value="登录"/>
            </td>
        </tr>
    </table>
</form>
</body>
</html>
(2)controller中添加路由
 @PostMapping("/login")
    public String login(String username, String password) {
        System.out.println("用户名是:"+username+"密码是:"+password);
        return "main.html";
    }
(3)保存运行

随便输入一个账号密码,点击登录,触发路由指向后台login的事件,数据向后台传递。
在这里插入图片描述

(4)查看后台数据

在这里插入图片描述

(5)页面跳转成功

在这里插入图片描述

### 回答1: 在写一个前后端分离后台管理系统时,您可以使用 Spring Boot 作为后端框架, Vue.js 作为前端框架,MyBatis 作为数据访问框架。 首先,您需要在 Spring Boot 中配置 MyBatis,连接到数据库并编写相应的 SQL 语句。然后,您可以编写后端控制器来处理 HTTP 请求,并使用 MyBatis 执行数据库操作。 在前端部分,您可以使用 Vue.js 构建用户界面,并使用 Axios 等库与后端进行交互。当用户在前端界面中进行操作时,Vue.js 将调用相应的函数并发送 HTTP 请求到后端。后端控制器将处理请求并返回响应,Vue.js 将使用响应更新前端界面。 总的来说,使用 Spring BootVue.jsMyBatis 开发前后端分离后台管理系统是一个不错的选择,它们提供了良好的支持和工具,帮助您快速构建功能丰富、可扩展的后台管理系统。 ### 回答2: 要写一个前后端分离后台管理系统,首先需要明确系统的功能和需求,然后结合Spring BootVueMyBatis这三个框架进行开发。 1. 后端开发: - 使用Spring Boot搭建后台服务,配置相关依赖和基本的配置。 - 设计数据库表结构,并使用MyBatis进行数据库操作。 - 创建后端接口,包括用户管理、权限管理、数据查询等功能,并使用MyBatis实现相关的数据操作。 - 配置接口的权限验证,使用Spring Security进行登录认证和权限控制。 2. 前端开发: - 使用Vue框架搭建前端界面,并配置相关依赖和基本的配置。 - 设计后台管理系统的页面布局和样式,使用Vue Router进行前端路由管理。 - 实现用户登录和权限验证功能,与后端接口进行通信,使用Axios进行数据请求和响应处理。 - 开发各个功能模块的前端页面,包括用户管理、权限管理、数据查询等,并与后端接口进行数据交互。 3. 前后端协作: - 前后端的数据交互一般使用JSON格式,后端通过Spring Boot提供的@RestController注解,返回JSON格式的数据给前端。 - 前端通过Axios库发送请求给后端接口,获取数据并进行处理展示。 - 前后端对接口的定义和数据格式进行约定,确保数据的有效性和一致性。 - 前后端进行联调和测试,确认系统正常运行并满足需求。 总之,使用Spring BootVueMyBatis可以很好地实现一个前后端分离后台管理系统。通过后端提供接口和数据服务,前端实现页面展示和用户操作,两者通过数据交互实现系统功能。这种架构可以提高开发效率和可维护性,实现前后端的解耦和灵活性。 ### 回答3: 将SpringBootVueMyBatis结合起来构建一个前后端分离后台管理系统可以分为以下几个步骤: 1. 创建SpringBoot项目:首先,我们需要创建一个SpringBoot项目作为后端服务。可以使用Spring Initializr快速搭建项目基础结构,并且添加所需的依赖,如Spring Web、Spring Data JPA、MyBatis等。 2. 设计数据库结构:根据后台管理系统的需求,设计数据库表结构,并使用MyBatis创建对应的实体类和Mapper接口。 3. 编写后端API:在SpringBoot项目中,编写对应的Controller类,实现接口的定义和业务逻辑。通过注解配置路由信息,用于定义API的访问路径和请求方式,同时接收前端传递的参数并返回相应的结果。 4. 创建Vue项目:使用Vue脚手架工具(例如Vue CLI)创建一个新的Vue项目作为前端界面。在项目初始化中选择自己喜欢的UI框架(如ElementUI),并安装需要的插件和依赖。 5. 编写前端页面:根据后台管理系统的需求,设计并编写相应的页面组件。利用Vue的组件化开发,将整个页面划分为不同的组件,并进行组件的构建和样式的设计。 6. 实现前后端数据交互:在Vue项目中,使用axios或者其他HTTP请求库与后端建立请求连接,发送API请求,并接收后端返回的数据。可以使用Vue的生命周期钩子函数或者Vuex来处理数据的请求和响应。 7. 页面路由与导航:根据后台管理系统的需求,在Vue项目中设置路由信息,配置页面导航和跳转功能。可以利用Vue Router进行路由的管理和操作。 8. 测试和部署:完成以上步骤后,进行系统的单元测试和集成测试,并进行系统的部署和上线。 通过以上步骤,就可以使用SpringBootVueMyBatis构建一个前后端分离后台管理系统。前端通过Vue实现了页面的展示和交互逻辑,后端通过SpringBoot提供了API的定义和业务处理,而MyBatis则负责与数据库之间的交互操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值