从零开始的后台管理系统(1)
发布于 2020-06-30 修改于 2020-07-07 从零开始的后台管理 java springboot vue
本章前提
- 了解vue
- 了解SpringBoot
本章内容
创建sringboot项目
创建流程
- 新建项目如下图,点击next。
- Group为包名,Artifact为项目名,填写完成点击next。如下图。
- 勾选springWeb模板,点击next。如下图。
4.点击finish完成创建。如下图。
测试一下
创建一个TestController.java
。
1 | package com.guai; |
启动springboot,并访问http://localhost:8080/test
,最终会出现如下结果:
前端项目
前端项目采用的是vue-element-admin。
vue-element-admin是有两个版本,一个集成方案,里面有很多功能的样例,另一个是基础模板,只保留了后台的基本功能。
集成方案中会有很多用不到的功能,故采用基础模板vue-admin-template,之后后台需要什么功能,只需从vue-element-admin搬过来即可。
前提
需要提前安装node.js与git。
我的node与git版本如下:
下载vue-admin-template
在本地项目文件夹里打开GitBash
输入git clone git@github.com:PanJiaChen/vue-admin-template.git
,将vue-admin-template克隆到本地。
运行
输入cd vue-admin-template/
进入文件夹。
切换分支git checkout permission-control
,此分支下是根据用户来生成侧边栏跟router。
输入npm install
安装依赖。若下载速度过慢,可先输入npm install --registry=https://registry.npm.taobao.org
。
在安装完依赖之后,输入npm run dev
来启动。启动成功会自动弹出页面,如下:
查看登录相关代码
登录页面在src/views/loign/index.vue
。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44// index.vue 部分代码
//form表单
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left"> //(1)
//handleLogin
handleLogin() {
this.$refs.loginForm.validate(valid => { //(2)
if (valid) {
this.loading = true
this.$store.dispatch('user/login', this.loginForm).then(() => {
this.$router.push({ path: this.redirect || '/' })
this.loading = false
}).catch(() => {
this.loading = false
})
} else {
console.log('error submit!!')
return false
}
})
}
//loginRules
loginRules: {
username: [{ required: true, trigger: 'blur', validator: validateUsername }],//(3)
password: [{ required: true, trigger: 'blur', validator: validatePassword }]//(3)
}
//validateUsername
const validateUsername = (rule, value, callback) => {
if (!validUsername(value)) {
callback(new Error('Please enter the correct user name'))
} else {
callback()
}
}
//validatePassword
const validatePassword = (rule, value, callback) => {
if (value.length < 6) {
callback(new Error('The password can not be less than 6 digits'))
} else {
callback()
}
}
(1) 表单验证规则为loginRules()
。
(2) 点击登录会进行表单校验,登录接口请求将会写在此处。
(3) required: true
表示参数必填,trigger
表示在失去焦点触发。validator
表示失焦时会去触发的方法。
更改原有的登录
vue-admin-template
中本身的数据交互是用mock
,所以要删除mock
,更换成我们自己的服务。
打开vue.config.js
,删除before: require('./mock/mock-server.js')
,并给devServer
添加proxy
,proxy
是为了解决等下接口访问跨域的问题。1
2
3
4
5
6
7
8
9
10
11
12
13devServer: {
port: port,
open: true,
overlay: {
warnings: false,
errors: true
},
proxy: {
"/": { //所有请求转发
target:"http://localhost:8080"
}
}
}
因为我们目前使用的是dev环境,所以还要修改.env.development
中的VUE_APP_BASE_API
。1
VUE_APP_BASE_API = ''
最后修改请求接口名,scr/api/user.js
,将url中的/vue-admin-template
删除。
至此前端部分就修改好了。接下来就要编写下后端接口。
在pom.xml
添加fastjson
的依赖。1
2
3
4
5<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.13</version>
</dependency>
打开TestController.java
,添加新的登录接口和获取用户信息接口。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23"user/login") (
public Map login(@RequestBody JSONObject body){
System.out.println(body.toJSONString());
Map<String,Object> result = new HashMap<String,Object>();
Map<String,Object> data = new HashMap<String,Object>();
data.put("token","123123123");//token 暂时随便写写
result.put("data",data);
result.put("code",20000);
return result;
}
"user/info") (
public Map info(){
Map<String,Object> data = new HashMap<String,Object>();
data.put("roles","admin");
data.put("introduction","I am a super administrator");
data.put("avatar","https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");
data.put("name","Super Admin");
Map<String,Object> result = new HashMap<String,Object>();
result.put("data",data);
result.put("code",20000);
return result;
}
因为当前前端分支会在登录后去获取用户信息,故多加了user/info
接口。
启动springboot服务与前端服务,进入登录页面点击登录即可成功。
登录后,后端控制台打印:
登录后页面:
结束语
此篇章只是运行程序以及打通数据,还是很简单的,下一章就是给后端创建基本的雏形。