
Web开发
文章平均质量分 90
六月五日
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Maven高级 - 继承
Maven继承描述的是两个工程之间的配置复用关系。父工程定义通用的配置,例如依赖、插件等,子工程通过声明继承关系,能够自动获取这些配置。就好比在一个家族中,父亲拥有一些财产和技能,儿子可以继承这些财产和技能一样。例如,父工程配置了Lombok依赖,所有继承它的子工程无需重复配置,就可以直接使用Lombok注解,大大减少了配置的工作量。版本锁定是指在父工程中集中声明所有可能用到的依赖版本,子模块在引入依赖时无需指定版本,自动继承父工程的版本。原创 2025-08-10 17:20:01 · 870 阅读 · 0 评论 -
过滤器:深入理解其执行逻辑与应用
A:除了通过类名自然排序外,还可以实现Ordered接口来定义过滤器的顺序。在过滤器类中实现Ordered接口,并实现getOrder方法,通过返回的整数值来确定过滤器的执行顺序,值越小优先级越高。@Override// 过滤器逻辑@Overridereturn 1;// 优先级较高另外,在Spring Boot项目中,也可以使用@Order注解来指定过滤器的顺序,用法与实现Ordered接口类似,更加简洁直观。执行流程。原创 2025-08-10 17:19:32 · 943 阅读 · 0 评论 -
过滤器:Filter的JWT令牌校验
过滤器是传统Java Web开发的三大组件之一,英文名为“filter”。另外两大组件分别是servlet(主要用于动态Web资源开发)和listener(监听器)。过滤器的主要作用是拦截前端请求,借此实现一系列通用操作,例如登录校验、统一编码处理以及敏感字符处理等。整个拦截流程如下:请求首先到达过滤器,经过过滤器的处理后再到达目标资源,目标资源处理完成后,响应又会经过过滤器,最后返回给客户端。这种机制的优势在于,避免了在每个功能接口中重复编写诸如登录校验这类通用逻辑,极大地提高了代码的复用性。原创 2025-08-10 17:19:04 · 548 阅读 · 0 评论 -
Spring拦截器
preHandle方法实现校验:拦截器主要通过preHandle方法来实现令牌校验的逻辑,根据校验结果返回true放行请求,返回false则拦截请求。配置类注册:需要通过实现接口的配置类来注册拦截器,并通过指定拦截路径,通过指定排除路径,以确保拦截器在合适的范围内生效。Spring项目优势:相较于过滤器,拦截器在Spring项目中更具优势,它能够更好地与Spring生态集成,支持依赖注入,实现更为精细化的拦截控制。原创 2025-08-10 17:18:36 · 751 阅读 · 0 评论 -
Spring拦截器执行流程
路径配置:务必准确理解/**用于拦截所有路径(包括多级路径),而/*仅能拦截一级路径,避免在配置中用错,导致拦截范围不准确。执行顺序:牢记过滤器先于拦截器执行,并且拦截器自身方法遵循preHandle→postHandle→的顺序执行,清晰把握整个执行流程,有助于正确编写和调试相关逻辑。技术选型:在Spring项目中,优先考虑使用拦截器实现令牌校验等功能。同时,针对同一功能,只保留一种实现方式,避免过滤器和拦截器的重复使用。原创 2025-08-10 17:18:08 · 987 阅读 · 0 评论 -
Maven聚合
在现代软件开发中,随着项目规模的不断扩大,将项目拆分成多个模块变得越来越必要。想象一下,一个大型的软件项目,如果所有的代码都堆在一起,那维护和开发的难度简直难以想象。就好比把所有的家具、电器、杂物都堆在一个房间里,找东西或者使用起来都会非常麻烦。所以,把项目拆分成模块,比如将实体类、工具类、业务逻辑进行分离,这样不同的开发团队成员可以专注于自己负责的模块,大大提高了团队协作的效率,而且代码复用也变得更加容易。原创 2025-08-10 17:17:45 · 628 阅读 · 0 评论 -
JWT的登录认证实现
在用户成功输入用户名和密码并看到“登录成功”提示的那一刻,系统的安全之旅才刚刚启程。对于系统而言,真正关键的是如何确保在用户后续的所有操作(如查看员工列表、修改个人信息等)中,能够准确识别“此用户即为刚才成功登录的用户”。JWT令牌就是解决这一问题的关键所在。它是在登录成功后生成的一段特殊字符串,宛如用户在系统内后续请求的“电子通行证”。本文将详细讲解在登录成功后,如何生成有效的JWT令牌,从开发专用工具类,到整合到登录接口,再到进行全面细致的测试,助力你的系统达成“一次登录,安全访问”的目标。原创 2025-08-10 17:17:20 · 815 阅读 · 0 评论 -
Maven分模块设计
分模块设计指的是把一个大型项目依据功能模块或者架构层级,分割成若干个独立的子模块。每个子模块都可以独立进行开发、测试以及打包,模块之间通过Maven依赖建立联系。例如,一个电商系统可以拆分成公共组件模块(mall - common)、商品模块(mall - goods)、订单模块(mall - order)以及用户模块(mall - user)。就像建造一座大型商业综合体,将其划分为不同功能的区域,每个区域都能独立运作,但又相互关联。原创 2025-08-10 17:16:54 · 930 阅读 · 0 评论 -
Spring拦截器:原理、应用及与过滤器的区别
拦截器(Interceptor)本质上是一种能够动态拦截控制器方法调用的机制。借助这一机制,我们可以在目标方法执行前、执行后,甚至在视图渲染完成之后,灵活地插入自定义的逻辑代码。这种特性使得拦截器在实现登录校验、权限控制、日志记录等通用功能方面表现得游刃有余。要成功实现拦截器,必须依次完成“定义拦截器”和“注册拦截器”这两个关键步骤,二者缺一不可。拦截器是Spring框架提供的一种动态拦截方法调用的机制,其主要作用是拦截前端请求,并在指定方法调用的前后,根据业务需求执行预设代码。原创 2025-08-10 17:16:39 · 898 阅读 · 0 评论 -
基于Filter的JWT令牌登录校验
/ 在filter包下创建TokenFilter类@WebFilter(urlPatterns = "/*") // 拦截所有请求@Slf4jpublic class TokenFilter implements Filter { // 实现Filter接口@Override// 核心校验逻辑在这里实现// 启动类需添加@ServletComponentScan,启用过滤器扫描流程严格性:必须严格按照“获取路径→判断登录→获取token。原创 2025-08-10 17:16:23 · 772 阅读 · 0 评论 -
Maven 私服
在软件开发领域,大型项目往往结构复杂、代码量大。分模块开发就像是将一座庞大的建筑拆解为多个独立的小单元,每个单元负责特定的功能。例如在项目中,拆分为实体类模块、工具类模块以及业务模块等。这种开发方式极大地提升了团队协作效率,不同团队可以并行开发不同模块,同时也提高了代码复用性,比如工具类模块可以在多个业务场景中被复用。然而,当我们尝试实现跨团队的模块复用,就会遇到难题。假设 A 团队开发了一个实用的工具类模块,如 utils,B 团队希望复用它。原创 2025-08-10 17:15:53 · 1006 阅读 · 0 评论 -
Docker容器通信:从默认网络到自定义网络
执行docker network create itheima命令创建名为itheima的网络,然后通过docker network ls确认网络已成功创建。自定义网络有个特点,它会自动选择未被占用的IP段。比如默认bridge网络使用了172.17.x.x网段,自定义网络可能就会使用172.18.x.x网段。方式一:创建容器时指定网络(推荐)启动MySQL容器时,直接使用–network itheima参数将其加入itheima网络,命令如下:方式二:给已运行的容器动态加入网络。原创 2025-08-10 17:15:41 · 518 阅读 · 0 评论 -
轻松驾驭多容器项目部署:Docker Compose 实战指南
Docker Compose 是一款专门用于定义和运行多容器 Docker 应用的强大工具。它通过一个文件,就能够描述所有容器的详细配置。你只需要执行一条简单的命令,就可以完成整个多容器项目的部署,大大简化了操作流程。在文件中,通过depends_on可以明确指定容器之间的依赖关系。services:app:- mysql # app容器在mysql容器之后启动- redis # 可指定多个依赖不过需要注意的是,depends_on。原创 2025-08-10 17:15:14 · 644 阅读 · 0 评论 -
掌握Docker自定义镜像
Dockerfile是一个纯文本文件,里面罗列着一系列指令,每一条指令都描述了镜像构建过程中的一个具体步骤。例如安装依赖、拷贝文件、配置环境等操作,都能通过这些指令来实现。Docker引擎会依照Dockerfile中的指令,按顺序执行,就像搭积木一样,每一层指令对应一层镜像,最终生成一个完整的镜像。通过这种方式,我们可以精确地定义镜像的每一层,从基础的操作系统,到应用所需的各种依赖,再到应用本身。原创 2025-08-04 17:08:15 · 753 阅读 · 0 评论 -
深入理解Docker数据挂载:保障容器数据持久化
匿名数据卷是Docker在容器创建时自动生成的一种“无名称数据卷”,主要用于映射容器内的关键目录,像MySQL的数据目录就常通过匿名数据卷映射。它最大的特点就是没有显式名称,而是通过随机字符串来标识,默认存储在宿主机的/var/lib/docker/volumes/[随机字符串]/_data路径下。本地目录挂载的语法为-v /宿主机绝对路径:容器内目录或./相对路径:容器内目录。例如,,这条命令将宿主机的目录映射到容器的目录。在使用Docker进行数据挂载时,要注意匿名数据卷和本地目录挂载的特点与区别。原创 2025-08-04 16:55:51 · 860 阅读 · 0 评论 -
Docker数据卷:解决容器文件管理难题
数据卷本质上是Docker所管理的“虚拟目录”,它在宿主机和容器之间搭建起了一座双向映射的桥梁,使得两者之间的文件能够实现高效交互。必须理解本质:要深入理解数据卷作为“虚拟目录”实现宿主机与容器目录映射的本质,这是掌握数据卷使用的基础。必须牢记命令:要牢记从创建到清理数据卷的一系列操作命令,特别是以及等常用命令,以及它们的使用场景和注意事项。必须掌握挂载:必须熟练掌握数据卷的挂载操作,包括挂载语法、自动创建机制以及同步验证方法,确保能够在实际应用中灵活运用数据卷解决问题。原创 2025-08-04 16:46:19 · 580 阅读 · 0 评论 -
Docker命令
镜像是Docker容器的模板,用户可以通过Dockerfile来定义镜像的内容,并通过命令构建镜像。FROM:指定基础镜像,所有镜像都基于某个基础镜像构建,例如,表示基于最新版的Ubuntu镜像构建。RUN:执行命令,用于在镜像构建过程中安装软件包、配置环境等。例如,在镜像构建时更新软件源并安装。CMD:设置容器启动时执行的命令。一个Dockerfile只能有一个CMD指令,若定义多个,只有最后一个会生效。例如"],指定容器启动时运行Nginx并以非守护进程模式运行。原创 2025-08-04 16:36:30 · 967 阅读 · 0 评论 -
Docker核心命令:docker run
docker run。原创 2025-08-04 12:20:57 · 989 阅读 · 0 评论 -
探索Docker:开启高效部署新时代
官方定义:Docker是一款用于快速构建、运行和管理应用的工具。通俗解释:可以把Docker想象成一个“标准化集装箱”,它将应用程序以及该程序运行所需的所有依赖,如各种库文件、配置信息等,全部打包在一起。这样一来,无论将这个“集装箱”放到哪台服务器上,只要服务器安装了Docker,就可以像“即插即用”的设备一样,轻松运行其中的应用程序。与虚拟机的区别:和虚拟机相比,Docker更为轻量。原创 2025-08-04 12:13:31 · 1053 阅读 · 0 评论 -
简述项目部署
在本地开发环境中,我们精心调试通过的前后端项目,就如同精心雕琢的艺术品。然而,要让其他用户能够通过网络访问,就必须跨越一道关键的桥梁——“部署”。部署,简单来说,就是将项目放置到服务器上,使其成为一个可供公众访问的服务。原创 2025-08-04 12:02:37 · 827 阅读 · 0 评论 -
Linux 系统中 Nginx 的安装与应用
在前端项目开发完成后,如何将其部署到服务器上供他人访问,成为了关键问题。Nginx 作为一款高性能的 Web 服务器,便是解决这一问题的理想答案。它不仅能够高效地托管静态资源,还具备反向代理、负载均衡等强大功能,是前端项目部署的首选工具。本文将详细讲解在 Linux 系统上从源码编译安装 Nginx 的完整流程,从下载安装包开始,一直到成功访问 Nginx 欢迎页面,每个步骤都配备了实战命令,确保你能够一次搞定 Nginx 的安装。原创 2025-08-04 11:41:56 · 818 阅读 · 0 评论 -
在 Linux 上安装 MySQL
许多 Linux 系统,如 CentOS,通常会预装 MariaDB(它是 MySQL 的一个分支)。如果直接安装官方 MySQL,会与预装的 MariaDB 产生版本冲突,导致安装失败。所以,为了成功安装目标版本的 MySQL,必须先卸载系统自带的 MySQL/MariaDB。原创 2025-08-04 11:28:11 · 775 阅读 · 0 评论 -
项目部署前的Linux基础与CentOS安装指南
在项目开发完成后,将其成功部署到服务器上运行是关键的一环。你知道吗?全球70%以上的服务器都在使用Linux系统。如果不懂Linux,项目部署就如同“空中楼阁”,难以落地实施。本文专为准备进行项目部署的朋友们量身打造,从Linux的基础知识讲起,到CentOS系统的安装,带你一步步完成从0到1的服务器环境搭建。无论你是前端开发者、后端开发者,还是刚刚想要学习服务器部署的新手,都无需担心,即使没有Linux基础,也能轻松跟上节奏。原创 2025-08-04 11:19:21 · 443 阅读 · 0 评论 -
Linux 软件安装
在 Linux 服务器上部署项目时,JDK、MySQL、Nginx 等软件是必不可少的基础。然而,面对各种类型的安装包,你或许曾感到迷茫:“这个.tar.gz 和.rpm 到底有什么不同?”“环境变量究竟要配置到哪个文件中?别担心,本文将带你系统地了解 Linux 软件的四种安装方式,并通过 JDK 安装的实战案例,让你掌握从上传安装包到验证安装成功的完整流程,从此告别“软件安装难”的困扰。原创 2025-08-04 11:17:03 · 746 阅读 · 0 评论 -
掌握Linux文本编辑与查找
重点掌握:要重点掌握vim编辑器三种模式的切换,并且熟记wq(保存)、q!(强制退出)、i(插入)、dd(删除)、u(撤销)等常用操作指令。练习方法:建议每天使用vim编辑1个文件,可以是笔记、代码等,通过一周左右的练习,就能熟练掌握vim的基本操作。原创 2025-08-04 10:47:10 · 972 阅读 · 0 评论 -
Linux 文件管理必备:拷贝与打包压缩命令
拷贝文件:使用cp 源文件 目标的格式,即可完成文件的拷贝。拷贝目录:必须使用cp -r 源目录 目标的格式,这里的-r选项是拷贝目录的关键,千万不能忘记。同时,要注意区分拷贝(cp)和移动(mv)这两个命令的不同,避免误操作。原创 2025-08-04 10:35:39 · 706 阅读 · 0 评论 -
快速上手Linux命令行:目录与文件操作实战指南
目录操作查看目录:使用ls -al,可以详细查看目录下的所有文件及详细信息,包括隐藏文件,方便全面了解目录内容。切换目录cd命令搭配绝对路径、相对路径以及特殊符号和,让我们能够在目录结构中灵活切换。创建目录mkdir -p可轻松创建多级目录,是构建项目目录结构的好帮手。删除目录rm -rf虽然强大,但使用时需万分谨慎,避免误删重要文件。查看当前路径pwd命令时刻告知我们当前所在的目录位置,确保操作的准确性。文件操作小文件查看cat命令适用于查看小文件,配合-n选项可显示行号。大文件分页查看。原创 2025-08-04 10:24:27 · 1016 阅读 · 0 评论 -
Linux:远程连接与目录结构
SSH,即Secure Shell,是一种加密网络协议,主要用于在不安全的网络环境,比如互联网中,安全地远程登录服务器。它的重要作用在于,所有通过该协议传输的命令和数据都会被加密,就像给信息穿上了一层坚固的铠甲,有效地防止被监听或篡改,安全性相较于明文传输的Telnet协议有了质的提升。SSH协议的默认端口是22,在连接服务器时通常需要指定该端口,不过大多数远程连接工具会默认填充此端口号。原创 2025-08-04 10:09:03 · 941 阅读 · 0 评论 -
正则表达式全方位指南:格式、写法、常见使用与注意事项
正则表达式(Regular Expression),简单来说,就是一种用于匹配字符串模式的强大工具。它通过一系列特殊字符组合成特定的 “规则”,能够在文本中快速实现校验、提取、替换等操作。想象一下,你有一大段文本,需要从中找出所有符合特定格式的内容,或者检查用户输入的信息是否符合要求,正则表达式就能轻松帮你达成这些目标。它广泛应用于表单验证、日志分析、文本处理等众多场景,堪称编程中不可或缺的 “字符串处理利器”。原创 2025-08-03 23:10:40 · 664 阅读 · 0 评论 -
Vue项目中前端请求优化与实践
在Vue项目开发中,前端与后端的数据交互至关重要。然而,直接在Vue组件中基于axios发送异步请求,会出现一些问题,影响项目的可维护性和开发效率。本文将深入分析这些问题,并介绍一套完整的前端请求优化方案,同时结合部门管理列表查询的应用案例,详细阐述优化后的实现过程和注意事项。原创 2025-08-03 20:22:46 · 1081 阅读 · 0 评论 -
Vue Router嵌套路由:解决布局与展示难题
首先创建一个Layout组件,它包含侧边栏、顶部导航以及一个。这个非常关键,它是子路由组件渲染的地方。然后进行路由配置:path: '/', // 父路由路径,代表根路径component: Layout, // 父组件,即基础布局组件children: [ // 子路由数组,这里放置管理页组件的子路由配置// 子路由配置会在这里添加。原创 2025-08-03 19:29:29 · 884 阅读 · 0 评论 -
Vue Router打造动态菜单
在后台管理系统等应用中,我们常常会看到这样的场景:点击左侧的菜单,如“员工管理”“部门管理”,右侧的内容区域会自动切换为对应的页面,同时URL也随之变化,但整个页面却不会刷新。这就是动态菜单。传统的多页应用通过跳转HTML文件来实现页面的切换,然而在单页应用(SPA)中,如何在不刷新页面的情况下实现内容的切换呢?这就引出了Vue Router。它是Vue官方提供的路由工具,主要负责“监听URL的变化,并渲染出对应的组件”,是实现动态菜单的核心所在。原创 2025-08-03 19:11:42 · 681 阅读 · 0 评论 -
Element Plus 对话框与表单组件
内容灵活性:对话框的内容具有很高的灵活性,可以是任意元素,包括表格、表单等组件。这使得对话框能够满足各种不同的业务需求。原创 2025-08-03 17:51:35 · 704 阅读 · 0 评论 -
Element Plus表格与分页组件
场景:在实际开发中,我们通常需要从接口获取数据并展示,同时可能需要对部分内容进行格式化,比如将时间戳转换为日期字符串,或者根据状态码显示对应的状态文字。步骤定义响应式数据:使用ref定义响应式数据tableData,初始值为一个空数组,即。异步获取数据:在onMounted钩子函数中调用接口获取数据,并将返回的数据赋值给。例如:});自定义列内容:通过formatter属性格式化数据。原创 2025-08-03 17:16:46 · 835 阅读 · 0 评论 -
简述Element Plus
Element Plus是由饿了么团队精心研发的一款基于Vue 3的桌面端组件库。它就像是一个装满各种网页部件的“百宝箱”,面向设计师和开发者,提供了大量现成的组件,帮助我们快速搭建网页。其背景依托于饿了么这样的知名互联网企业,基于主流的Vue 3框架开发,这使得它在稳定性和更新迭代上都有可靠的保障。Element Plus面向追求“快速出活”的开发场景,尤其适用于企业级后台、管理系统等桌面端应用。它让开发者能够快速搭建出美观且功能完备的界面,满足项目对开发效率和质量的双重要求。原创 2025-08-03 16:59:17 · 942 阅读 · 0 评论 -
Vue的两种API风格
逻辑分离到不同选项:这种方式使得代码结构清晰,不同功能的代码分别放在不同的选项中,便于理解和维护。例如,数据相关的放在data选项,方法相关的放在methods选项。功能代码分散:虽然结构清晰,但随着组件功能的增加,不同选项中的代码可能会分散在不同位置,导致功能相关的代码不集中。Vue 2默认使用方式:在Vue 2中广泛使用,对于有面向对象编程基础的开发者和初学者来说,学习曲线相对平缓。组合式API将逻辑聚合在一起,大大提高了代码的复用性。原创 2025-08-03 16:12:52 · 665 阅读 · 0 评论 -
打造工程化Vue项目
在Vue项目开发中,使用脚手架工具(create - vue)是极为必要的。手动搭建项目不仅耗时费力,还容易出现配置错误,比如在处理各种依赖关系和项目基础结构搭建上,往往需要花费大量时间去摸索。而create - vue脚手架工具能够快速且规范地帮我们构建项目基础,大大提高开发效率。创建命令中,是固定格式,@3.3.4表示指定的脚手架版本号。指定版本号对于项目的稳定性和兼容性至关重要。特定版本经过了一定的测试和优化,能确保项目在开发过程中较少出现因版本变动带来的不兼容问题。原创 2025-08-03 15:31:18 · 838 阅读 · 0 评论 -
Vue工程化
在当今的前端开发领域,Vue已然成为主流框架之一。随着互联网应用的不断发展,前端项目的规模和复杂度日益增加。传统的前端开发模式在应对大型项目时,逐渐暴露出诸多局限性,例如代码结构混乱、维护成本高昂以及复用性差等问题。这些问题不仅影响项目的开发进度,还对项目的质量造成了挑战。而Vue工程化作为一种解决方案,能够帮助开发者更高效地构建、维护和扩展前端应用。本文将带领读者系统地学习Vue工程化,从基础概念到实际操作,逐步建立起完整的知识体系,助力读者在前端开发领域迈出坚实的步伐。原创 2025-08-03 14:57:28 · 820 阅读 · 0 评论 -
Spring Boot自定义Starter
依赖管理:预先定义了特定场景下所需要的全部依赖。以为例,它就包含了Tomcat、SpringMVC等相关依赖,让开发者无需逐个查找和添加。自动配置:借助AutoConfigure模块来实现Bean的自动注册以及属性绑定等重要功能。比如,在Web开发场景中,它会自动配置,极大地简化了开发流程。简单概括来说,Starter的目标就是:开发者只需引入一个依赖,就能轻松搞定所有相关配置,实现快速开发。减少重复劳动。原创 2025-08-02 18:28:41 · 847 阅读 · 0 评论 -
Spring Boot自动配置:@Conditional 注解及原理
引入组件依赖后,该组件才生效。允许开发者自定义生成器,以覆盖默认实现。可以通过配置开关来控制该组件是否启用。及其衍生注解通过“条件判断”这一机制,实现了Bean的“按需注册”,无疑是Spring Boot自动配置的核心所在。依赖引入时自动生效注解使得在引入特定依赖时,相关Bean能够自动生效,实现了与第三方库的无缝集成。允许自定义Bean覆盖默认实现注解赋予了开发者自定义Bean以覆盖默认实现的能力,避免了Bean的重复注册,增强了配置的灵活性。通过配置控制组件开关。原创 2025-08-02 17:53:35 · 975 阅读 · 0 评论