springboot+vue+iview整合登录demo

使用工具​​​​​:IDEA、Visual Studio Code

一、前端

1、安装node.js

2、安装vue

3、使用webpack创建vue项目

有需要的话安装淘宝镜像,为了加快安装所需要的依赖速度,npm是国外服务器  cmd中使用命令行

npm install -g cnpm --registry= https://registry.npm.taobao.org

安装webpack

npm install webpack -g	

安装vue-cli脚手架

npm install vue-cli -g

cd到目录路径(该目录是自己选择的放置vue项目的目录) 

如果几经安装git的,自己选择一个目录放置vue项目,在相关目录右键选择Git Bash Here

vue init webpack 项目名

接下的操作中没有选择选项的直接按enter,选择的输入y,建议在

? Use ESLint to lint your code? (Y/n) n ---------------------是否启用eslint检测规则, 选择n

cd项目名(注意)

cd 项目名

添加项目依赖

npm install

运行测试

npm run dev

(若是使用了淘宝镜像,将上面的命令中的 npm 改为cnpm)

4、使用Visual Studio Code 打开vue项目  File>open>folder

使用Visual Studio Code自己安装一些vue相关插件

对于开发环境中的跨域问题使用的是axios处理,打开Visual Studio Code的命令行窗口,快捷键Ctrl + ~,安装axios

npm install axios

项目目录结构  

 footer.vue代码

<template>
    <div>
        <span>
            这是尾部
        </span>
    </div>
</template>

<script>
    export default {
        name:'footer'
    }
</script>

<style lang="">
    
</style>

 header.vue代码

<template>
    <div>
        <span>
            这是头部
        </span>
    </div>
</template>

<script>
    export default {
        name:'header'
    }
</script>

<style lang="">
    
</style>

login.vue代码

<!-- 这是登录页 -->
<template>
    <div>
        <header></header>
        <div>这是登录页</div>
        <template>
            <div>
                <Form ref="user" :model="user" :rules="ruleInline" inline>
                    <div>
                        <FormItem prop="username">
                            <Input type="text" v-model="user.username" placeholder="请输入用户名">
                                <Icon type="ios-person-outline" slot="prepend"></Icon>
                            </Input>
                        </FormItem>
                    </div>
                    <div>
                        <FormItem prop="password">
                            <Input type="password" v-model="user.password" placeholder="请输入密码">
                                <Icon type="ios-lock-outline" slot="prepend"></Icon>
                            </Input>
                        </FormItem>
                    </div>
                    <div>
                        <FormItem>
                            <Button type="primary" @click="login()">登录</Button>
                        </FormItem>
                    </div>
                </Form>
            </div>
        </template>   
        <footer></footer>  
    </div>
</template>

<script>
    import Header from '../common/header'
    import Footer from '../common/footer'
    export default {
        components:{
            Header,
            Footer
        },
        data(){
            return {
                user: {
                    username: '',
                    password: ''
                },
                ruleInline: {
                    username: [
                        { required: true, message: '用户名不能为空', trigger: 'blur' }
                    ],
                    password: [
                        { required: true, message: '密码不能为空', trigger: 'blur' },
                        { type: 'string', min: 6, message: '密码长度不能小于6', trigger: 'blur' }
                    ]
                },
            }
        },
        methods:{
            login(){
                var user = this.user;
                if(user.username === '' || user.password === ''){
                    return false;
                }
                this.$axios.post('/login',this.user).then((response) => {
                        var status = response.data;
                        if(status === 'success') {
                            //路由跳转
                            this.$router.push('/');
                        } else {
                            alert(response.data);
                        }
                        console.log(response);
                    }).catch((error) => {
                        console.log(response);
                });
            }
        }
    }
</script>

<style lang="">
    
</style>

index.vue代码

<template>
    <div>
        <header></header>
        <div>
            <span>这是首页拉</span>
        </div>
        <footer></footer>  
    </div>
</template>

<script>
    import Header from '../common/header'
    import Footer from '../common/footer'
    export default {
        components:{
            Header,
            Footer
        }
    }
</script>

<style lang="">
    
</style>

src/router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import Index from '@/components/pages/index'
import Login from '@/components/pages/login'
Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'index',
      component: Index
    },
    {
      path: '/login',
      name: 'login',
      component: Login
    }
  ]
})

 src/main.js

需要将 axios.defaults.baseURL的值的端口更改为自己后端的端口号

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import iView from 'iview' // 引入iview依赖
import 'iview/dist/styles/iview.css' // 引入iview css样式
import axios from 'axios'
// import qs from 'qs'// 实现CORS 解决跨域

Vue.use(iView);

axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
axios.defaults.baseURL = 'http://localhost:2234'
// 将API方法绑定到全局
Vue.prototype.$axios = axios
// Vue.prototype.$qs = qs

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

config/index.js 在dev代码块proxyTable中添加(端口号改为后端自己设置的)

dev: {

    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    // 路由接口代理 解决跨域问题
    proxyTable: {
      '/api': {
        target: 'http://localhost:2234',
        changeOrigin: true,
        pathRewrite: {
            '^/api': ''
        }
      }
    },

二、后端

项目结构

 User.java

public class User {

    private String username;
    private String password;

    getter/setter
}

UserController.java

@RestController
public class UserController {

    @CrossOrigin
    @PostMapping(path = "/login")
    public String login(@RequestBody User user){
        System.out.println(user.getUsername() + " + " + user.getPassword());
        if("123".equals(user.getUsername()) && "123456".equals(user.getPassword())){
            return "success";
        }
        return "fail";
    }
}

application.properties

server.port=2234

三、效果图

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值