javaWeb
文章平均质量分 87
Web从一个简单的信息共享平台演变为一个复杂的生态系统,极大地改变了人们的生活和工作方式。Java的“一次编写,到处运行”特性,使得Java Web应用在企业级开发中非常流行
chxii
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mybatis-spring 浅析
MyBatis-Spring是MyBatis官方开发的集成模块,用于将MyBatis无缝接入Spring框架。主要功能包括:1)通过SqlSessionFactoryBean将SqlSessionFactory纳入Spring容器管理;2)自动为Mapper接口生成代理实现并注册为Spring Bean;3)通过SqlSessionTemplate实现与Spring事务的无缝集成;4)将MyBatis异常转换为Spring的DataAccessException体系。该模块作为MyBatis与Spring之原创 2025-11-23 19:04:16 · 734 阅读 · 0 评论 -
Spring Boot 集成 mybatis 浅析
SpringBoot是对Spring框架的封装增强,通过Starter依赖管理和自动配置机制简化开发。它提供spring-boot-starter-*依赖包自动管理兼容版本,利用@EnableAutoConfiguration基于条件注解实现零配置启动。核心仍为Spring Framework,默认集成SpringMVC但支持多种应用类型。自动配置通过扫描classpath组件实现,开发者也可手动集成非官方模块。相比传统Spring,SpringBoot显著减少了配置工作量,使开发者能快速构建生产级应用。原创 2025-11-23 19:00:13 · 767 阅读 · 2 评论 -
MyBatis-Plus
MyBatis-Plus 是 MyBatis 的“超级增强版”,在保留其灵活性的同时,大幅提升了开发效率。对于CRUD 密集型项目,MP 几乎是标配。它不是 ORM(如 Hibernate),复杂业务仍需结合原生 MyBatis 能力。原创 2025-11-21 17:55:26 · 648 阅读 · 0 评论 -
PageHelper
MyBatis 允许通过实现Executor(update、query、flushStatements、commit、rollback 等)PageHelper 主要拦截的是Executor 的 query 方法。MyBatis 分页插件(如 PageHelper)通过拦截器 + ThreadLocal + SQL 重写的方式,实现了对任意查询的透明分页支持。其核心优势在于无需修改 Mapper 接口和 SQL,即可获得分页能力,极大提升了开发效率。原创 2025-11-21 17:48:40 · 682 阅读 · 0 评论 -
在 MyBatis 中开启 SQL 日志
项目原生 MyBatis日志框架需手动引入(Log4j2/Logback)自动使用 SLF4J + Logback配置方式编写log4j2.xml或在中设置关键配置项<Logger name="mapper包路径" level="debug">是否需要额外代码否(依赖自动探测)否推荐场景独立工具、非 Spring 项目Web 应用、微服务将 Mapper 接口所在包的日志级别设为DEBUG。原创 2025-11-20 20:41:03 · 501 阅读 · 0 评论 -
在 Spring Boot 中,MyBatis 的“自动提交”行为解析
问题答案Spring Boot 中 MyBatis 为何“自动提交”?因为 Spring 在无事务方法中,为每次 Mapper 调用创建独立事务并立即提交。源码关键类控制提交行为的方式使用注解,而非 MyBatis 配置是否应关闭“自动提交”?不需要关闭,这是 Spring 的合理默认行为;需事务时加即可💡最佳实践简单查询/单条写入:无需,享受自动提交。多操作一致性要求:必须加。永远不要在 Service 层手动调用!原创 2025-11-20 20:27:00 · 815 阅读 · 0 评论 -
原生使用 MyBatis 详解
⚠️ 接口的全限定名必须与 XML 中的namespace完全一致!try {System.out.println("插入成功,ID: " + user.getId());接口 + XML 映射,类型安全且代码清晰。原创 2025-11-19 13:42:38 · 865 阅读 · 0 评论 -
MyBatis 模糊匹配的 4 种主流实现方式
实现方式安全性可读性跨库兼容推荐度适用场景Java 拼接 +#{}✅ 高✅ 高✅ 通用⭐⭐⭐⭐通用首选SQLCONCAT()#{}✅ 高✅ 中⚠️ 需适配⭐⭐⭐数据库固定项目${}拼接❌ 极低⚠️ 低✅ 通用⚫ 禁止<bind>标签✅ 高✅ 高✅ 通用⭐⭐⭐⭐XML 复杂查询。原创 2025-11-19 09:00:00 · 1454 阅读 · 0 评论 -
MyBatis 注解(Annotation) 方式来实现 CRUD 操作
MyBatis注解方式提供了一种简洁的CRUD实现方案,适用于简单的数据库操作。核心注解包括@Select、@Insert、@Update、@Delete等,可直接在Mapper接口方法上编写SQL,提高开发效率。虽然注解方式代码紧凑,但不支持动态SQL标签和复杂结果映射,难以处理多表关联查询。相比之下,XML方式在动态SQL、结果映射和SQL复用方面更具优势,更适合企业级应用。建议简单场景使用注解,复杂场景仍采用XML映射文件,两者结合使用更佳。原创 2025-11-18 16:10:29 · 829 阅读 · 0 评论 -
Java JDBC SQL CRUD操作和获取自增主键
上接 Java JDBC SQL注入防御 与 连接池详解。原创 2025-11-18 15:39:08 · 782 阅读 · 0 评论 -
MyBatis 的浅析
MyBatis 的本质是一个 “SQL 执行引擎 + 对象映射器”。解析 SQL 配置→ 构建动态生成 SQL→ 通过 OGNL 和 SqlNode 树安全绑定参数→#{}自动映射结果→ ResultSet → Java 对象(支持嵌套)管理资源与缓存→ 连接、Statement、一级/二级缓存提供扩展点→ 插件、自定义 TypeHandler、ObjectFactory 等。原创 2025-11-17 20:50:40 · 2672 阅读 · 0 评论 -
MyBatis 动态 SQL,通过 XML (如 <if>、<foreach> 等)实现灵活的 SQL 拼接。
where><set>场景推荐写法动态 WHERE用<where><if>动态 UPDATE用<set><if>IN 查询 / 批量操作用<foreach>多条件互斥用<choose>SQL 复用用<sql><include>模糊查询用<bind>预处理,避免 SQL 注入🔒安全提示:永远不要在动态 SQL 中使用${}拼接用户输入!应使用#{}参数化。<if>:基础条件<choose>:多选一<where><set>:智能包裹<foreach>:循环利器(IN、批量)原创 2025-11-17 20:44:05 · 821 阅读 · 0 评论 -
MyBatis 的 新增、修改、删除 操作
Mapper// 查询// 新增// 普通插入// 选择性插入(非空字段)// 修改// 全量更新// 选择性更新// 删除// 批量删除操作XML 标签关键技巧新增<insert>修改<update><set><if>实现选择性更新删除<delete><foreach>支持批量安全使用选择性操作避免 null 覆盖可靠结合保证数据一致性。原创 2025-11-15 19:53:58 · 446 阅读 · 0 评论 -
MyBatis 的三种常用映射关系
本文介绍了使用MyBatis XML映射文件实现三种数据库关系映射的方法。首先配置XML映射文件路径,创建测试数据库表(用户、身份证、订单、角色等)。详细讲解了一对一(association)、一对多(collection)和多对多(同样使用collection)的映射实现方式,包括实体类定义、Mapper接口编写和XML映射配置要点。特别强调了列别名的重要性以避免字段冲突,并提供了测试验证方法。最后总结了不同关系类型对应的MyBatis标签及其关键属性,指出主键映射对于对象去重和缓存的重要性。原创 2025-11-15 19:49:18 · 900 阅读 · 0 评论 -
在 VS Code 中用 MyBatis 操作数据库的 Spring Boot 示例
构建一个,集成 MyBatis,通过或 JUnit 测试来验证 MyBatis 项目代码。原创 2025-11-14 15:33:54 · 532 阅读 · 0 评论 -
Java JDBC SQL注入防御 与 连接池详解
JDBC是Java操作关系型数据库的标准API,本质是一套由数据库厂商实现的接口规范。其核心工作流程包括加载驱动、建立连接、执行SQL、处理结果和释放资源。文章详细介绍了JDBC核心组件(DriverManager、Connection、Statement、ResultSet)及基本使用流程,分析了JDBC4.0+的自动加载机制。特别阐述了SQL注入原理及使用PreparedStatement的防范措施,并对比了传统JDBC连接与连接池方案的优劣。最后重点推荐了HikariCP和Druid两大主流连接池原创 2025-11-14 14:48:21 · 1143 阅读 · 0 评论 -
spring boot 服务端渲染 thymeleaf(下)
Thymeleaf模板引擎使用指南摘要:本文介绍了Thymeleaf模板引擎的核心用法,包括基本工作原理(服务端渲染)、常用表达式(${...},*{...}等)和关键属性(th:text、th:each等)。重点讲解了表单处理、校验错误显示、模板片段复用以及JavaScript内联数据等实用功能。文章包含一个完整的用户列表示例,并提供了开发技巧(如关闭缓存、调试方法)和常见问题解答(静态HTML共存问题)。Thymeleaf以"增强HTML"为核心理念,既能作为静态HTML预览,又能实原创 2025-11-10 10:45:00 · 736 阅读 · 0 评论 -
spring boot 服务端渲染 thymeleaf(中)
/ 构造函数、getter/setter 省略。原创 2025-11-09 10:30:00 · 242 阅读 · 0 评论 -
spring boot 服务端渲染 thymeleaf(上)
SpringBoot 3.x不再支持JSP,推荐使用Thymeleaf作为替代方案。Thymeleaf是SpringBoot官方首选的模板引擎,具有解耦设计、现代语法等优势。集成步骤包括添加依赖、创建Controller返回视图、编写模板文件(存放在templates目录)。与静态HTML(存放在static目录)不同,Thymeleaf模板必须通过Controller访问,支持动态内容渲染。项目应遵循标准目录结构:templates存放模板文件,static存放静态资源。这种设计符合SpringBoot简原创 2025-11-09 10:00:00 · 522 阅读 · 0 评论 -
javaweb Servlet
摘要:Servlet是用于扩展Web服务器功能的Java类,由容器管理其生命周期(初始化、服务、销毁)。Servlet支持三种作用域(Application、Session、Request)实现数据共享。Filter作为Servlet规范中的拦截器,用于请求预处理/后处理。Listener则监听应用、会话和请求的各种事件(如启动/销毁、属性变更等)。三者协同工作,Filter处理请求流,Listener监控状态变化,Servlet处理核心业务逻辑,共同构建完整的Java Web应用架构。原创 2025-11-08 12:00:00 · 1982 阅读 · 0 评论 -
Spring Boot 响应给客户端的常见返回类型
返回类型适用场景是否需备注String文本 / 视图名下自动text/plain或text/html注意区分视图与文本JSON API是最常用精细控制响应是可自定义推荐用于标准 REST APIString(配合HTML 页面否text/html需模板引擎Resource文件下载是如小文件大文件/流是自定义避免内存溢出异步处理是同 T 类型提升并发void无内容响应否无常用于 DELETE。原创 2025-11-08 08:00:00 · 899 阅读 · 0 评论 -
在 IntelliJ IDEA 中创建一个包含 JSP 和 Servlet6.0 的 Maven Web 项目,并配置 Tomcat 进行调试
本文详细介绍了在IntelliJ IDEA中创建Maven Web项目的完整流程。首先需配置Maven环境,然后通过maven-archetype-webapp模板创建项目,手动完善项目目录结构。重点说明了pom.xml的配置方法,包括添加Servlet API依赖和打包设置。文章还演示了Servlet和JSP的编写步骤,以及如何在web.xml中配置Servlet映射。最后讲解了如何配置Tomcat服务器进行项目调试运行,包括部署设置和访问测试。整个过程涵盖了从项目创建到最终运行的完整开发流程。原创 2025-11-07 08:45:00 · 2385 阅读 · 6 评论 -
springboot 解析日期类型
SpringBoot接收日期数据的常见方式:1. 通过@RequestParam/@PathVariable接收时,使用@DateTimeFormat指定格式(如yyyy-MM-dd);2. 通过@RequestBody接收JSON时,实体类字段上使用@JsonFormat定义格式;3. 接收时间戳(毫秒)时,推荐使用Instant类型自动解析(无需配置),可转换为LocalDateTime处理时区问题。最佳实践是优先使用Instant类型处理时间戳,避免时区混乱。原创 2025-11-06 13:35:11 · 465 阅读 · 0 评论 -
spring boot 获取HTTP 请求参数
本文总结了Spring中获取HTTP请求参数的5种方式:路径参数(@PathVariable)、查询参数(@RequestParam)、请求体(@RequestBody)、表单参数和请求头(@RequestHeader)。详细介绍了每种参数的使用场景、注解配置和注意事项,特别说明了Map接收参数的场景和限制。文章还比较了Map和POJO两种接收方式的适用情况,强调要根据参数结构是否固定、是否需要校验等实际需求选择合适的方式。最后提供了完整示例代码,帮助开发者灵活处理各种请求参数场景。原创 2025-11-06 11:45:00 · 2261 阅读 · 0 评论 -
Spring Boot 中原始接收请求参数
Spring Boot 允许你在 Controller 方法中直接注入。查询参数(Query String)和表单参数(POST 表单)!对象,然后像写原生 Servlet 一样获取所有原始数据。即可,Spring 底层已帮你解析。✅ 和查询参数一样,用。原创 2025-11-05 16:43:12 · 1370 阅读 · 0 评论 -
spring boot 请求分发器
Bean// 添加自定义 converter。原创 2025-11-05 16:28:55 · 969 阅读 · 0 评论 -
Liberica JDK介绍
免费 + 兼容 + 高性能 + Spring 官方背书 + 原生镜像首选”如果你开发Spring Boot 应用,尤其是计划使用GraalVM 原生编译(native image)Liberica 是目前最优解。如果你只是普通 Java 开发,它也提供了开箱即用、稳定可靠、下载方便的体验,特别适合国内开发者。原创 2025-11-04 14:12:19 · 1071 阅读 · 0 评论 -
Spring Boot 中,内嵌的 Servlet 容器(也称为嵌入式 Web 服务器)
注意:Jetty 和 Undertow 不支持 JSP(Tomcat 支持,但 Spring Boot 不推荐使用 JSP)。注意:这些容器都实现了 Servlet 3.1+ 规范(Spring Boot 2.x 基于 Servlet 3.1)。注:以下为典型压测场景(HTTP GET,JSON 返回,4 核 8G 机器,Spring Boot 3.x)已经使用 Jakarta Servlet API,无需额外配置。方式与 2.x 类似,但依赖版本自动适配 Jakarta EE。(在纯 I/O 场景)。原创 2025-11-04 13:14:53 · 922 阅读 · 0 评论 -
vscode配置maven的jakarta项目直接运用jetty插件运行
自动编译和部署Web应用支持热部署(代码修改后自动更新)提供轻量级的Web服务器环境。原创 2025-11-03 20:19:30 · 468 阅读 · 0 评论 -
maven生命周期
三套独立的生命周期cleandefaultsite。阶段顺序执行:执行会自动依次执行default生命周期中从validate到install的所有阶段。核心阶段compiletestpackageinstalldeploy是最常用的。约定优于配置:Maven 为每个阶段预设了默认绑定的插件目标,遵循标准目录结构即可开箱即用。灵活性:可以通过pom.xml自定义插件配置,甚至将插件目标绑定到不同的阶段。原创 2025-11-03 16:37:34 · 958 阅读 · 0 评论 -
Apache Tomcat 介绍
Apache Tomcat是一个开源的Servlet容器和Web服务器,实现了Java Servlet和JSP规范。核心功能包括处理HTTP请求、提供静态资源访问和支持Jakarta EE Web Profile。主要特点为轻量级、配置简单且广泛用于Java Web开发。文章详细介绍了Tomcat的安装、启动方法及Web应用部署方式,包括直接复制WAR包和使用Manager App两种途径。同时对比了Tomcat 11、10和9等主要版本特性,特别指出从Tomcat 10开始包名从javax.*变更原创 2025-11-02 18:55:43 · 1247 阅读 · 0 评论 -
Maven 详解(下)
parent><modules>这两个标签共同构成了 Maven 多模块项目的骨架。理解它们的作用、位置和工作机制是掌握模块化开发的关键。<modules>: 告诉 Maven:“我这个项目(父工程)是由哪些子模块组成的”。它实现了。pom.xml。pom.xml<modules><modules>pom.xmlpom.xml<modules><modules><parent><modules>mvn<parent>: 告诉 Maven:“我的这个子模块要继承哪个父 POM 的配置”。它实现了。原创 2025-11-02 18:06:03 · 1122 阅读 · 0 评论 -
Maven 详解(中)
结合 Spring Boot 的 BOM 模式,极大地简化了复杂 Java 项目的依赖管理,让开发者能够更专注于业务开发。这是 Maven 中最容易混淆但也最重要的概念之一。它决定了依赖在项目生命周期中的可用性和传递性。并不是一个简单的“添加依赖”的地方。中被实际引用时,Maven 才会下载并使用它。的威力发挥到了极致,通过其官方提供的。通过这种方式,Maven 的。Spring Boot 将。来实现无缝的依赖管理。让我们回顾您之前提供的。你可以把它想象成一个。原创 2025-11-02 17:30:29 · 860 阅读 · 0 评论 -
Maven 详解(上)
Maven 为项目定义了一套清晰、标准化的目录布局。只要你的项目遵循这个结构,Maven 就能自动识别源代码、资源文件、测试代码等,并在正确的阶段进行处理,无需你进行额外的配置。是使用 Spring Initializr 生成的 Spring Boot 项目的标准模板。它利用了 Maven 的核心特性,特别是。定义了项目的构建过程,主要是插件的配置。以下是 Maven 项目的。模式来简化依赖管理。原创 2025-11-02 17:02:29 · 1193 阅读 · 0 评论 -
VS Code 中创建和开发 Spring Boot 项目
vscode 对于java 代码分析不如 IntelliJ IDEA 或 Eclipse 成熟. 对于大多数 Java/Spring Boot 开发,配合 Extension Pack for Java, Spring Boot Extension Pack 等插件,VS Code 完全够用。VS Code 是一个轻量级编辑器,启动速度快,内存占用远低于eclipse, IntelliJ IDEA。IntelliJ IDEA 的社区版本 虽然免费,但是功能阉割严重.配置maven. 参考。原创 2025-08-23 17:46:59 · 1981 阅读 · 4 评论 -
JavaScript 数组的本质
特性是否连续语言规范层面❌ 不是连续的(本质是对象)实现层面(如 V8)✅ 可能优化为连续内存(仅限密集数组)稀疏数组❌ 不连续,使用哈希表实现。原创 2025-07-24 11:34:22 · 197 阅读 · 0 评论 -
8.4 Java 原生 TCP Socket 实现 HTTP 请求解析和请求分发
try {");});try {});// 解析请求行// 解析请求头while (!// 读取请求体(仅处理 POST)// 构建请求和响应对象// 路由分发= null) {} else {原创 2025-07-22 17:38:18 · 854 阅读 · 0 评论 -
Vue简介
起源与早期发展诞生:由 尤雨溪 于2014年发布,旨在提供比 Angular 和 React 更轻量、易用的框架。早期特性:借鉴Angular的指令与React的虚拟DOM,强调数据驱动视图和组件化开发。快速成长阶段版本迭代:Vue 2.x(2016年)优化性能并支持服务端渲染,成为成熟框架。生态扩展:涌现 Vue Router 、 Vuex 等工具,以及 Element UI 等组件库。企业采用:中小型项目广泛使用,部分大型企业试点引入。成熟阶段。原创 2025-07-21 20:52:11 · 1089 阅读 · 0 评论 -
HTTP 的发展
这些年来,网页愈渐变得的复杂,甚至演变成了独有的应用,可见媒体的播放量,增进交互的脚本大小也增加了许多:更多的数据通过 HTTP 请求被传输。与此同时,人们对一个加密传输层的需求也愈发高涨:因为 Web 最早几乎是一个学术网络,相对信任度很高,但如今不得不面对一个险恶的丛林:广告客户、随机的个人或者犯罪分子争相劫取个人信息,将信息占为己有,甚至改动将要被传输的数据。随着 HTTP/2.的发布,就像先前的 HTTP/1.x 一样,HTTP 没有停止进化,HTTP 的扩展性依然被用来添加新的功能。转载 2025-07-21 08:45:00 · 78 阅读 · 0 评论 -
javaweb 前言
1987年9月,中国从北京向德国发送了第一封电子邮件,这被视为中国与互联网的第一次接触。中国正式接入国际互联网的时间是1994年4月20日。当天,北京中关村地区教育与科研示范网络(NCFC)通过美国Sprint公司接入国际互联网的64K专线正式开通,实现了与Internet的全功能连接。这标志着中国成为国际上承认的真正意义上拥有全功能Internet接入的国家之一。这部分内容,我们在讲解go语言,了解web原生交互时候,已经发布过了。这部分内容,会在vue,和javaWeb 专栏。原创 2025-05-29 11:27:26 · 657 阅读 · 0 评论
分享