vue3与springboot交互-前后分离【完成登陆验证及页面跳转】

news2025/5/15 3:07:18

vue3实现与springboot交互【完成登陆及页面跳转】

提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是node.js和vue的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个知识点,都是写出代码和运行结果且前后关联上的去分析和说明(能大量节约您的时间)。

所有文章都*不会*直接把代码放那里,让您自己去看去理解。我希望我的内容对您有用而努力~


文章目录

  • vue3实现与springboot交互【完成登陆及页面跳转】
  • 前言
  • 一、element-ui
    • 介绍
    • 安装及配置使用
  • 二、springboot后台
    • 数据库
    • dao层
    • 业务层
    • controller
  • 三、vue前端
  • 四、登陆
  • 总结


本文章是系列文章,技术栈内容为:【springboot+vue】【前后分离】
【详细图文,实操步骤分享,节约时间版】。最终完成一个商业化项目。内容有:
springboot知识
mybatisPlus知识
vue知识
node.js知识

本小节的内容是
vue篇章 之 : 11.vue3实现与springboot交互【完成登陆及页面跳转】



每一个文章小节都会把 标题 说的很清楚。前后关联看,可以快速实现:前后分离。本质上,额外文章链接和文章自己标题内容关系不大。

前面小节文章已经实现springboot的创建,springboot关联前端数据swagger和springboot通过mybatisplus操作数据库
【2025年】基于电脑的jdk1.8通过idea创建springboot2.x版本(非常简洁快速)
【上榜文章,一文搞定】现在springboot是3.x以上版本,jdk版本至少要求17.但是很多时候我们电脑是jdk1.8(求稳定性和安全性)。文本分享本机电脑1.8的jdk。idea如何非常简洁快速的创建springboot
文章里面也有 为什么只能是jdk17起和地址指定为阿里云报错的解决办法

前面小节已经安装好node.js和分享了一些vue语法,及RESTful风格及安装配置swagger使用,和:
如何启动vue项目及vue语法组件化不同标签应对的作用说明
通过工具生成的vue案例(工具生成vue项目工程结构,里面有一个欢迎界面网页)为切入点,逐步逐步修改分享讲解,完成vue项目如何启动。及自行编写一些标签和样式来替换默认的内容,帮助理解包括里面的标签,js代码,样式如何配合的


前言

完成 前端 vue.js工程结构准备
前端能启动vue项目(vue项目的工程结构及vue语法分享在前面章节)。当前已经分享完毕的进度:vue项目里面网页写Axios取后台的值和发送数据到后台。已完成实现点击不同链接显示不同页面内容,vue-router路由配置
本小节:把Axios和router路由整合起来,登陆验证成功跳转到其他页面

完成 后台 springboot工程结构准备
包括springboot项目(dao、service、controller、pojo实体类)。controller类里面的方法能拿实现不同提交方式(get post put delete) 去调用service/dao。 dao通过mybatisPlus操作mysql数据库(前面章节有分享)


一、element-ui

介绍

element-ui一款基于Vue.js 2.0 的桌面端UI框架,有很多的功能,文本现在用于:
实现组件之间的传值。

element-ui 字面意思:标签-ui
提供了一致视觉风格和便捷的API接口:

按钮、图标、颜色和字体: 提供统一的颜色调色板和字体样式,确保界面视觉一致性。

输入框(Input):支持文本、密码、数字输入等多种类型,还包含搜索框、清除按钮等功能。

选择器(Select):提供单选、多选、多级联动等多种选择方式,适配复杂的数据选择场景。

表格(Table):提供分页、排序、筛选等功能,可以灵活处理大量数据。

标签语法:
el-xxxx
如el-form 就是element-ui表单的标签
项目里面,但凡看见el-开头的标签 就是使用了element-ui

安装及配置使用

接上一个介绍分享,element-ui是vue2.0的插件
而vue3.0使用的是element-plus。当前系列实现前后分离,使用的是vue3.所以安装:

npm install element-plus --save

在这里插入图片描述

安装完毕,检查一下package.json的依赖,是否已经添加了
在这里插入图片描述

在main.js里面引入element-plus
在这里插入图片描述

二、springboot后台

数据库

在这里插入图片描述

dao层

//User 对应数据库创建实体类,此处代码略

@Mapper
public interface UserDao extends BaseMapper<User> {

}

业务层

@Service
public class UserService {

    @Resource
    private UserDao userDao;

    private QueryWrapper<User> wrapper = new QueryWrapper<User>();

    public boolean login(User user){
        User u = userDao.selectOne(wrapper.eq("uname",user.getUname()));
        if(u == null){
            return false;
        }else{
            if(u.getUpwd().equals(user.getUpwd())){
                return true;
            }else{
                return false;
            }
        }


    }

}

controller

@Resource
private UserService userService;

@PostMapping("/login")
public boolean login(User user){
//框架会直接封装好前端传递的数据到user里面,方法直接用
//前提:前端数据的user名字,正好对应User实体类的成员变量单词
// uname upwd
    boolean b = userService.login(user);
    return b;
}

mybatisPlus语法前面章节有分享
controller语法及vue的axios和restful 前面都有分享
主要是保证,章节只有 文章标题的 重点核心内容,其他的内容在另外的文章里面


三、vue前端

修改login.vue文件

<template>
    <h1>我是帮帮志的登陆界面</h1>
    <h2>这里可以写很多的标签及引入其他的vue标签来完善网页</h2>
    <h2>script里面可以写很多逻辑 来操作标签和联系后台</h2>
    <h2>style 写 这个vue文件标签用到的css样式</h2>

	<!-- vue 沿用了前面文章 依次分享 Axios 路由等等的代码,除了现在的新代码,其他哪里都没有修改 -->

	<!-- el-form就是element-ui的内容,下面的:model="user" 就是声明vue文件的全局变量user js里面在用,标签里面也用,标签填数据就直接给user.xxx了 -->
    <el-form
            label-width="100px"
            :model="user" 
            style="margin-top: 40px"
        >
        <el-form-item label="账号" size="large">
            <el-input v-model="user.uname" size="large" style="width: 300px"/>
          </el-form-item>
          <el-form-item label="密码" size="large">
            <el-input type="password" v-model="user.upwd" size="large" style="width: 300px"/>
          </el-form-item>

          <el-button type="success" @click="login" size="large">点击登录</el-button>
    </el-form>
</template>

<script>
import {reactive, toRefs} from "vue";
import {useRouter} from "vue-router";
import axios from "axios";

export default {
  name: "Login",
  setup(){

    //创建一个路由
    const router = useRouter();

    const data = reactive({
      user:{  //声明一个user对象
        uname:'', //声明user对象的属性
        upwd:''  //el-form标签,会自动把数据放到对应的属性里面  这里和后台名称对应
      }
    });

    const login = () => {
        axios.post("http://localhost:8081/login",{user}).then(res => {
        if(res){//后台controller方法,返回的就是一个boolean
          router.push('/welcome') //成功跳转欢迎界面
        }else{
            //失败
              ElMessage.error('账号密码错误!')
        }
        })
    }
    return {...toRefs(data),login}
    }
}
</script>

四、登陆

启动springboot项目
启动vue项目

前端网页通过路由 ,访问login.vue
在这里插入图片描述
填写对应数据库的账号密码,点击登陆,跳转到了欢迎界面
在这里插入图片描述


总结

说明一下:整个这个系列实现前后分离的springboot+vue项目。序号文章一共也就10几篇,只有核心图文重点操作步骤来实现这个目标(基本上您边看边写:一个小时或者一上午就能跟着一起手搓一个前后分离项目,然后您可以自行添加功能和内容在您项目里面)

其他扩展细节知识点,本系列省略了(或者有链接)如:
还有一些案例,但是现在案例基本满足大部分情况,毕竟当前我们的目的是:快速手搓一个前后分离的全栈。
axios的其他功能及使用,管它*现在*用不用的上,内容全部丢进来。各位看官自行消化。那~可能会很多很多了(又耗时)。当前 系列: 手搓出来之后,您可以自行加功能和内容

(会陆续更新非常多的IT技术知识及泛IT的电商知识,可以点个关注,共同交流。ღ( ´・ᴗ・` )比心)
(也欢迎评论,提问。 我会依次回答~)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Hot 100】208. 实现 Trie (前缀树)

目录 引言实现 Trie (前缀树)我的解题代码解析代码思路分析优化建议1. 内存泄漏问题2. 使用智能指针优化内存管理3. 输入合法性校验&#xff08;可选&#xff09;4. 其他优化 总结 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1…

【2025最新】Vm虚拟机中直接使用Ubuntu 免安装过程直接使用教程与下载

Ubuntu 是一个基于 Debian 的自由开源 Linux 操作系统&#xff0c;面向桌面、服务器和云计算平台广泛应用。 由英国公司 Canonical Ltd. 维护和发布&#xff0c;Ubuntu 强调易用性、安全性和稳定性&#xff0c;适合个人用户、开发者以及企业部署使用。 Ubuntu 默认使用 GNOME …

Vue2 elementUI 二次封装命令式表单弹框组件

需求&#xff1a;封装一个表单弹框组件&#xff0c;弹框和表单是两个组件&#xff0c;表单组件以插槽的形式动态传入弹框组件中。 外部组件使用的方式如下&#xff1a; 直接上代码&#xff1a; MyDialog.vue 弹框组件 <template><el-dialog:titletitle:visible.syn…

Antd中Form详解:

1.获取Form表单值的方式: ① 使用Form.useForm()钩子&#xff08;推荐方式&#xff09; const [form] Form.useForm();const getFormValues () > {const values form.getFieldsValue();};<Form form{form}>...<Form.Item label{null}><Button onClick{ge…

docker系列-DockerDesktop报错信息(Windows Hypervisor is not present)

Docker Desktop 报错信息 Docker Desktop - Windows Hypervisor is not present Docker Desktop is unable to detect a Hypervisor. Hardware assisted virtualization and data execution protection must be enabled in the BIOS.这是因为 Docker Desktop 需要启用 虚拟化技…

《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》

手把手教你用 Kubernetes 部署高可用 WordPress 博客 本实验通过 Kubernetes 容器编排平台&#xff0c;完整部署了一个高可用的 WordPress 网站架构&#xff0c;包含 MariaDB 数据库、WordPress 应用和 Nginx 反向代理三大核心组件。实验涵盖了从基础环境准备到最终服务暴露的…

Ubuntu源码版comfyui的安装

Comfyui也出桌面版了&#xff0c;但是想让大家多个人都使用怎么办呢&#xff1f;也有方法&#xff0c;安装Linux版&#xff0c;启动后会生成个网页地址&#xff0c;打开就能用了。 1、先来看下本地安装环境配置&#xff1a; 系统&#xff1a;Ubuntu 22.04 内存&#xff1a;2…

制作一款打飞机游戏47:跳转

编辑器的问题 我们开始为不同的敌人编写一些行为&#xff0c;到目前为止进展顺利&#xff0c;一切都很棒。但上次我们遇到了一些问题&#xff0c;我们发现在这个编辑器中编写代码有时有点困难&#xff0c;因为当你想要在某行之间插入内容时&#xff0c;你不得不删除一切然后重…

本地部署ollama及deepseek(linux版)

一、安装ollama export OLLAMA_MIRROR"https://ghproxy.cn/https://github.com/ollama/ollama/releases/latest/download"curl -fsSL https://ollama.com/install.sh | sed "s|https://ollama.com/download|$OLLAMA_MIRROR|g" | shexport OLLAMA_MIRROR&q…

vue H5解决安卓手机软键盘弹出,页面高度被顶起

开发中安卓机上遇到的软键盘弹出导致布局问题 直接上代码_ 在这里插入代码片 <div class"container"><div class"appContainer" :style"{height:isKeyboardOpen? Heights :inherit}"><p class"name"><!-- 绑定…

CSS专题之自定义属性

前言 石匠敲击石头的第 12 次 CSS 自定义属性是现代 CSS 的一个强大特性&#xff0c;可以说是前端开发需知、必会的知识点&#xff0c;本篇文章就来好好梳理一下&#xff0c;如果哪里写的有问题欢迎指出。 什么是 CSS 自定义属性 CSS 自定义属性英文全称是 CSS Custom Proper…

七、深入 Hive DDL:管理表、分区与洞察元数据

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月13日 专栏&#xff1a;Hive教程 内容导航 一、表的 DDL 操作 (非创建)二、分区的 DDL 操作三、洞察元数据&#xff1a;SHOW 命令的威力结语&#xff1a;DDL 与 SHOW&#xff0c;Hive 管理的双翼练习题一、选择题二、代码题…

直接在Excel中用Python Matplotlib/Seaborn/Plotly......

本次分享如何利用pyxll包&#xff0c;实现直接在Excel中使用Python Matplotlib/Seaborn/Plotly等强大可视化工具。 pyxll配置 pyxll安装 pip install pyxll pyxll install pyxll自定义方法 例如&#xff0c;自定义一个计算斐波那契数的方法fib&#xff0c;并使用pyxll装饰器…

React面试常问问题详解

以下是30个React面试中常见的问题及简要解析&#xff0c;涵盖基础概念、核心原理、性能优化、Hooks、状态管理等方面&#xff0c;适用于初中高级开发者准备面试时参考&#xff1a; 一、React 基础与核心概念 React 是什么&#xff1f; React 是由 Facebook 开发的用于构建用户界…

【Java】网络编程(Socket)

网络编程 Socket 我们开发的网络应用程序位于应用层&#xff0c;TCP和UDP属于传输层协议&#xff0c;在应用层如何使用传输层的服务呢&#xff1f;在应用层和传输层之间&#xff0c;则使用套接字Socket来进行分离 套接字就像是传输层为应用层开的一个小口&#xff0c;应用程…

思科(Cisco ASA/Firepower)、华三(H3C)、华为(Huawei USG)防火墙 的基础配置

以下是针对 思科&#xff08;Cisco ASA/Firepower&#xff09;、华三&#xff08;H3C&#xff09;、华为&#xff08;Huawei USG&#xff09;防火墙 的基础配置指南&#xff0c;涵盖 区域划分、安全策略、NAT、路由 等核心功能。配置示例基于通用场景&#xff0c;实际部署时需根…

Windows环境下maven的安装与配置

1.检查JAVA_HOME环境变量 Maven是使用java开发的&#xff0c;所以必须知道当前系统环境中的JDK的安装目录。 搜索栏直接输入“cmd” 或者 WinR 输入cmd 在打开的终端窗口输入“echo %JAVA_HOME”&#xff0c;就可以看到jdk的位置了。 如果没有的话&#xff0c;请参考我的文章&a…

LeetCode:513、找树左下角的值

//递归法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* t…

Vxe UI vue vxe-table 实现表格数据分组功能,不是使用树结构,直接数据分组

Vxe UI vue vxe-table 实现表格数据分组功能&#xff0c;不是使用树结构&#xff0c;直接数据分组 查看官网&#xff1a;https://vxetable.cn gitbub&#xff1a;https://github.com/x-extends/vxe-table gitee&#xff1a;https://gitee.com/x-extends/vxe-table 代码 通过…

如何禁止chrome自动更新

百度了一下 下面这个方法实测有效 目录 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable 3、验证是否禁止更新成功&#xff1a; 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable GoogleUpdater InternalService…