- 博客(113)
- 资源 (1)
- 收藏
- 关注
原创 JavaWeb合集23-文件上传
实现效果:用户点击上传按钮、选择上传的头像,确定自动上传,将上传的文件保存到指定的目录中,并重新命名,生成访问链接,返回给前端进行回显。在此之前,确保这个目录的存在:(\src\main\resources\static\)可根据自己需求进行修改,在工具类中。// 假设updateUserAvatarApi返回的是一个Promise,且解析为包含fileUrl的对象。//文件类型,限制,可以不用写,因为,在accept=".png,.jpg" 已经限制了。// 处理文件上传或移除后的逻辑。
2024-11-09 16:05:49
934
1
原创 Vue3实现获取验证码按钮倒计时效果
在此期间,用户无法再次点击按钮,即使用户刷新页面,倒计时依然存在,直到倒计时完毕,按钮恢复。//不为空时,判断倒计时秒数,是否为60,不是就直接调用倒计时函数(说明没有倒计时完),执行倒计时。//判断获取的信息是否为空,为空,说明里面没有保存数据,就不赋值到countdownInfo中。//获取localStorage里保存的,倒计时字符串信息,并解析为JSON对象。//判断是否减到了0,为0就恢复默认信息,并停止倒计时。//监听对象,数据是否发生改变,改变就进行重新保存。//按钮是否有效,默认有效。
2024-10-26 18:28:23
1366
1
原创 JavaWeb合集17-拦截器(Interceptor)和过滤器(Filter)
选择使用过滤器还是拦截器,取决于你的具体需求和应用场景。如果你需要处理与业务逻辑无关的通用问题,过滤器是一个不错的选择。如果你需要处理与业务逻辑相关的操作,特别是当你已经在使用 Spring 框架时,拦截器会更加灵活和强大。
2024-10-24 16:21:30
1718
原创 JavaWeb合集16-JWT令牌验证
JWT(JSON Web Token)是一种用于在网络上安全传输信息的紧凑、URL 安全的表示形式。JWT 设计用于在各方之间安全地传输信息,并且信息是可以被验证和信任的。JWT 由三个部分组成,它们通过点(.)分隔,头部(Header)、负载(Payload)、签名(Signature)。用户身份验证流程:用户登录、服务器验证、客户端存储JWT、请求附带JWT、服务器验证JWT。使用场景:用户身份验证、单点登录、微服务间的通信、移动应用认证等。1、导入对应的jar包。2、创建Jwt工具类。
2024-10-24 16:19:18
613
原创 JavaWeb合集15-线程局部变量ThreadLocal
场景:通过过滤器/过滤器获取到JWT ,可将JWT值存储到ThreadLocal中,当执行到需要JWT的地方是可以进行取出使用(当前线程内)。ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。测试:通常情况下,我们在拦截器或过滤器,对用户信息验证(token)通过后,就将用户id保存起来。ThreadLocal 线程工具类,保存当前线程处理的用户的用户ID(或其他ID)
2024-10-24 16:17:16
369
原创 JavaWeb合集20-定时任务框架SpringTask
1、导入maven坐标 spring context (已存在) ,下面两个包都包含对应的包不需要导包(SpringBoot项目)定时任务框架:Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发的时间。cron表达式在线生成器: https://cron.qqe2.com/每个域的含义分别为:秒、分钟、小时、日、月、周、年(可选)4、实际项目中的使用:订单定时任务。3、自定义定时任务类。
2024-10-24 16:09:16
393
原创 JavaWeb合集14-全局异常处理器
全局异常处理器可以用来统一处理整个应用程序中可能出现的异常,从而确保在出现未预期的错误时,程序能够以一种优雅的方式处理这些错误,并提供一致的错误响应或记录。,注解参数写刚刚创建的异常类的class对象(类名.class),方法的返回值就是返回给前端的Result类型,通过参数的方式将异常对象注入进来(类名 变量)。2、创建一个要处理的异常类,继承RuntimeException类,在创建异常类中,写一个构造器,写上接收参数(3、在全局处理异常类,创建要处理的异常方法,加上注解。
2024-10-24 15:44:56
695
原创 JavaWeb合集19-简化开发—公共字段自动填充
需求:很多时候,数据库表都有一些公共的字段,如:创建时间、修改时间、修改人ID等,这些字段每次都要去获取对应的日期或者用户ID,填充到要添加的字段中,比较麻烦,这时就可以使用自动填充。自定义切面类AutoFillAspect,统一拦截加入了AutoFill 注解的方法,通过反射为公共字段赋值。自定义注解AutoFil,用于标识需要进行公共字段自动填充的方法。在Mapper的方法上加入AutoFill 注解。技术点:枚举、注解、AOP、反射。
2024-10-22 16:58:55
818
原创 JavaWeb合集18-接口管理Swagger
创建好后直接访问:后端地址:端口号/doc.html,如:http://localhost:9091/doc.html。使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。官网: https://swagger.io/在配置类中加入knife4j相关配置。导入knife4j的maven坐标。
2024-10-22 16:46:28
381
原创 JavaWeb合集22-Apache POI
一般情况下,想这个比较复杂的工作表,都是不需要提供POI来创建的,一步是手动创建这样一个模块文件,通过输入流将其读取进去,只需要将数据写入对应的单元格,通过输出流由客户端、浏览器进行下载即可。Apache POI是一个处理Miscrosoft Office各种文件格式的开源项目。一般情况下,POI都是用于操作Excel文件。使用场景:银行网银系统导出交易明细、各种业务系统导出Excel报表、批量导,入业务数据。报表导出,营业数据导出到工作表中,下载下来。接口:没有参数,也没有返回值。
2024-10-18 10:35:12
1265
原创 JavaWeb合集21-WebSocket
它实现了浏览器与服务器全双工通信,浏览器和服务器只需要完成一次握手, 两者之间就可以创建持久性的连接,并进行双向数据传输。//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。//判断当前浏览器是否支持WebSocket。// 最小值和最大值都是包含的。//连接WebSocket节点。//将后端传递的数据渲染至页面。//连接发生错误的回调方法。//连接成功建立的回调方法。//接收到消息的回调方法。//连接关闭的回调方法。
2024-10-18 10:34:03
969
原创 JavaWeb合集13-HttpClient
HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。简单来说就是可以在java中构建HTTP请求。核心API:核心API:HttpClient、HttpClients、CloseableHttpClient、HttpGet、HttpPost。发请求步骤:①发送请求步骤、②创建HttpClient对象、③调用HttpClient的execute方法发送请求。
2024-10-17 14:35:39
249
原创 JavaWeb合集12-Redis
key:就是Redis(或其他缓存工具)的key的后半部分,是动态的,这里使用的是Spring表达式来获取到对象的id属性,作为后半部分。user表示,形参里的user对象;外卖商家,右自己的外卖管理端,可以添加菜品对外售卖,售卖前,需要将店铺的营业状态从打样中设置为营业中,其中这个状态,是保存到Redis中的。每当通过菜品分类id或者套餐分类id,来对数据进行查询时,进行先查询Redis里面是否有对应的数据,如果没有才查询数据库,从数据库里面查询出来的结果,再缓存到Redis中。
2024-10-17 14:31:45
1031
原创 JavaWeb合集11-Maven高级
当分模块开发时,需要对项目进行打包,这时就会发现,相关联的模块没有下载到Maven中打包会失败,就需要一个一个模块的进行下载(install)到Maven仓库中,比较繁琐。注意:聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。概念:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。在子工程中,配置了继承关系之后,坐标中的groupId是可以省略的,因为会自动继承父工程的。
2024-10-17 14:07:59
1197
原创 JavaWeb合集10-StringBoot原理
在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在SpringBoot的项目中 ,一般会将这些公共组件封装为SpringBoot的starter。案例:需求:自定义aliyun-oss-spring-boot-starter, 完成阿里云0SS操作工具类AliyunOSSUtils的自动配置。目标:引入起步依赖引入之后,要想使用阿里云0SS,注入AliyunOSSUtils直接使用即可。创建aliyun-oss-spring-boot-starter模块(主要作用依赖管理)
2024-10-17 12:02:01
1025
原创 JavaWeb合集09-事务管理与AOP
例子:比如项目部分功能运行较慢,定位执行耗时较长的业务方法,此时需要统计每一个业务方法的执行耗时,这时就可以使用一个模板,当运行方法前,先计算当前时间,方法运行后,再统计当前时间,两个时间相减就得到了方法运行的耗时。(日志信息包含:操作人、操作时间、执行方法的全类名、执行方法名、方法运行时参数、返回值、方法执行时长)②目标方法后的通知方法:字母排名靠前的后执行;④ * :单个独立的任意符号,可以通配任意返回值、包名、类名、方法名、任意类型的-一个参数,也可以通配包、类、方法名的一部分。
2024-10-17 11:55:41
934
原创 JavaWeb合集08-项目开发实战
下面的代码是在插入数据的同时,上传文件(携带参数上传文件),但是这样有个弊端,就是如果参数比较多时比较繁琐,需要一个一个的编写对应的形参,并且在修改数据时,又要重新时间上传文件的接口,用户可能不修改头像,只修改基本信息,这时就会导致空指针异常,比较繁琐。文件上传,是指将本地图片、视频、音频等文件,上传到服务器,供其他用户浏览或下载的过程。③用户点击上传文件按钮,选择文件后确定,自动调用文件上传接口,将文件上传到阿里云OSS中,并返回访问文件访问链接,就是原链接没有变化,就是将文件进行了替换。
2024-10-17 11:52:03
1129
原创 JavaWeb合集07-MyBatis
JDBC: (Java DataBase Connectivity),就是使用Java语言操作关系型数据库的一套API。sun公司官方定义的一套操作所有关系型数据库的规范,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC) 编程,真正执行的代码是驱动jar包中的实现类。
2024-10-17 11:37:02
735
原创 JavaWeb合集06-MySQL数据库
概念:项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:一对多(多对一)、多对多、一对一。(将操作进行提交,只要事务没有提交,当前事务的数据是不会改变的,但是其它事务的数据已经发生了改变,只有当前事务的全部语句执行成功才执行它)作用:当父表的数据要被删除时会检查子表中是否有父表对应外键字段的值,如果有就不能删除,必须将子表里面的关联父表字段的数据全部删除才能删除父表的字段。
2024-10-17 10:50:29
636
原创 JavaWeb合集05-SpringBoot基础知识
Autowrite :自动装配,通过声明的数据类型来装配对应的bean对象。缺点,只能获取到一个相同类型的bean对象,如果有IOC容器里面有2个Bean对象,使用@Autowrite依赖注入就好报错。由于三层架构中,每一层都需要下次成来提供对应的方法,所有要new 下一次的对象,如果上一层的类名发送改变,那么上一层就需要修改对应的类名,如下。3、@Resource注解:通过它来代替@Autowrite注解,直接指定要注入的Bean对象,参数name的值就是要注入的Bean对象。
2024-10-17 10:27:13
1005
1
原创 JavaWeb合集04-SpringBoot项目配套知识
Tomcat是 Apache软件基金会一个核心项目, 是一个开源免费的轻量级Web服务器,支持Servlet/JSP少 量JavaEE规范。Web服务器是一个软件程序 ,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。概念: Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。可以在编写API的时候进行规定服务器响应的数据类型等。浏览器向服务器发送请求的规则(get、post等)。服务器向浏览器响应的。
2024-10-17 09:57:18
526
原创 JavaWeb合集03-Maven
bin:存放的是可执行文件,如:测试、打包、编译等这些指令。conf:存放配置文件的,配置本地仓库和阿里云私服就就在settings.xml文件下配置lib:存放的是maven它所依赖的一些jar包文件,因为maven是基于java开发的。
2024-10-17 09:51:26
1272
原创 JavaWeb合集02-Vue基础内容
Nginx是一 款轻 量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3) 代理服务器。其特点是占有内存少,并发能力强,在各大型互联网公司都有非常广泛的使用。Nginx默认占用80端口号,如果80端口号被占用,可以在nginx.conf中修改端口号。windos查看某个端口被哪些进程占用命令:netstat -ano | findStr 80conf:配置文件目录html:静态资源文件目录logs:日志文件目录temp:临时文件目录nginx.exe:启动程序文件。
2024-10-17 09:42:24
938
原创 JavaWeb合集01-异步请求
在线库:https://unpkg.com/axios/dist/axios.min.js。///GET请求方式,不是简写方式(不推荐)//POST请求方式,不是简写方式(不推荐)//请求异常时输出异常(请求失败)//请求异常时输出异常(请求失败)//POST请求方式简写(无参数)//POST请求方式简写(有参数)//GET请求方式简写(无参数)//GET请求方式简写(有参数)//请求异常或者失败后输出异常。//请求异常或者失败后输出异常。//请求异常或者失败后输出异常。//请求异常或者失败后输出异常。
2024-10-17 09:12:27
760
原创 Linux服务器前后端项目部署vue+springboot—搭建服务器上的运行环境(JDK、Redis、MySQL、Nginx)
华为云 CenteOS7.8 64配置信息:2核4G。
2024-10-17 09:10:03
1269
原创 Java基础09-集合框架—双列集合
如果键存储的是自定义类型的对象,可以通过重写hashCode和equals方法,这样可以保证多个对象内容一样时,HashMap集合就能认为是重复的。③遍历80个学生选择的景点,每遍历一一个景点,就看Map集合中是否存在该景点,不存在存入“景点=1“存在则其对应值+1,实际上:原来学的Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要键数据,不要值数据而已。Map集合的所有键是不允许重复的,但值可以重复,键和值是一一对应的, 每-个键只能找到自己对应的值。
2024-10-17 08:15:58
808
原创 Java基础15-Java高级(单元测试、反射、注解、动态代理)
/自定义注解格式public @interface 注解名称{public 属性类型 属性名() default 默认值;//注解//默认public可以不写//可以写默认值(写了,在赋值的时候可以不写)//测试注解@MyTest(name="小明",age=19,hobby={"唱","跳","篮球"})@MyTest(name="小红",hobby={"唱","跳","篮球"})1、特殊属性名: value。
2024-10-16 17:43:33
1106
原创 Java基础14-网络编程
每个客户端的socket还是交给服务端一个子线程进行处理,如果上线就将socket对象用集合保存起来,用来转发信息,如果下线就将其删除掉。不事先建立连接,数据按照包发,一包数据包含:自己的IP、程序端口,目的地IP、程序端口和数据(限制在64KB内),超过就分包发送。这个案例只能接收一个程序的信息,没法实现接收多个客户端发送的信息:因为服务端现在只有一个主线程,只能处理一个客户端的消息。不事先建立连接,发送端每次把要发送的数据(限制在64KB内)、接收端IP、 等信息封装成一个数据包, 发出去就不管了。
2024-10-16 17:40:39
729
原创 Java基础13-多线程
并发:进程中的线程是由CPU负责调度执行的,但CPU能同时处理线程的数量有限,为了保证全部线程都能往前执行,CPU会轮询为系统的每个线程服务,由于CPU切换的速度很快,给我们的感觉这些线程在同时执行,这就是并发。之前学习的所有线程安全的加锁方法,都加的是悲观锁,也就是加锁的地方,只能一个一个线程的执行,而乐关锁,可以保证线程安全的情况下,同时多个线程同时执行。可能输出的结果是小明和小红有一个取成功,余额变为0。原理:固定线程数量,处理任务,没有处理到的任务,只能等前面的某个线程处理完才去处理等待的任务。
2024-10-16 17:34:49
623
原创 Java基础12-特殊文件和日志技术
将Logback框架的核心配置文件logback.xml直接拷贝到src目录下(必须是src下),logback.xml如下:注意改一下路径,改到自己的项目目录下的某个地方。有一个info.txt文件,里面包含键值对:小明=12,小花=18,小罗=19,小天=20,判断里面是否有小罗,如果有,将值改为18。创建Logback框架提供的Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息。作用1:把程序运行的信息,记录到文件中,方便程序员定位bug、并了解程序的执行情况等。
2024-10-16 17:30:35
910
原创 Java基础11-文件(File) 和输入输出( Io) 流
UTF-8是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区: 1个字节,2个字节,3个字节,4个字节。finally代码区的特点:无论try中的程序是正常执行了,还是出现了异常,最后都一定会执行finally区,除非JVM终止。常用,直接在try后面的小括号里写入要释放释放的资源,该资源使用完毕后,会自动调用其close()方法,完成对资源的释放!可以复制任意文件:任何文件的底层都是字节,字节流做复制,是一字不漏的转移完全部字节,只要复制后的文件格式一致就没问题!
2024-10-16 17:23:09
795
原创 Java基础10-JDK8新特性Stream
优势::Stream流大量的结合了Lambda的语法风格来编程,提供了一种更加强大,更加简单的方式操作集合或者数组中的数据,代码更简洁,可读性更好。定义:也叫Stream流,是Jdk8开始新增 的一套API (java.util.stream.*),可以用于操作集合或者数组的数据。定义:通过Stream流提供的中间方法,来处理对应的集合,中间方法是Stream流中最核心的方法,可以继续使用(支持链式编程)。定义:通过终结方法,来终结Stream流,不会返回新Stream了,没法继续使用流了。
2024-10-16 17:10:30
757
原创 Java基础08-集合框架—单列集合
TreeSet集合存储自定义类型的对象时,必须指定排序规则,支持如下两种方式来指定比较规则。方式一:让自定义的类( 如学生类)实现Comparable接口,重写里面的compareTo方法来指定比较规则。方式二:通过调用TreeSet集合有参数构造器,可以设置Comparator对象( 比较器对象,用于指定比较规则。//学生类(通过实现 Comparable 接口来自定义规则)//重写compareTo方法实现安装规则排序@Override。
2024-10-16 17:07:15
892
原创 Java基础07-零散知识汇总(Lambda、异常)
Java无法为这个世界上全部的问题都提供异常类来代表,如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了。自定义异常分类有两种:定义一个异常类继承RuntimeException.重写构造器。通过throw new异常类(xxx)来创建异常对象并抛出!编译阶段不报错,提醒不强烈,运行时才可能出现!//自定义异常类//继承运行时异常RuntimeException//重写构造器//将信息传入到父类中:就是RuntimeException。
2024-10-16 16:50:26
1047
原创 Java基础06-常用API
六、常用APIAPI :应用程序编程接口1、Object作用:Object类是Java中所有类的祖宗类,因此,Java中所有类的对象都可以直接使用0bject类中提供的一些方法。方法名说明toString()返回字符串数据equals(Object o)比较两个对象地址是否相同clone( )克隆对象1.1 toString() 方法作用:返回字符串对象,如果要返回对象的数据,那么就重写toString() 方法。//测试类publi
2024-10-16 16:44:45
978
原创 Java基础05-面向对象进阶
使用场景:当一个类的内部,包含了一个完整的事物,且这个事物没有必要单独设计时,就可以把这个事物设计成内部类。内部类是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块) ,如果一个类定义在另一个类的内部,这个类就是内部类。定义:定义类、接口、方法时,同时声明了一个或者多个类型变量(如: ) ,称为泛型类、泛型接口,泛型方法、它们统称为泛型。定义:就是一种特殊的局部内部类,所谓匿名:指的是程序员不需要为这个类声明名字。定义:定义在类中的方法、代码块,构造器等中的类,叫局部内部类。
2024-10-16 16:38:10
881
原创 Java基础04-面向对象高级
工具类:工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是给开发人员共同使用的。使用场景:当有多个实现类时,万一新增功能,就要去实现类中把所以抽象方法都实现,比较麻烦。通过抽象类和抽象方法,复用相同的代码,只改变自己像要改变的内容,这里的正文就是要改变的。1、常常用来写工具类,主要是方面,不用创建对象,就可以直接调用方法,而且节约了内存,使用场景:任务管理器,任务管理器窗口只能打开一个,而且始终是那一个。使用场景:任务管理器,任务管理器窗口只能打开一个,而且始终是那一个。
2024-10-16 16:36:34
704
原创 Java基础03-应用程序编程接口(API)
2、以“ ” 形式创建的字符串对象,会保存到字符串常量池,且相同的内容自会存储一份(多个内容相同的字符串,就会引用第一个字符串地址,保证字符串内容相同);为什么不直接用数组呢:因为数组的长度是固定的,没法修改,删除里面的某个数据后,还有把后面的数据向前移动,比较麻烦。(表示相同内容的字符串,之间的地址是不同的)什么是包:包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护。集合的特点:大小可以任意改变,删除中间的数据,集合也会自动向前移动。
2024-10-16 16:30:53
767
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人