自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 Spring项目:文字花园(四)

接下来我们介绍第三种⽅案: 令牌技术 JWT令牌⽣成和校验。1.在pom文件,引入依赖 2.生成令牌(utils/JwsUtils)代码: 3.编写后端接口(User Controller) service层:mapper层:4.编写前端代码进行交互: 展示成功 . 新添类:interceptor/LoginInterceptor 代码: 1.2应用到项目1.新添类:config/webconfig2. 编写前端代码(blog_list.html)

2024-08-20 23:03:41 747 2

原创 Spring项目:文字花园(三)

controller层添加方法(根据博客id查看博客详情)Service层写构造方法使用postman来进行测试测试成功。

2024-08-19 22:01:18 475

原创 Spring由于后端逻辑,前端无法展示数据

前端需要发送请求,获取到getList方法,但是后端返回的是一个List类,而不是Result类,导致找不到SUCCESS,根本没有执行if语句内容,自然就没有展示到到前端。或者在前端代码,在if条件把SUCCESS状态码去掉,直接使用List对象。后端逻辑:在ctroller层,调用getList方法返回的是List列表。状态码SUCCESS返回result类。把返回的类型修改成Result。前端代码,if条件里面是。来进行数据展示更新。

2024-08-19 18:09:52 508

原创 Spring项目:文字花园(一)

实现登录注册功能。⽤⼾登录成功后, 可以查看所有⼈的博客. 点击 可以查看该博客的正⽂内容. 如果该博客 作者为当前登录⽤⼾, 可以完成博客的修改和删除操作, 以及发表新博客。

2024-08-12 21:35:11 938

原创 Spring项目:文字花园(二)

这段代码使用MyBatis注解方式定义了一个名为和selectById,分别用于根据用户名和用户ID从数据库中查询用户信息,并返回UserInfo对象。单元测试:代码解读:用于测试接口中的和selectById方法,通过自动注入实例并调用其方法来验证数据库查询功能的正确性,测试结果通过控制台输出显示。

2024-08-12 21:22:45 799

原创 事务隔离级别

Spring 事务传播机制我们回顾一下MySQL 事务隔离级别.SQL 标准定义了四种隔离级别, MySQL 全都⽀持. 这四种隔离级别分别是:1.: 读未提交, 也叫未提交读. 该隔离级别的事务可以看到其他事务中未提交的数据.读已提交, 也叫提交读. 该隔离级别的事务能读取到已经提交事务的数据,该隔离级别不会有脏读的问题.但由于在事务的执⾏中可以读取到其他事务提交的结果, 所以在不同时间的相同 SQL 查询可能会得到不同的结果, 这种现象叫做不可重复读3.

2024-08-11 21:41:16 1593

原创 【无标题】

然而,也需要注意,由于事务管理是通过代理实现的,因此有些情况下(如类内部的方法调用)可能无法触发事务管理逻辑。⽆需⼿动开启事务和提交事务, 进⼊⽅法时⾃动开启事务, ⽅法执⾏完会⾃动提交事务, 如果中途发⽣了没有处理的异常会⾃动回滚事务.注解的类或方法时,Spring 会为这个类或方法创建一个代理对象,并在代理对象中嵌入事务管理的逻辑。方法进行用户注册,如果注册成功则提交事务,如果在注册过程中遇到异常则回滚事务。属性定义了事务的传播行为,即当前事务方法应该如何与存在的事务进行交互。

2024-08-11 21:17:36 658

原创 Spring事务

事务的定义:事务是⼀组操作的集合, 是⼀个不可分割的操作.事务会把所有的操作作为⼀个整体, ⼀起向数据库提交或者是撤销操作请求.所以这组操作要么同时成功, 要么同时失败.事务的特性(ACID)原子性:事务中的所有操作作为一个整体执行,它们要么全部成功,要么全部失败回滚。一致性:事务执行前后,数据库必须从一个一致性状态转变到另一个一致性状态。隔离性:并发执行的事务之间应该相互隔离,避免数据冲突和不一致性。持久性:一旦事务提交,其对数据库的修改就是永久性的,即使在系统故障后也能够恢复。

2024-08-09 18:36:27 1232

原创 Spring AOP 源码剖析

Spring AOP通过动态代理技术提供了一种灵活的方式来增强现有方法的功能,而无需修改源代码。其源码实现涉及Bean生命周期管理、动态代理技术、责任链模式等多个方面,深入理解这些机制有助于更好地使用和维护Spring AOP。

2024-08-08 21:51:04 1084

原创 深入探索String AOP想详情

AOP是Spring框架的第⼆⼤核⼼(第⼀⼤核⼼是IoC)Q:什么是AOP?A:Aspect Oriented Programming(⾯向切⾯编程)什么是⾯向切⾯编程呢?切⾯就是指某⼀类特定问题, 所以AOP也可以理解为⾯向特定⽅法编程. 什么是⾯向特定⽅法编程呢?

2024-08-08 20:58:33 626

原创 深入探索String AOP:切点表达式

创建⼀个注解类(和创建Class⽂件⼀样的流程, 选择Annotation就可以了)代码简单说明, 了解即可. 不做过多解释1.@Target 标识了 Annotation 所修饰的对象范围, 即该注解可以⽤在什么地⽅.TYPE: ⽤于描述类、接⼝(包括注解类型) 或enum声明ElementType.METHOD: 描述⽅法ElementType.PARAMETER: 描述参数TYPE_USE: 可以标注任意类型。

2024-08-08 20:53:31 703

原创 DispatcherServlet 源码分析

当Tomcat启动之后, 有⼀个核⼼的类DispatcherServlet, 它来控制程序的执⾏顺序.所有请求都会先进到DispatcherServlet,执⾏doDispatch 调度⽅法. 如果有拦截器, 会先执⾏拦截器 preHandle() ⽅法的代码, 如果 preHandle() 返回true, 继续访问controller中的⽅法. controller当中的⽅法执⾏完毕后,再回过来执⾏ postHandle() 和 afterCompletion() ,返回给DispatcherServle

2024-08-06 22:39:33 1011

原创 Spring Boot实战:拦截器

什么是拦截器:拦截器在SpringBoot中主要有以下几个作用: 1.2拦截器的基本使用1.⾃定义拦截器:实现HandlerInterceptor接⼝,并重写其所有⽅法 2.注册配置拦截器:实现WebMvcConfigurer接⼝,并重写addInterceptors⽅法 3.启动服务, 试试访问任意请求, 观察后端⽇志可以看到preHandle ⽅法执⾏之后就放⾏了, 开始执⾏⽬标⽅法, ⽬标⽅法执⾏完成之后执⾏ postHandle和afterCompletion⽅法.

2024-08-06 11:03:11 4069

原创 Mybatis实战:图书管理系统(笔记)

数据库表是应⽤程序开发中的⼀个重要环节, 数据库表的设计往往会决定我们的应⽤需求是否能顺利实现, 甚⾄决定我们的实现⽅式. 如何设计表以及这些表有哪些字段, 这些表存在哪些关系 也是⾮常重要的.分析我们的需求, 图书管理系统相对来说⽐较简单, 只有两个实体: ⽤⼾和图书, 并且⽤⼾和图书之间没有关联关系表的具体字段设计, 也与需求有关.数据库表设计是依据业务需求来设计的. 如何设计出优秀的数据库表, 与经验有很⼤关系.2.在controller层写后端(UserController)逻辑。

2024-08-04 21:57:43 367

原创 Mybatis实战:#{} 和 ${}的使用区别和数据库连接池

{} 和 ${}#{} 和 ${} 在MyBatis框架中都是用于SQL语句中参数替换的标记,但它们在使用方式和处理参数值上存在一些显著的区别。特点1.1Interger类型的参数1.先看Interger类型的参数2.观察日志3.查看日志中的输出语句我们输⼊的参数并没有在后⾯拼接,id的值是使⽤?进⾏占位. 这种SQL 我们称之为"预编译SQL"。4.我们把#{}改成${}5.再次查看输出日志信息可以看到, 这次的参数是直接拼接在SQL语句中了。

2024-08-02 16:18:07 1853

原创 MyBatis开发: XML配置⽂件

在MyBatis中,XML配置文件扮演着至关重要的角色,它们定义了数据库操作的行为和规则。接下来,我将用通俗的例子来解释这些配置文件的概念和功能。1. XML配置文件的概念XML配置文件是一种使用XML语言编写的文件,它们包含了MyBatis框架运行所需的配置信息。MyBatis通过解析这些XML文件来获取数据库连接信息、SQL语句、映射关系等,从而实现对数据库的操作。

2024-08-01 21:44:36 2309

原创 MyBatis开发:使用注解

一.什么是MyBatis?在应⽤分层学习时, 我们了解到web应⽤程序⼀般分为三层,即:Controller、Service、Dao .之前的案例中,请求流程如下: 浏览器发起请求, 先请求Controller, Controller接收到请求之后, 调⽤Service进⾏业务逻辑处理, Service再调⽤Dao, 但是Dao层的数据是Mock的, 真实的数据应该从数据库中读取。我们学习MySQL数据库时,已经学习了JDBC来操作数据库, 但是JDBC操作太复杂了,所以我们学习使用MyBatis。

2024-08-01 21:44:10 1032

原创 Spring Boot的配置

在application.properties修改端口号:二.配置⽂件的格式Spring Boot 配置⽂件有以下三种:yml 为yaml的简写, 实际开发中出现频率最⾼这里只讲yml和properties。

2024-07-31 21:05:17 1820

原创 Spring IoC & DI(笔记)

什么是容器?生活中的水杯,垃圾桶,冰箱等等这些都是容器,我们接触的容器有哪些?List/Map->数据存储容器Tomcat-> Web 容器。什么是IoC?IoC是Spring的核⼼思想,其实IoC我们在前⾯已经使⽤了,我们在前⾯讲到,在类上⾯添加@RestController和@Controller 注解。就是把这个对象交给Spring管理,Spring框架启动时就会加载该类.把对象交给Spring管理,就是IoC思想.

2024-07-30 19:40:03 913

原创 Spring验证码

1.什么是Hutool?2.代码复制到test类中3.代码爆红,说明需要引入依赖4.根据名取Maven仓库相关依赖5.在pom.xml文件中进行配置6.引入成功7. 运行程序打开d盘,发现已经生成了验证码的图片,路径在上面提示有。使用其他验证码的方式相同,不赘述。

2024-07-30 19:29:00 494

原创 Spring Boot:图书管理系统(一)

5. 编写用户登录的前端代码(主要看AJAX)4.打开postman测试后端接口。7.编写图书列表的前端代码。2.编写图书列表接口。3.编写图书列表接口。1.编写用户登录接口。3.编写图书列表接口。

2024-07-26 22:22:42 522

原创 Spring Boot入门指南:留言板

1.写一个类对象,添加构造方法虽然有快捷键,但是还是不够偷懒项目添加Lombok。Lombok是⼀个Java⼯具库,通过添加注解的⽅式,简化Java的开发。下载插件Lombok通过⼀些注解的⽅式,可以帮助我们消除⼀些冗⻓代码,使代码看起来简洁⼀些 .@Data注解会帮助我们⾃动⼀些⽅法,包含getter/setter,equals,toString等.

2024-07-26 15:37:52 1797

原创 Spring Boot入门指南:轻松构建高效Spring应用(五)

定义返回的数据格式为⾮视图,返回⼀个text/html信息。

2024-07-25 22:52:10 1794

原创 Spring Boot入门指南:轻松构建高效Spring应用(四)

在计算机领域,会话是⼀个客⼾与服务器之间的不中断的请求响应.对客⼾的每个请求,服务器能够识别出请求来⾃于同⼀个客⼾.当⼀个未知的客⼾向Web应⽤程序发送第⼀个请求时就开始了⼀个会话.当客⼾明确结束会话或服务器在⼀个时限内没有接受到客⼾的任何请求时,会话就结束了."⽆状态"的含义指的是:默认情况下HTTP协议的客⼾端和服务器之间的这次通信,和下次通信之间没有直接的联系,但是实际开发中,我们很多时候是需要知道请求之间的关联关系的,例如登陆⽹站成功后,第⼆次访问的时候服务器就能知道该请求是否是已经登陆过了。

2024-07-24 21:21:03 2040

原创 Spring Boot入门指南:轻松构建高效Spring应用(三)

SpringWebMVC是基于ServletAPI构建的原始Web框架,从⼀开始就包含在Spring框架中。它的正式名称“SpringWebMVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为Spring MVC。Q:什么是Servlet?

2024-07-22 21:28:38 1077

原创 Spring Boot入门指南:轻松构建高效Spring应用(二)

可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速度、简单性和⽣产⼒的关注使其成为世界上最流⾏的Java框架。Spring官⽅提供了很多开源的项⽬,覆盖范围从Web开发到⼤数据,Spring发展到了今天,已经形成了⾃⼰的⽣态圈.我们在开发时,也倾向于使⽤Spring官⽅提供的技术,来解决对应的问题.Spring是一个很大的开源框架,它包含Spring core 和Spring家族。

2024-07-21 23:22:07 1409

原创 Spring Boot入门指南:轻松构建高效Spring应用(一)

Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,项⽬对象模型)的概念,Maven可以通过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。简而言之:Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包。举个例子~想象一下,你正在盖房子,需要各种材料,如砖块、水泥、木材等。Maven就像是你的材料供应商,它知道哪里可以找到这些材料(即Maven仓库),并且当你需要某种材料时,它会自动帮你订购并送到你的工地上。

2024-07-21 22:01:14 1627

原创 “深入JVM内部:揭秘Java程序运行的神秘黑盒“(二)

根据自己的需求定制类加载器。JVM 中进行类加载的操作,是有一个专门的模块,称为“类加载器"(ClassLoader)JVM 中的类加载器默认是有 三个 的.(也可以自定义)类加载器的作用:(问百度文心)上述的三个类加载器,存在"父子关系”(不是 面向对象中的父类,子类继承关系)而是类似于“二叉树”,有一个指针(引用) parent, 指向自己的“父”类加载器。

2024-07-17 22:24:25 1817

原创 “深入JVM内部:揭秘Java程序运行的神秘黑盒“(一)

JVM是的简称,意为Java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。常见的虚拟机:JVMVMwave。JVM和其他两个虚拟机的区别VMwave与VirtualBox是通过软件模拟物理CPU的指令集,物理系统中会有很多的寄存器;JVM则是通过软件模拟Java字节码的指令集,JVM中只是主要保留了PC寄存器,其他的寄存器都进行了裁剪。JVM是一台被定制过的现实当中不存在的计算机。

2024-07-17 22:22:40 808

原创 HTTP背后的故事:理解现代网络如何工作的关键(三)

HTTPS也是一个应用层协议是在HTTP协议的基础上引入了一个加密层(SSL)HTTP协议内容都是按照文本的方式明文传输的这就导致在传输过程中出现一些被篡改的情况。

2024-07-16 23:01:24 1767

原创 HTTP背后的故事:理解现代网络如何工作的关键(二)

我们知道请求体的基本格式包含四个部分:首行,请求头(Header),正文(Body),空行在正文body中,body是你可以存放任意格式的数据,只有前端和后端约定好即可,从使用习惯上说,GET没有body,POST含有body,GET会把需要给服务器的补充信息放到query string中(url)。

2024-07-15 19:21:15 1101

原创 HTTP背后的故事:理解现代网络如何工作的关键(一)

2.HTTP 诞生与1991年. 目前已经发展为最主流使用的一种应用层协议. 注意:要查看报文格式,要先下载一个抓包工具,抓包工具本质上是一个"代理程序”,能够获取到网络上传输的数据,并显示出来,从而给程序员提供一些参考。这里的抓包工具使用Fiddler,这是专注于HTTP的抓包。下载地址:Web Debugging Proxy and Troubleshooting Tools|Fiddler (telerik.com) 如果是学生使用的话,使用经典版即可,是免费的。除了上述操作之外,另外,还需要关闭电

2024-07-14 23:33:34 2247 5

原创 Vue3从入门到实战:深度了解相关API

本文将介绍Vue 3中的一些响应式API:shallowRef、shallowReactive、readonly、shallowReadonly、toRaw、markRaw和customRef。这些API可以帮助开发者更好地控制和管理Vue应用程序中的响应式数据,首先,我们将了解shallowRef和shallowReactive,它们是Vue 3中的两个响应式数据创建函数。shallowRef用于创建一个浅层响应式引用,它的值可以是任何JavaScript对象或基本类型。而shallowReactiv。

2024-04-19 21:03:19 1509 67

原创 Vue3从入门到实践:深度了解新组件

Vue 3是Vue.js框架的最新版本,引入了一些令人兴奋的新特性和改变。本文将介绍其中的几个关键特性,包括Teleport(传送门)、Suspense(悬挂)以及全局API的转移至应用对象。Teleport允许开发者将组件内容渲染到DOM中的任意位置,提供了更大的灵活性。Suspense用于处理异步组件的加载状态和错误处理,改善了用户体验。而全局API的转移至应用对象使得Vue 3更加模块化和可配置,开发者需要通过应用对象来注册全局指令、混入等。、

2024-04-19 21:03:03 2241 48

原创 Vue3从入门到实战:深度掌握组件通信(下部曲)

在现代的前端开发中,组件化已经成为一种主流的架构模式。而组件通信作为组件间互动和数据传递的关键机制,对于构建复杂的应用程序至关重要。本文将带领读者从Vue3的入门到实战,深度掌握组件通信的技巧和方法。我们将从基础开始,介绍默认插槽和作用域插槽的使用。你将学习如何利用默认插槽在组件中插入内容,并了解作用域插槽如何实现对插槽内容的访问和控制。通过实践示例,你将掌握在组件间实现数据传递和内容嵌套的技巧。

2024-04-17 22:08:05 1836 56

原创 Vue3从入门到实战:深度掌握组件通信(上部曲)

在现代的前端开发中,组件化已经成为一种主流的架构模式。而组件通信作为组件间互动和数据传递的关键机制,对于构建复杂的应用程序至关重要。本文将带领读者从Vue3的入门到实战,深度掌握组件通信的技巧和方法。我们将从基础开始,介绍默认插槽和作用域插槽的使用。你将学习如何利用默认插槽在组件中插入内容,并了解作用域插槽如何实现对插槽内容的访问和控制。通过实践示例,你将掌握在组件间实现数据传递和内容嵌套的技巧。

2024-04-17 22:07:22 1234 23

原创 Vue3从入门到实战:深度掌握通信插槽slot

插槽(Slot)是Vue中一项强大的特性,它让我们能够在组件中灵活地插入内容。通过插槽,我们可以将一些组件的部分交给使用者来定制,增加了组件的可复用性和灵活性。文章将首先介绍默认插槽(Default Slot),它允许我们在组件中指定一个位置,以便在使用组件时插入自定义的内容。我们可以为插槽提供默认内容,当没有自定义内容时,显示默认内容。默认插槽让组件的使用者能够根据需要插入自己的文本或元素,实现个性化的定制。接着,文章将探讨作用域插槽(Scoped Slot)。作用域插槽是一种特殊的插槽技术,它允

2024-04-15 11:34:02 2112 47

原创 Vue3从入门到实战:掌握状态管理库pinia(下部分)

Pinia是Vue 3中一个强大的状态管理库,它提供了集中化、响应式和易于维护的状态管理方案。Pinia通过定义存储(store)来组织和管理应用的状态,使得开发者可以轻松地创建、修改和访问状态。它简化了状态更新的过程,通过定义方法来改变状态,并自动触发视图的更新。Pinia还提供了类型安全支持,有助于减少错误并提高代码质量。此外,Pinia的扁平化代码结构使得状态管理更加直观和易于理解。总的来说,Pinia是一个高效、灵活且易于使用的状态管理库,为Vue 3应用的开发和维护提供了强有力的支持。

2024-04-05 16:42:21 1418 29

原创 Vue3从入门到实战:掌握状态管理库pinia(上部分)

Pinia是Vue 3中一个强大的状态管理库,它提供了集中化、响应式和易于维护的状态管理方案。Pinia通过定义存储(store)来组织和管理应用的状态,使得开发者可以轻松地创建、修改和访问状态。它简化了状态更新的过程,通过定义方法来改变状态,并自动触发视图的更新。Pinia还提供了类型安全支持,有助于减少错误并提高代码质量。此外,Pinia的扁平化代码结构使得状态管理更加直观和易于理解。总的来说,Pinia是一个高效、灵活且易于使用的状态管理库,为Vue 3应用的开发和维护提供了强有力的支持。

2024-04-05 16:41:39 2002 2

原创 Vue3从入门到实战:路由的query和params参数

在Vue 3中,我们可以通过路由的查询参数来传递数据。这意味着我们可以在不同的页面之间传递一些信息,以便页面可以根据这些信息来显示不同的内容或执行不同的操作。查询参数的使用方式类似于在URL中添加附加信息,以便页面之间可以根据这些信息进行交互和通信。这在很多应用中都非常有用,例如搜索功能、过滤功能、分页功能等等。举个例子,假设我们有一个商品列表页面,用户可以在搜索框中输入关键字来搜索商品。当用户点击搜索按钮时,我们可以将输入的关键字作为查询参数添加到URL中,然后跳转到商品列表页面。在商品列表页面

2024-04-03 17:43:25 12065 24

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除