在 IntelliJ IDEA 中创建一个包含 JSP 和 Servlet6.0 的 Maven Web 项目,并配置 Tomcat 进行调试

前提条件: 配置Maven

在设置中,选择自己下载的Maven文件.并配置上.

maven下载和设置可以参考https://chxii.blog.ZEEKLOG.net/article/details/148175538?spm=1011.2415.3001.5331

第一步:创建 Maven Web 项目

  1. 打开 IntelliJ IDEA → FileNewProject
  2. 选择 Maven(左侧)
  3. 勾选 Create from archetype
  4. 在 archetype 列表中选择:
    • maven-archetype-webapp(这是标准的 Java Web 项目模板)
  5. 点击 Next
  6. 填写 GroupId、ArtifactId(例如):
    • GroupId: com.example
    • ArtifactId: mywebapp
  7. 点击 Finish
⚠️ 第一次创建可能较慢(需下载 archetype)

第二步:完善项目结构(手动补充缺失目录)

默认生成的项目可能缺少 Java 源码目录和测试目录:

  1. 在 src/main 下右键 → New → Directory → 输入 java(作为 Java 源码目录)
  2. (可选)同样创建 src/test/java 并标记为 Test Sources Root

右键 java 目录 → Mark Directory as → Sources Root

最终结构应类似:

mywebapp/ ├── src/ │ ├── main/ │ │ ├── java/ ← Java 源码(Servlet) │ │ ├── resources/ │ │ └── webapp/ ← JSP、HTML、WEB-INF │ │ ├── WEB-INF/ │ │ │ └── web.xml │ │ └── index.jsp └── pom.xml

看下项目结构

确保xml文件位置 和 webapp目录位置正确


第三步:配置 pom.xml

添加 Servlet API 依赖(注意:provided,因为 Tomcat 已提供):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>mywebapp</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- Servlet API (provided by Tomcat) --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>mywebapp</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build> </project>

第四步:编写一个简单 Servlet 和 JSP

1. 创建 Servlet(在 src/main/java/com/example/ServletDemo1.java

package com.example; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; public class ServletDemo1 extends jakarta.servlet.http.HttpServlet { private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().println("Hello World"); } } 

2. 修改 webapp/index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Home</title></head> <body> <h1>Welcome to My Web App!</h1> </body> </html>
注意:如果不用注解(@WebServlet),需在 web.xml 中配置 servlet 映射。

3. 修改web.xml 

在web.xml 里,修改成servlet6.0的模版

并且配置上servlet访问路径

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0" metadata-complete="false"> <!-- 示例:注册一个 Servlet --> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.example.ServletDemo1</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <!-- 可选:设置欢迎页面 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 

第五步:配置 Tomcat 调试运行

  1. 点击 Configure...,指定你的 Tomcat 安装目录

点击左上角 + → 选择 Tomcat Server → Local

如果没有 Tomcat 选项,请确认你使用的是 Ultimate 版

点击右上角 → Edit Configurations...

  1. 在 Deployment 标签页:
    • 点击 + → 选择 Artifact
    • 选择 mywebapp:war exploded(推荐使用 exploded 方便热部署)
    • Application context 可设为 / 或 /mywebapp
  2. 回到 Server 标签页:
    • HTTP port 默认 8080(可改)
    • JRE 选择项目对应的 JDK

点击 OK


第六步:启动并调试

  • 点击 ▶️ 运行按钮(或 Debug 按钮)
  • IDEA 会自动编译、打包、部署到 Tomcat
  • 浏览器访问:
    • http://localhost:8080/ → 显示 index.jsp ( Welcome to My Web App! )
    • http://localhost:8080/hello → 显示 ( hello world )

✅ 你可以在 ServletDemo1中打 断点,点击 Debug 模式启动,即可调试!


使用maven插件运行 

参考vscode里的配置https://blog.ZEEKLOG.net/chxii/article/details/154356950?sharetype=blogdetail&sharerId=154356950&sharerefer=PC&sharesource=chxii&spm=1011.2480.3001.8118

补充

Java EE 原由 Oracle 主导,现移交 Eclipse Foundation 管理,并更名为 Jakarta EE。为避免商标问题并体现社区主导,强制更改了命名空间。

以下是关键时间节点:


📅 2017 年 8 月

  • Oracle 宣布计划将 Java EE 移交给开源社区。
  • Oracle 表示希望找到一个中立的、成熟的开源基金会来接管 Java EE,以加速其创新和开放治理。

📅 2017 年 9 月

  • Oracle 正式提名 Eclipse Foundation 作为 Java EE 的新归属机构。
  • IBM、Red Hat 等主要 Java 企业也公开支持这一决定。

📅 2017 年 10 月 24 日

  • Oracle 官方正式宣布:将 Java EE 及其参考实现 GlassFish 移交给 Eclipse Foundation
  • 同时明确:由于商标限制,不能继续使用 “Java” 品牌,因此需要更名。

📅 2018 年 3 月

  • Eclipse 基金会发起命名投票,“Jakarta EE” 以 64.4% 的得票率胜出。
  • Java EE 正式更名为 Jakarta EE

📅 2018 年 5 月

  • 项目在 Eclipse 基金会下正式启动,包括:
    • Eclipse Enterprise for Java (EE4J) 项目
    • GlassFish 更名为 Eclipse GlassFish
    • 所有规范逐步迁移到 jakarta.* 命名空间

📅 2019 年 9 月

  • Jakarta EE 8 发布 —— 这是第一个由 Eclipse 基金会发布的版本,API 与 Java EE 8 完全兼容,仅变更了项目归属和流程,包名仍为 javax.*

📅 2021 年 5 月

  • Jakarta EE 9 发布 —— 包名正式从 javax.* 改为 jakarta.*,标志着技术栈的彻底迁移。

 拥抱 Java 生态的未来方向

  • Jakarta EE 是 Java 企业级开发的官方继承者
  • Spring Boot 3(2022 年底发布)已全面转向 Jakarta EE 9+,要求使用 jakarta.* 包。
  • 未来的 Java 框架、工具链和云原生平台(如 Quarkus、Helidon)都基于 Jakarta EE 构建。
💡 如果你计划使用 Spring Boot 3+、JDK 21+ 长期支持版本,就必须迁移到 jakarta.*


总结:为何推荐?

原因说明
✅ 兼容性支持 Tomcat 10+、Spring Boot 3+ 等现代技术栈
✅ 安全性获得持续维护和漏洞修复
✅ 未来就绪对齐 Jakarta EE 和云原生发展方向
✅ 降低风险避免被旧技术栈锁定,减少后期迁移成本
🔜 结论:除非你必须长期停留在 Tomcat 9 / Spring Boot 2.x 等旧环境,否则强烈建议新项目直接使用 jakarta.servlet,老项目尽早规划迁移

Read more

【教程】如何在WSL2:Ubuntu上部署llama.cpp

【教程】如何在WSL2:Ubuntu上部署llama.cpp

WSL2:Ubuntu部署llama.cpp llama.cpp 是一个完全由 C 与 C++ 编写的轻量级推理框架,支持在 CPU 或 GPU 上高效运行 Meta 的 LLaMA 等大语言模型(LLM),设计上尽可能减少外部依赖,能够轻松在多种后端与平台上运行。 安装llama.cpp 下面我们采用本地编译的方法在设备上安装llama.cpp 克隆llama.cpp仓库 在wsl中打开终端: git clone https://github.com/ggml-org/llama.cpp cd llama.cpp 编译项目 编译项目前,先安装所需依赖项: sudoapt update sudoaptinstall -y build-essential cmake git#

By Ne0inhk
Flutter 三方库 ff_annotation_route 的鸿蒙化适配指南 - 掌握基于注解的自动化路由管理技术、助力鸿蒙大型 HAP 项目构建极速解构且类型安全的页面跳转体系

Flutter 三方库 ff_annotation_route 的鸿蒙化适配指南 - 掌握基于注解的自动化路由管理技术、助力鸿蒙大型 HAP 项目构建极速解构且类型安全的页面跳转体系

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 ff_annotation_route 的鸿蒙化适配指南 - 掌握基于注解的自动化路由管理技术、助力鸿蒙大型 HAP 项目构建极速解构且类型安全的页面跳转体系 前言 在 OpenHarmony 鸿蒙应用向“大规模、模块化、组件化”演进的工程实战中,路由(Routing)管理始终是维护成本最高的环节之一。传统的硬编码路由表(String-based Routes)在面对数百个页面时,极易出现拼写错误、参数透传混乱以及耦合度过高等问题。如何实现“写完页面,路由自动生成”?如何让每一个页面跳转都具备强类型校验?ff_annotation_route 作为一个专注于“注解驱动自动化”的路由生成引擎,旨在为鸿蒙开发者提供一套工业级的路由治理方案。本文将详述其在鸿蒙端的实战技法。 一、原原理分析 / 概念介绍 1.1

By Ne0inhk
Flutter 组件 fluent_assertions 的适配 鸿蒙Harmony 实战 - 驾驭流式语义断言语法、实现鸿蒙端单元测试高可读性与复杂逻辑自证方案

Flutter 组件 fluent_assertions 的适配 鸿蒙Harmony 实战 - 驾驭流式语义断言语法、实现鸿蒙端单元测试高可读性与复杂逻辑自证方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 fluent_assertions 的适配 鸿蒙Harmony 实战 - 驾驭流式语义断言语法、实现鸿蒙端单元测试高可读性与复杂逻辑自证方案 前言 在鸿蒙(OpenHarmony)生态的大型分布式系统开发中,随着业务逻辑复杂度的指数级增长,原本简单的单元测试逐渐演变为由数百行冗长、枯燥且难以通过阅读理解其意图的 expect(result, isA<T>()) 堆砌而成的“代码仓库”。面对一个需要同时验证“返回值不为空 且 包含特定前缀 且 响应时间小于 50ms”的复合业务断言。如果仅仅依靠传统的 JUnit 风格写法。不仅会导致测试代码本身产生严重的维护债务,更会由于在测试失败时生成的机械化、无逻辑上下文的错误报文,引发开发者极其低效的排查过程。 我们需要一种“自然语言化、逻辑链式”的测试审计艺术。 fluent_

By Ne0inhk
黑苹果macos 15 Sequoia升级 macos 26.1 Tahoe小结

黑苹果macos 15 Sequoia升级 macos 26.1 Tahoe小结

macos tohoe 升级记录 1、下载系统包 在https://macoshome.com/macos/73876.html下载 pkg 包,下载后打开安装 2、 在OCAuxiliaryTools.app升级 opencore 至 1.0.6,更新后根据工具提示修改 OC配置文件,最重要是修改机型(要选比较新的机型,如macbook pro 16,4)、生成三码 修改下载地址为 github,比默认要快很多 3、 github下载替换Lilu、AppleALC.kext、WhateverGreen.kext最新版 4、打开 第一步安装好的 macos Tahoe,按提示继续,直至重启 5、进系统后,关闭文件保险箱,

By Ne0inhk