Vue3+springboot实现简单登录demo

Vue3从0搭建脚手架步骤【默认已安装node.js

前置条件:默认已安装node.js、yarn

第一步:创建项目

选择任意一个空白文件夹如下:

cmd进入该文件夹下的命令窗口模式,然后输入指令创建vue项目:vue create my-project

选择vue版本,此次我们选择的vue3,回车

耐心等待几分钟下载完成,完成后在终端(也就是Terminal)切换到下载好的项目目录,这里指的是名为my-project的项目,如下图。如果不清楚就直接在电脑cmd窗口下执行如下命令

cd 你的项目绝对路径(从盘符开始)

cd E:\Code\personage\NewCollections\vuedemo\my-project

然后输入npm run serve运行vue项目(有的是npm run dev)

在浏览器访问项目给出的ttp://localhost:8080/地址,(我这里是 http://localhost:8080/)

浏览器出现下面这个页面说明vue脚手架搭建成功

准备改造页面:

使用idea或者vscode或者Hbuilder等等你喜欢的代码编辑器打开刚刚Vue创建的my-project项目

如下图(记住有个App.vue文件,待会儿要修改它):
我用的idea打开,然后在src下创建2个文件夹views(存放我们的页面代码)和router(存放页面之间的路由跳转规则)

在router文件夹下创建一个index.js文件

在views下新建Login和Home文件夹,并分别创建Login.vueHome.vue文件

结构如下:

打开最开始提到的App.vue页面,修改代码内容如下:

<template><router-view></router-view></template><script>export default {name: 'App',}</script><style>#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;}</style>

编写Home.vue代码内容

<template><h1>欢迎来到主页</h1><div><p>用户名:{{ user.username }}</p><p>电话号码:{{ user.phone }}</p></div><button @click="logout">退出登录</button></template><script>export default {name: "HomePage",data(){return{user:{}}},created() {//从localStorage获取用户信息const userStr=localStorage.getItem("user");if (userStr){this.user=JSON.parse(userStr);}},methods:{logout(){//清除登录状态localStorage.removeItem("token");//清除用户信息localStorage.removeItem("user");//使用 this.$router.push 进行路由跳转this.$router.push('/login');}}}</script><style scoped></style>

编写Login.vue代码内容

<template><div class="login-container"><h2>登录界面</h2><form @submit.prevent="login"><div><label for="username">用户名:<input type="text" v-model="username" id="username"></label></div><div><label for="password">密码:<input type="password" v-model="password" id="password"></label></div><button class="center-button" type="submit">登录</button></form></div></template><script>import axios from 'axios';export default {name: "LoginPage",data(){return{username:'',password:'',}},methods:{login() {// 实际的登录逻辑const apiUrl = "http://localhost:8089/api/login";const loginData = {username: this.username,password: this.password};// 发送 POST 请求axios.post(apiUrl, loginData).then(res => {if (res.data.code === 200) {//存储用户信息到 localStoragelocalStorage.setItem("user", JSON.stringify(res.data.data))//存储登录状态localStorage.setItem("token", "123456");// 使用 this.$router.push 进行路由跳转this.$router.push('/home');} else {alert(res.data.msg);}});}}}</script><style scoped>form {display: flex;flex-direction: column;margin-top: 20px;}label {margin-bottom: 5px;}input {margin-bottom: 10px;}.center-button {display: block;margin: 0 auto;}</style>

编写router下的index.js内容

import {createRouter,createWebHistory } from 'vue-router'import Home from '../views/Home/Home.vue'import Login from '../views/Login/Login.vue'const routes=[// 跳转主页{path:'/',redirect:'/login'},{path: '/login',name:'LoginPage',component: Login},{path:'/home',name:'HomePage',component: Home}];const router=createRouter({history:createWebHistory(),routes});
// main.js 中配置导航守卫router.beforeEach((to, from, next) => {console.log("来源地址:", from)console.log("目标地址:", to)//验证tokenlet token = localStorage.getItem('token');if (token|| to.path === '/login') {// 允许导航继续next();} else {// 如果用户未登录,则重定向到登录页面// next({ name: 'Login' });next('/login');}});export default router;

编写与src同级的main.js内容

import { createApp } from 'vue'import App from './App.vue'import router from './router'createApp(App).use(router).mount('#app')

最后重新运行项目,执行 npm run serve

出现下面界面

编写后端springboot代码

在application.properties中配置后端项目运行端口

# 应用服务 WEB 访问端口

server.port=8089

编写控制层:

@CrossOrigin@RestController@RequestMapping("/api")public class LoginController {@PostMapping("/login")public R login(@RequestBody User user){if (user.getUsername().equals("admin") && user.getPassword().equals("123456")){user.setPhone("1325474512");return Result.success(user);}else {return Result.error(1,"用户名或密码错误");}}}

web的登录界面输入

账号:admin

密码:123456

然后点击登录进入如下页面:

Vue3+Springboot实现简单登录demo成功,后端java代码特别简单,需要的私信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/498709.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python3中真真假假True、False、None等含义详解

在Python中&#xff0c;不仅仅和类C一样的真假类似&#xff0c;比如1代表真&#xff0c;0代表假。Python中的真假有着更加广阔的含义范围&#xff0c;Python会把所有的空数据结构视为假&#xff0c;比如 [] (空列表)、 {} &#xff08;空集合&#xff09;、 &#xff08;空字符…

立誓登峰,龙年必赢 |大势智慧2024年营销动员誓师大会圆满召开

2月27日&#xff0c;大势智慧2024年度营销动员誓师大会成功召开。大势智慧CEO黄先锋、CTO张帆、常务副总裁徐建民、副总裁周济安、营销中心副总经理段鸿、全国各分公司总经理及营销中心全体精英齐聚武汉总部&#xff0c;共同为新一年的市场必赢之战吹响冲锋号角。 凝心聚力 再…

Flutter 数据持久化存储之Hive库

Flutter 数据持久化存储之Hive库 前言正文一、配置项目二、UI① 增加UI② 显示和删除UI 三、使用Hive① 初始化Hive② TypeAdapter自定义对象③ 注册TypeAdapter③ CURD 四、源码 前言 在Flutter中&#xff0c;有多种方式可以进行数据持久化存储。以下是一些常见的方式&#xf…

TOMCAT的安装与基本信息

目录 引言 一、TOMCAT简介 二、TOMCAT安装 &#xff08;一&#xff09;JDK简介 &#xff08;二&#xff09;安装Oracle JDK 1.rpm安装 2.二进制安装 &#xff08;三&#xff09;安装TOMCAT 三、配置文件介绍及核心组件 &#xff08;一&#xff09;配置文件 1.目录文…

Java毕业设计 基于SSM SpringBoot vue购物比价网站

Java毕业设计 基于SSM SpringBoot vue购物比价网站 SSM vue 购物比价网站 功能介绍 首页 图片轮播 商品 商品分类 商品详情 评论 收藏 商品攻略 商品信息 公告栏 在线反馈 登录 注册 个人中心 我的收藏 后台管理 登录 注册商品户 个人中心 修改密码 个人信息 商品户管理 用户…

CCF-A类 IEEE VIS‘24 3月31日截稿!探索可视化技术的无限可能!

会议之眼 快讯 IEEE VIS (IEEE Visualization Conference )即可视化大会将于 2024 年 10月13日 -18日在美国佛罗里达州皮特海滩的信风岛大海滩度假举行&#xff01;圣彼得海滩&#xff0c;以其迷人的日落和和煦的微风&#xff0c;作为激发创造力和促进可视化社区内合作的完美背…

vue构建版本

完整版&#xff1a;同时包含编译器和运行时的版本。 编译器&#xff1a;用来将模板字符串编译成为 JavaScript 渲染函数的代码。 运行时runtime&#xff1a;用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码。基本上就是除去编译器的其它一切。 UMD&#xff1a;UMD 版本可以…

【2024创业风向标】随身WiFi成财富新宠,格行带你解锁无限商机!

近日&#xff0c;一股“随身WiFi创业潮”悄然兴起&#xff0c;成为不少创业者和投资者关注的焦点。在这个5G时代&#xff0c;网络已成为生活不可或缺的一部分&#xff0c;而格行随身WiFi凭借其便捷、高效的特点&#xff0c;正成为市场新宠。 据了解&#xff0c;格行随身WiFi不仅…

MySQL里的两个“二次”

文章中所有图片均来自网络 一、double write 第一个二次是mysql一个崩溃恢复很重要的特性-重复写入。 doublewrite缓冲区是位于系统表空间中的存储区域&#xff0c;在该区域中&#xff0c;InnoDB会在将页面写入数据文件中的适当位置之前&#xff0c;从InnoDB缓冲池中刷新这些页…

【Redis | 第一篇】快速了解Redis

文章目录 1.快速了解Redis1.1简介1.2与其他key-value存储的不同处1.3Redis安装——Windows环境1.3.1下载redis1.3.2启动redis1.3.3进入redis客户端1.3.4修改配置 1.4Redis安装——Linux环境1.4.1安装命令1.4.2启动redis1.4.3进入redis客户端 1.5配置修改1.6小结 1.快速了解Redi…

巧妙解决接口测试产生脏数据问题

测试数据创建后需要对其删除&#xff0c;不然可能产生脏数据&#xff0c;对开发和测试、生产环境造成一定影响。 其接口框架是基于Python&#xff0c;API规范基于REST。 产生原因 改进前&#xff1a;清除资源的操作放在每个正向测试用例里&#xff0c;没有在setUp和tearDown…

【C++11】C++11新特性(下)

1、类的新功能 namespace flash {class string{public:// 构造函数string(const char* str ""):_size(strlen(str)), _capacity(_size){//cout << "string(char* str)" << endl;_str new char[_capacity 1];strcpy(_str, str);}// 交换两个…