Java学习--黑马SpringBoot3课程个人总结-2024-02-14

1.子路由

在这里插入图片描述


在这里插入图片描述


//定义路由关系
const routes=[{   path: '/login', component: LoginVue},{   path: '/', component: LayoutVue,redirect:'/article/manage',children:[{path:'/article/category',component:ArticleCategoryVue},{path:'/article/manage',component:ArticleManageVue},{path:'/user/avatar',component:UserAvatarVue},{path:'/user/info',component:UserInfoVue},{path:'/user/resetPassword',component:UserResetPasswordVue},]}
]

在这里插入图片描述

2.文章分类列表查询

ArticleCategory.vue
<script setup>
import {Edit,Delete
} from '@element-plus/icons-vue'
import { ref } from 'vue'
const categorys = ref([{"id": 3,"categoryName": "美食","categoryAlias": "my","createTime": "2023-09-02 12:06:59","updateTime": "2023-09-02 12:06:59"},{"id": 4,"categoryName": "娱乐","categoryAlias": "yl","createTime": "2023-09-02 12:08:16","updateTime": "2023-09-02 12:08:16"},{"id": 5,"categoryName": "军事","categoryAlias": "js","createTime": "2023-09-02 12:08:33","updateTime": "2023-09-02 12:08:33"}
])
//声明一个异步的函数
import {articleCategoryListService} from '@/api/article.js'
const articleCategoryList=async()=>{let result = await articleCategoryListService();result.data;
}articleCategoryList();
</script>
<template><el-card class="page-container"><template #header><div class="header"><span>文章分类</span><div class="extra"><el-button type="primary">添加分类</el-button></div></div></template><el-table :data="categorys" style="width: 100%"><el-table-column label="序号" width="100" type="index"> </el-table-column><el-table-column label="分类名称" prop="categoryName"></el-table-column><el-table-column label="分类别名" prop="categoryAlias"></el-table-column><el-table-column label="操作" width="100"><template #default="{ row }"><el-button :icon="Edit" circle plain type="primary" ></el-button><el-button :icon="Delete" circle plain type="danger"></el-button></template></el-table-column><template #empty><el-empty description="没有数据" /></template></el-table></el-card>
</template><style lang="scss" scoped>
.page-container {min-height: 100%;box-sizing: border-box;.header {display: flex;align-items: center;justify-content: space-between;}
}
</style>
article.js
import request from '@/utils/request.js'//文章分类列表查询
export const articleCategoryListService= () =>{return request.get('/category');
}

3.Pinia状态库

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

Login.vue

        //登录函数//绑定数据,复用注册表单的数据模型//表单数据校验import {useTokenStore, useTokenStore} from '@/stores/token.js'import {useRouter} from 'vue-router'const router= useRouter()const tokenStore=useTokenStore()const login= async() =>{//调用接口,完成登录let result= await userLoginService(registerData.value);//alert(result.msg ? result.msg : '登录成功')ElMessage.success(result.msg ? result.msg : '登录成功')//把得到的token存到pinia中tokenStore.setToken(result.data)//借助路由完成跳转router.push('/')}

//定义store
import {defineStore} from 'pinia'
import {ref} from 'vue'/*** defineStore参数描述:第一个参数:给状态起名,具有唯一性第二个参数:函数,可以把定义该状态中拥有的内容defineStore返回值描述:返回的是一个函数,将来可以调用该函数,得到第二个参数中返回的内容* */
export const useTokenStore=defineStore('token',()=>{//.定义状态的内容//1.响应式变量const token=ref('')//2.定义一个函数,修改token的值const setToken=(newToken)=>{token.value=newToken}//3.函数,移除token的值const removeToken=()=>{token.value=''}return {token,setToken,removeToken}
}); 

4.Axios请求拦截器

在这里插入图片描述


在这里插入图片描述

//添加请求拦截器
import { useTokenStore } from '@/stores/token.js';
instance.interceptors.request.use((config)=>{//请求前的回调//添加tokenconst tokenStore= useTokenStore();//判断有没有tokenif(tokenStore.token){config.headers.Authorization=tokenStore.token}return config;},(err)=>{//请求错误的回调Promise.reject(err);}
)

5.Pinia持久化插件-persist

在这里插入图片描述


在这里插入图片描述


今日的最终代码
在这里插入图片描述

![<script setup>
import {Edit,Delete
} from '@element-plus/icons-vue'
import { ref } from 'vue'
const categorys = ref([{"id": 3,"categoryName": "美食","categoryAlias": "my","createTime": "2023-09-02 12:06:59","updateTime": "2023-09-02 12:06:59"},{"id": 4,"categoryName": "娱乐","categoryAlias": "yl","createTime": "2023-09-02 12:08:16","updateTime": "2023-09-02 12:08:16"},{"id": 5,"categoryName": "军事","categoryAlias": "js","createTime": "2023-09-02 12:08:33","updateTime": "2023-09-02 12:08:33"}
])//声明一个异步的函数
import {articleCategoryListService} from '@/api/article.js'
const articleCategoryList=async()=>{let result = await articleCategoryListService();categorys.value=result.data;
}articleCategoryList();
</script>
<template><el-card class="page-container"><template #header><div class="header"><span>文章分类</span><div class="extra"><el-button type="primary">添加分类</el-button></div></div></template><el-table :data="categorys" style="width: 100%"><el-table-column label="序号" width="100" type="index"> </el-table-column><el-table-column label="分类名称" prop="categoryName"></el-table-column><el-table-column label="分类别名" prop="categoryAlias"></el-table-column><el-table-column label="操作" width="100"><template #default="{ row }"><el-button :icon="Edit" circle plain type="primary" ></el-button><el-button :icon="Delete" circle plain type="danger"></el-button></template></el-table-column><template #empty><el-empty description="没有数据" /></template></el-table></el-card>
</template><style lang="scss" scoped>
.page-container {min-height: 100%;box-sizing: border-box;.header {display: flex;align-items: center;justify-content: space-between;}
}
</style>]

在这里插入图片描述

//定义store
import {createPinia, defineStore} from 'pinia'
import {ref} from 'vue'/*** defineStore参数描述:第一个参数:给状态起名,具有唯一性第二个参数:函数,可以把定义该状态中拥有的内容defineStore返回值描述:返回的是一个函数,将来可以调用该函数,得到第二个参数中返回的内容* */export const useTokenStore=defineStore('token',()=>{//.定义状态的内容//1.响应式变量const token=ref('')//2.定义一个函数,修改token的值const setToken= (newToken)=>{token.value = newToken}//3.函数,移除token的值const removeToken=()=>{token.value=''}return {token,setToken,removeToken}
},{persist:true//持久化存储}
)

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

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

相关文章

IO-day3

思维导图 1.使用fread和fwrite完成图片的拷贝。 2.使用read和write完成两个文件的拷贝。 3.将时间在文件中跑起来。

Mock.js

在开发后端的应用中&#xff0c;我们使用postman来测试接口&#xff0c;观察和验证前后端之间的数据传递是否正常。 在开发前端的应用中&#xff0c;我们使用Mock.js来模拟后端服务&#xff0c;以便进行前端业务逻辑的开发和测试&#xff08;以前使用json-server也很方便&#…

用jquery写插件基本步骤

编写jQuery插件的基本步骤通常包括以下几个部分&#xff1a; 1. **命名空间**&#xff1a;为了避免与其他库或插件冲突&#xff0c;通常会在插件中创建一个命名空间。 2. **闭包**&#xff1a;使用闭包来封装插件&#xff0c;这样可以避免全局变量的污染&#…

问题描述:在Windows下没有预装ninja工具

问题描述:在Windows下没有预装ninja工具 # WInR输入cmd回车进入命令行,执行以下命令查看版本信息 ninja --version没有预装ninja工具 解决方案&#xff1a;下载安装ninja 在windows下安装gitbash和python。 打开cmd在合适位置下载ninja源码&#xff1a; git clone https://g…

JavaWeb-JDBC-练习

一、环境准备 1、数据库表 tb_brand 2、实体类 Brand 最后注意使用get、set方法和toString 二、实现功能 1、查询所有数据 2、添加数据 3、根据id修改 4、根据id删除

AI新工具(20240219) Ollama Windows预览版;谷歌开源的人工智能文件类型识别系统; PopAi是您的个人人工智能工作空间

Ollama Windows preview - Ollama Windows预览版用户可以在本地创建和运行大语言模型&#xff0c;并且支持NVIDIA GPU和现代CPU指令集的硬件加速 Ollama发布了Windows预览版&#xff0c;使用户能够在原生的Windows环境中拉取、运行和创建大语言模型。该版本支持英伟达的GPU&am…

JS实用小方法-将时间转换为 `刚刚`、`几秒前`、`几分钟前`、`几小时前`、`几天前`、几月前或按照传入格式显示

参数相关 date为传入时间 例&#xff1a;"2023/5/10 11:32:01" 2023-02-01 09:32:01type为返回类型 例&#xff1a;- / 年月日 年默认规则&#xff0c;大于等于一天(24小时)展示X天前&#xff1b;大于等于30天且小于365天展示X个月前&#xff1b;大于等于365天且展示…

后端防止重复点击

请直接看原文: 后端防止重复点击设计_后端如何防止重复点击-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------- 一、背景 想了解的都懂&#xff0c;不再描述。 二、解决的主要思…

【初始消息队列】消息队列的各种类型

消息队列相关概念 什么是消息队列 MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是 message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互联网架构中…

【软考高级信息系统项目管理师--第二十章:高级项目管理】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;软考高级–信息系统项目管理师 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 第二十章&#xff1a;高级项目管理 项目集管理项目组合管理组织级项目管理OPM&…

深入探讨Lambda表达式转换为委托类型的编译过程

了解了&#xff0c;如果要深入探讨Lambda表达式转换为委托类型的编译过程&#xff0c;我们需要关注C#编译器如何处理这个转换。这个过程涉及到编译时的类型推断、匿名方法的创建&#xff0c;以及生成对应的委托实例。我们来更详细地分析这个过程&#xff1a; 编译阶段 1. 解…

JVM原理

一、java虚拟机的生命周期&#xff1a; Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务&#xff1a;执行Java程序。程序开始执行时他才运行&#xff0c;程序结束时他就停止。你在同一台机器上运行三个程序&#xff0c;就会有三个运行中的Java虚拟机。 Java虚拟…

Model / View结构

红色部分是可以直接使用的。 QFileSystemModel; QFileSystemModel的使用&#xff1a; 头文件&#xff1a; QFileSystemModel* model nullptr; cpp文件&#xff1a; model new QFileSystemModel; model->setRootPath(QDir::currentPath()); ui->listView->setModel…

纯前端低代码平台demo,vue框架,nodejs,简单的pm2纯前端部署实践

文章目录 目录结构说明本地运行项目启动后的页面demo前端部署打包pm2nginx 后话 前段时间开发了一个纯前端的低代码平台demo&#xff0c;vue框架&#xff0c;nodejs&#xff0c;pm2纯前端部署实践。为此记录一下开发过程以及各方面遇到的问题&#xff0c;并作说明。 表单用了若…

L2-032 彩虹瓶

一、题目 二、解题思路 判断输入的数字&#xff08;搬来的这箱小球&#xff09;是否符合&#xff1a;若符合&#xff0c;则 cot &#xff08;下一个颜色序号&#xff09;&#xff1b;若不符合&#xff0c;则入栈&#xff08;放到临时货架&#xff09;&#xff0c;如果栈溢出&a…

Java中的线程(创建多线程的三种方法)

Java中的线程——创建 创建多线程方式一&#xff1a;继承Thread类方式二&#xff1a;实现Runnable接口方式三&#xff1a;实现Callable接口 线程的常用API 创建多线程 方式一&#xff1a;继承Thread类 定义一个子类MyThread继承线程类java.lang.Thread&#xff0c;重写run方法…

板块一 Servlet编程:第三节 HttpServletRequest对象全解与请求转发 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程&#xff1a;第三节 HttpServletRequest对象全解与请求转发 一、什么是HttpServletRequest二、接收请求的常用方法三、请求乱码问题四、请求转发&#xff1a;forward五、Request作用域getParameter和getAttribute的区别 在上一节中我们已经学习了完整的Servl…

政安晨:【完全零基础】认知人工智能(一)【超级简单】的【机器学习神经网络】 —— 预测机

开个头 很多小伙伴们很想亲近人工智能与机器学习领域&#xff0c;然而这个领域里的核心理论、算法、工具给人感觉都太过“高冷”&#xff0c;让很多小伙伴们望而却步&#xff0c;导致一直无法入门。 如何捅破这层窗户纸&#xff1f; 让高冷的不再高冷&#xff0c;让神秘的不…

CASS编码对照表

CASS编码对照表&#xff0c;包含了地籍与房产测绘中各种地理信息要素的编码、图层以及对应的名称和描述。这些编码主要应用于地形地貌、水系、居民地、交通设施&#xff08;如铁路、公路、桥梁、隧道&#xff09;、地下管线、海岸线、岛屿、矿产资源、建筑物以及其他人工构筑物…

当excel中表格打印预览右边超出限定页面时,调整列宽

解决办法&#xff1a;调整整体列或者部分列的列宽 操作流程如下&#xff1a; 第一步&#xff1a;选中需要调整的列 ①将鼠标放在表格的列上&#xff0c;等出现向下粗箭头后——>②单击&#xff08;变成粗十字&#xff09;该列——>③拖动选中列 第二步&#xff1a;调…