前端如何接收实体类list_Vue.js---实现前后端分离架构中前端页面搭建(三)

dde71394429ed60d6ebc49601112dcb5.png

【Vue.js实现前后端分离架构中前端页面搭建】

十四、Vue Element

Vue Element 就是Vue的扩展插件。

在课堂上使用Eleme 提供的Vue 2.0插件。

a50e8164f1865035e8bc19e467eab26b.png

1. 添加依赖

安装element-ui。直接在IDEA中terminal中运行

9a58aab134f8efd6c9f02e616f9e7fb6.png

25e699b8dedda308bde4b2d213e05016.png

2. 引入Element依赖

修改main.js ,添加红色三行代码。表示引入eleme element

(官网文档 -> 快速上手中就是下面代码)

f9d4832c6020f166544cd158013aea95.png

3. 添加标签

在App.vue中添加Eleme官网中组件内容。以按钮举例。

899f6a8d2e1814b94699ba5203d02861.png

4. 查看页面

在页面中会显示带有样式的按钮

3e59d691424adf8b3072a4fd7f7ee4bf.png

十五、Elment Form

1. 编写服务器端代码

@RequestMapping("/register")
public int register(String name,Integer age,String address){
    System.out.println(name);
    System.out.println(age);
    System.out.println(address);
    return 1;
}

2. 编写前端代码

修改App.vue如下

<template>
    <div>
        <el-form ref="form" :model="form" label-width="80px">
            <el-form-item label="姓名">
                <el-input v-model="form.name"></el-input>
            </el-form-item>
            <el-form-item label="年龄">
                <el-input v-model="form.age"></el-input>
            </el-form-item>
            <el-form-item label="地址">
                <el-input v-model="form.address"></el-input>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="onSubmit">立即创建</el-button>
                <el-button>取消</el-button>
            </el-form-item>
        </el-form>
    </div>
</template>

<script>
    export default {
        data() {
            return {
                form: {
                    name: '',
                    age:'',
                    address:''
                }
            }
        },
        methods: {
            onSubmit() {
                this.$axios.post("/api/register",this.$qstring.stringify({
                    name:this.form.name,
                    age:this.form.age,
                    address:this.form.address
                }))
                    .then(res => {
                        if(res.data==1){
                            this.$message({
                                message: '恭喜你,这是一条成功消息',
                                type: 'success'
                            });
                        }
                    })
            }
        }
    }
</script>

3. 页面效果

265c01c455c681059d3af844ace0b3cd.png

十六、Element Table

1. 编写服务器端代码

新建实体类com.bjsxt.pojo.People

@Data
@AllArgsConstructor
@NoArgsConstructor
public class People {
    private String name;
    private Integer age;
    private String address;
}

编写控制器方法

@RequestMapping("/show")
public List<People> show(){
    List<People> list = new ArrayList<>();
    list.add(new People("张三",12,"北京"));
    list.add(new People("李四",13,"上海"));
    return list;
}

2. 编写Vue项目

修改App.vue

<template>
    <el-table
            :data="tableData"
            border
            style="width: 100%">
        <el-table-column
                prop="name"
                label="姓名"
                width="150">
        </el-table-column>
        <el-table-column
                prop="age"
                label="年龄"
                width="120">
        </el-table-column>
        <el-table-column
                prop="address"
                label="地址"
                width="120">
        </el-table-column>
    </el-table>
</template>

<script>
    export default {
        data() {
            return {
                tableData: []
            }
        },
        mounted() {
            this.$axios.get("/api/show")
                .then(res => {
                    this.tableData = res.data;
                })
        }
    }
</script>

3. 效果

5388269cfaf94a092c9da88affef3f40.png

十七、搭建登录页面

1. 新建项目

新建Vue.js项目,命名为backend

2. 添加依赖

在Terminal下运行下面命令

添加路由依赖

727267f0263b14a3aa0973246e8b968f.png

添加Element-UI依赖

4471f01470c1bacb987e63591722ba09.png

3. 新建登录页面

在src下新建views/Login.vue

<template>
    <div id="login-div">
        <el-form ref="form" :model="form" label-width="80px">
            <el-form-item>
                <el-tag style="font-size: 30px; height: 35px; line-height: 35px;">欢迎使用S101后台管理系统</el-tag>
            </el-form-item>
            <el-form-item label="用户名">
                <el-input v-model="form.username" placeholder="请输入用户名"></el-input>
            </el-form-item>
            <el-form-item label="密码">
                <el-input placeholder="请输入密码" v-model="form.password" show-password></el-input>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="onSubmit">登录</el-button>
            </el-form-item>
        </el-form>
    </div>
</template>

<script>
    export default {
        data() {
            return {
                form: {
                    username: '',
                    password:''
                }
            }
        },
        methods: {
            onSubmit() {
                console.log('submit!');
            }
        }
    }
</script>

<style scoped>
#login-div{
    width: 500px;
    margin: 0px auto;
}
</style>

4. 配置路由

在src目录下新建router/index.js.

以后每次新建页面都需要把红色部分再写一遍。

8576c4dfbcaab183b50570c9d77ec2da.png

5. 修改main.js文件

import Vue from 'vue'
import App from './App.vue'
import router from "@/router";
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.config.productionTip = false
Vue.use(ElementUI);

new Vue({
  router,
  render: h => h(App),
}).$mount('#app')

6. 访问页面

在浏览器输入:http://localhost:8080

e2cd39be84f1bc56233a1c145de7178a.png

十八、登录页面网络请求功能

1. 安装axios组件

在terminal中运行

4a9149eaa40aa1aa2150e40f535826e5.png

2. 修改main.js

设置两个全局属性

import Vue from 'vue'
import App from './App.vue'
import router from "@/router";
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import axios from "axios"
import qstring from "querystring"

Vue.prototype.$axios = axios
Vue.prototype.$qstring=qstring

Vue.config.productionTip = false
Vue.use(ElementUI);

new Vue({
  router,
  render: h => h(App),
}).$mount('#app')

3. 新建Main.vue

页面只有字符串main

<template>
    <div>
        main
    </div>
</template>

<script>
    export default {
        name: "Main"
    }
</script>

<style scoped>

</style>

4. 修改路由配置

修改router/index.js

import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from "@/views/Login";
import Main from "@/views/Main";

Vue.use(VueRouter);
const router = new VueRouter({
    mode:"history",
    routes:[
        {
            path:"/",
            component:Login
        },
        {
            path:"/main",
            component:Main
        }
    ]
});
export default router

5. 修改Login.vue

添加了两个功能:

  1. 添加了客户端验证
  2. 添加了表单数据发送
<template>
    <div id="login-div">
        <el-form ref="form" :model="form" label-width="80px">
            <el-form-item>
                <el-tag style="font-size: 30px; height: 35px; line-height: 35px;">欢迎使用S101后台管理系统</el-tag>
            </el-form-item>
            <el-form-item label="用户名" prop="username" :rules="[
                  { required: true, message: '用户名不能为空'}
                ]">
                <el-input type="username" v-model="form.username" placeholder="请输入用户名"></el-input>
            </el-form-item>
            <el-form-item label="密码" prop="password" :rules="[
                  { required: true, message: '密码不能为空'}
                ]">
                <el-input placeholder="请输入密码" v-model="form.password" show-password></el-input>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="onSubmit">登录</el-button>
            </el-form-item>
        </el-form>
    </div>
</template>

<script>
    export default {
        data() {
            return {
                form: {
                    username: '',
                    password:''
                }
            }
        },
        methods: {
            onSubmit() {
                this.$refs["form"].validate((valid) => {
                    if (valid) {
                        this.$axios.post("http://localhost:8081/login",this.$qstring.stringify({
                            username:this.form.username,
                            password:this.form.password
                        })).then(res => {
                           if(res.data.status==200){
                               // Vue 中使用JS实现路由跳转功能
                               this.$router.push("/main");
                           }else{
                               this.$message.error('用户名或密码错误');
                           }
                        })
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                });
            }
        }
    }
</script>

<style scoped>
#login-div{
    width: 500px;
    margin: 0px auto;
}
</style>

十九、配置代理

1. 新建配置文件

在项目根路径下新建vue.config.js

module.exports = {
    devServer: {
        proxy: {
            '/api': {
                // 网关地址 Gateway
                target: 'http://localhost:8090/',
                ws: true,
                pathRewrite: {
                    '^/api': ''
                },
                changeOrigin: true
            }
        }
    }
}

2. 修改Login.vue

原代码

87aaf87a50804c3ba72dedfe16e0782c.png

修改后代码

59d0732b0ec0988aa125f1ef2c6e1ca6.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值