springboot+vue

news2025/1/16 21:44:37

一、案例结构

用springboot做后端接口,采用restful风格。

用vue-cli来创建前端项目,通过axios进行前后端交互。

来实现用户的增删改查操作。

二、效果图

在这里插入图片描述

点击修改:

在这里插入图片描述

在这里插入图片描述

点击添加:

在这里插入图片描述

在这里插入图片描述

三、服务器端

控制层代码:

package com.example.swagger.controller;

import com.example.swagger.dao.UserRepository;
import com.example.swagger.pojo.User;
import com.example.swagger.util.Response;
import com.example.swagger.util.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController
@Api(tags = "用户管理相关接口")
public class UserController {

    @Autowired
    private UserRepository userRepository;

    //查询所有
    @GetMapping("/users")
    @ApiOperation("查询所有用户的接口")
    public ResponseResult<List<User>> selectUsers()
    {
         List<User> usersList= userRepository.findAll();

         return Response.createOkResp(usersList);
    }

    //根据id查询
    @GetMapping("/users/{id}")
    @ApiOperation("根据id查询用户的接口")
    @ApiImplicitParam(name = "id", value = "用户id", required = true)
    public ResponseResult<User> selectUserById(@PathVariable(name = "id") int id)
    {
         User user= userRepository.findById(id).get();

         return Response.createOkResp(user);
    }

    //添加
    @PostMapping("/users")
    @ApiOperation("添加用户")
    public ResponseResult addUser(User user)
    {
        userRepository.save(user);

        return Response.createOkResp("add success");
    }

    //修改
    @PutMapping("/users")
    @ApiOperation("修改用户")
    public ResponseResult updateUser(User user)
    {
        userRepository.save(user);

        return Response.createOkResp("edit success");
    }

    //删除
    @DeleteMapping("/users/{id}")
    @ApiOperation("删除用户")
    @ApiImplicitParam(name = "id", value = "用户id", required = true)
    public ResponseResult deleteUser(@PathVariable(name = "id") int id)
    {
        userRepository.deleteById(id);

        return Response.createOkResp("delete success");
    }


}

四、 前端

1、通过vue脚手架创建一个vue项目

创建出来的结构如下

在这里插入图片描述

2、安装需要用到的组件

在vscode的菜单“终端”中,选择“新终端”。

2.1安装axios并导入到项目中

打开的新终端中输入如下命令安装

在这里插入图片描述

安装完成后导入到项目中

在这里插入图片描述

2.2安装qs并导入到项目中

qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库,axios中提交对象时会用到

输入如下命令安装qs

在这里插入图片描述

安装完整后导入到项目中

在这里插入图片描述

完整的main.js文件

import { createApp } from "vue";
import App from "./App.vue"; 
import router from "./router";
import store from "./store";
import qs from "qs";


import axios from "axios"; //导入axios

const app = createApp(App);

app.config.globalProperties.$axios=axios;

app.config.globalProperties.$qs=qs;

app.use(store).use(router).mount("#app"); //这里的#app对应的是 index.html页面里的div

3、创建用户展示页

3.1 创建Users.vue页面

在这里插入图片描述

代码如下:

<template>
   <div>
    <h1><center>新闻列表页</center></h1>

     <div><center><a :href="'#/addUser'">添加用户</a></center></div>
     <table border="1" width=800 align="center">
       
         <tr v-for="user in userList" :key="user.id">
            <td>{{user.id}}</td>
            <td>{{user.uname}}</td>
            <td>{{user.age}}</td>
            <!-- 两种链接方式-->
            <td> <a :href="'#/editUser?id='+user.id" >修改</a></td>
            <router-link :to = "{path:'/editUser',query:{id:user.id}}" tag="button" >修改</router-link> 
            <td><a href="" @click.prevent="delRow(user.id);">删除</a></td> <br/>
         </tr>

     </table>
    
   </div>
</template>

<script>
export default {
    name:"Users",
    data() {
			return {
				userList:[]
			}
		},
      methods:{
         getUsers(){
            
         this.$axios.get("http://localhost:8080/users").then(res => {   
            

            this.userList=res.data.data;
         })
         },
         delRow(id){
          console.log(id);
          this.$axios.delete("http://localhost:8080/users/"+id).then(res=>{
             if(res.data.code==200){                
               this.getUsers()
             }
          })
        }
    
      },
     //页面加载时触发
     mounted:function(){
        this.getUsers();
     }
  
    
}
</script>

3.2 设置路由

在这里插入图片描述

4、 修改入口页面App.vue

在这里插入图片描述

5、创建用户修改页面

5.1、创建EditUser.vue页面

在这里插入图片描述

EditUser.vue页面代码:

<template>
    <div>
      <h2>编辑用户信息</h2>
      <form method="post">
         用户iD: <input v-model="user.id"   type="text" readonly><br>
         用户名: <input v-model="user.uname" type="text"><br>
         年龄: <input v-model="user.age" type="text"><br>
        <input type="button" value="修改" @click="editUserInfo">
      </form>
    </div>
</template>

<script>
    export default {
      name: "EditUser",
      data(){
        return {
          user:{
            id:"",
            uname:"",
            age:""
          }
        }
      },
      methods:{
        findOne(){
          this.$axios.get("http://localhost:8080/users/"+this.user.id).then(res=>{
            console.log(res.data.data);
            this.user = res.data.data
          })
        },
        editUserInfo(){           

          this.$axios.put("http://localhost:8080/users",this.$qs.stringify(this.user)).then(res=>{
            console.log(res);
            if(res.data.code==200){
              this.$router.push("/users") //切换路由  跳回到用户展示页
            }
          })
        }
      },
      created() {
        console.log("修改的ID"+this.$route.query.id);
        this.user.id=this.$route.query.id
        this.findOne()
      }

// created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。

// mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。

// 其实两者比较好理解,通常created使用的次数多,而mounted通常是在一些插件的使用或者组件的使用中进行操作
    }
</script>

5.2 设置路由

在这里插入图片描述

6、创建用户添加页面

6.1 创建AddUser.vue页面

在这里插入图片描述

AddUser.vue页面代码:

<template>
    <div>
      <h2>添加用户信息</h2>
      <form method="post">
         用户名: <input v-model="user.uname" type="text"><br>
         年龄: <input v-model="user.age" type="text"><br>
        <input type="button" value="添加" @click="addUserInfo">
      </form>
    </div>
</template>

<script>
export default {
      name: "AddUser",
      data(){
        return {
          user:{
            id:0,
            uname:"",
            age:0
      
          }
        }
      },
      methods:{
        addUserInfo(){

          console.log(this.$qs.stringify(this.user));//id=0&uname=sadsd&age=18
          
          this.$axios.post("http://localhost:8080/users/",this.$qs.stringify(this.user)).then(res=>{
            console.log(res.data.data);
            if(res.data.code==200)
                this.$router.push("/users") 
          })
        }
      }
}

</script>

6.2 设置路由

在这里插入图片描述

7、设置访问端口

在根目录下创建配置文件vue.config.js,里面设置端口

在这里插入图片描述

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

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

相关文章

【Tryhackme】dogcat(LFI+文件解析漏洞,Docker逃逸)

免责声明 本文渗透的主机经过合法授权。本文使用的工具和方法仅限学习交流使用&#xff0c;请不要将文中使用的工具和渗透思路用于任何非法用途&#xff0c;对此产生的一切后果&#xff0c;本人不承担任何责任&#xff0c;也不对造成的任何误用或损害负责。 服务发现 ┌──(r…

CentOS7.4安装教程

CentOS7.4安装教程&#xff1a; centos系统自行网上查找链接下载&#xff0c;我使用的是最小安装版本&#xff0c;搞服务器用 1、进入操作系统&#xff0c;选择第一项进行安装&#xff1a; 2、耐心等待&#xff0c;直到弹出这个界面&#xff1a; 3、下拉选择中文&#xf…

磷脂-荧光素标记DSPE-FITC磷脂改性荧光素

磷脂-荧光素标记DSPE-FITC磷脂改性荧光素 中文名称&#xff1a;荧光素标记二硬脂酰磷脂酰乙醇胺 中文别称&#xff1a;磷脂-荧光素标记&#xff1b;二硬脂酰磷脂酰乙醇胺改性荧光素 英文名称&#xff1a;18:0 PE Fluorescein 英文别称&#xff1a;DSPE-FITC 外观&#xff1a…

开发人员的绝佳生产力工具

介绍 从长远来看&#xff0c;每天工作 8 小时对您没有帮助&#xff0c;但利用这些来最大化产出肯定会让您受益。这就是为什么生产力是最重要的事情之一。 今天&#xff0c;我们将学习一些很棒的工具&#xff0c;它们可以提高您的工作效率。除非并且直到您将这些工具集成到您的…

【Lilishop商城】No3-7.模块详细设计,订单模块-1(购物车、收银台)的详细设计

仅涉及后端&#xff0c;全部目录看顶部专栏&#xff0c;代码、文档、接口路径在&#xff1a; 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑&#xff0c;其中重点包括接口类、业务类&#xff0c;具体的结合源代…

【TECH SCIENCE PRESS出版社】2区SCI,仅3个月左右录用,数字孪生、绿色技术、供应链、人工智能物联网、智能传感器相关领域均可

【出版社】TECH SCIENCE PRESS 【期刊简介】IF&#xff1a;3.5-4.0&#xff0c;JCR2区&#xff0c;中科院3区 【检索情况】SCI&EI双检&#xff0c;正刊 【参考周期】3个月左右 【征稿领域】 ①数字孪生在智能医疗系统中的应用&#xff08;2023.3.25截稿&#xff09; …

NetInside助力IT提高业务性能管理能力(一)

需求简介 某外高桥公司的OA系统是其重要的业务系统&#xff0c;OA系统负责人表示&#xff0c;部分用户反馈&#xff0c;访问OA系统时比较慢。需要通过分析系统看一下实际情况。 信息部已对企业领导定义了独立的组&#xff0c;本次要主动分析领导们的使用体验快慢。如果OA系统…

一个带详细程序和注释的实例,手把手带你学会用BP神经网络做预测

目录 1.问题描述 1.1问题剖析 2.实现程序 2.1运行结果 2.3总结 3.预测 3.1输出结果 4.预测理解 1.问题描述 某运输系统连续9年货运量的有关数据如表2-10所示。根据对关于货运量影响因素的分析&#xff0c;这里分别取国内生产总值GDP、工业总产值、铁路运输线路长度、复线…

使用vue-easytable实现仿excel表格,支持可编辑、添加删除行、虚拟表格等功能

使用npm安装vue-easytable npm install --save vue-easytable 在 main.js 中写入以下内容&#xff1a; // 引入样式 import "vue-easytable/libs/theme-default/index.css"; // 引入组件库 import VueEasytable from "vue-easytable"; Vue.use(VueEasyt…

ADI Blackfin DSP处理器-BF533的开发详解49:图像处理专题-Bright (图像亮暗处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像亮暗处理&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…

[附源码]Node.js计算机毕业设计电子市场计算机配件报价系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

聚焦人机交互智能应用领域,APISIX 在希沃网关的应用与实践

分享嘉宾简海清&#xff0c;视源股份运维负责人。 视源股份&#xff08;CVTE&#xff09;自成立以来&#xff0c;依托在音视频技术、人机交互、应用开发、系统集成等电子产品领域的软硬件技术积累&#xff0c;建立了教育数字化工具及服务提供商希沃&#xff08;seewo&#xff0…

三、JavaScript——编写位置

1.在script标签内编写 JS的代码一般可以写到script标签中&#xff0c;script标签的完整写法是要加type"text/javascript",但这个一般可以省略&#xff0c;所以只用<script>即可 <!DOCTYPE html> <html lang"en"> <head><meta …

【架构师李肯】带你走进架构师的一天

作者简介 *架构师李肯&#xff08;全网同名&#xff09;**&#xff0c;一个专注于嵌入式IoT领域的架构师。有着近10年的嵌入式一线开发经验&#xff0c;深耕IoT领域多年&#xff0c;熟知IoT领域的业务发展&#xff0c;深度掌握IoT领域的相关技术栈&#xff0c;包括但不限于主流…

js逆向之加密方法远程调用

js逆向之加密方法远程调用 加密方法的远程调用主要是使用了RPC协议,RPC(Remote Procedure Call)是远程调用的意思。RPC的应用十分广泛,比如在分布式中的进程间通信、微服务中的节点通信。 我们这里使用的rpc其实是实现两个不同进程通信的一种方式,比如在浏览器执行一些方…

SystemUI 调整Recents中全部清除按钮位置

Recents 即多任务界面&#xff0c;显示最近使用过的APP List的。下面内容都是基于Android 11平台修改的。Android 11上&#xff0c;Recents 这一部分代码其实都已经被挪到Launcher3中。由于个人习惯&#xff0c;所以将内容分类作为SystemUI部分记录。 多任务界面主要几个文件&…

工欲善其事,必先利其器,推荐5款效率神器

有句老话这样讲&#xff0c;工欲善其事&#xff0c;必先利其器&#xff0c;好的工具可以让你工作起来事半功倍。 1.全能翻译神器——智能翻译官 这是一款超级强大的翻译软件&#xff0c;什么文本、图片、文档&#xff0c;视频、音频&#xff0c;统统都可以翻&#xff0c;像我…

JAVA毕业设计——基于Springboot+vue的音乐网站系统(源代码+数据库)

github代码地址 https://github.com/ynwynw/music-server-public 毕业设计所有选题地址 https://github.com/ynwynw/allProject 基于Springbootvue的音乐网站系统(源代码数据库)046 一、系统介绍 本项目分为管理员与普通用户两种角色 管理员角色包含以下功能&#xff1a; …

绿色固体ICG-DBCO,凯新生物聚甲基菁染料,仅用于科学研究或者工业应用等非医疗目的,不可用于人类或动物的临床或诊断,非药用,非食用

【外观以及性质】&#xff1a; ICG-DBCO绿色固体&#xff0c;ICG是一种带负电荷的聚甲基菁染料&#xff08;三碳菁染料&#xff09;具有良好的水溶性&#xff0c;其次花菁染料毒性&#xff0c;安全性更好及更的光稳定性。 【试剂物理数据】&#xff1a; 货号&#xff1a;Y-R…

Java面试题(六)腾讯Spring夺命7连问(灵魂拷问)

腾讯面试题&#xff1a;Spring1.谈一谈spring IOC的理解&#xff0c;原理与实现&#xff1f;2.谈一谈Spring IOC的底层实现&#xff1f;3.描述下Bean的生命周期4.Spring如何解决循环依赖问题&#xff1f;5.BeanFactory 和FactoryBean有什么区别&#xff1f;6.Spring 中用到哪些…