新建 Dynamic Web Project 是唯一可靠起点,JSP 必须置于 WebContent 或 src/main/webapp 下,且需确保 Java 版本、JSP 编译器、三处 UTF-8 编码(工作空间、文件属性、page 指令)严格一致,否则将出现 404、编译失败或乱码。

新建 Dynamic Web Project 是唯一可靠起点
所有 Eclipse 版本(Oxygen、Photon、2019-06、2022-09 等)建 JSP 的前提,都是先创建 Dynamic Web Project。JSP 本身不是独立项目类型,而是 Web 项目中的资源文件。如果直接选 File > New > Other > Web > JSP File,会报错或无法部署——因为缺少 WebContent 目录结构、web.xml(或 web.xml 等效配置)、Servlet 容器识别所需的元数据。
实操建议:
- 务必从
File > New > Dynamic Web Project入口开始,不要跳过 - Project name 建议用纯英文+数字,避免中文或空格,否则 Tomcat 启动时可能报
java.lang.IllegalArgumentException: Invalid character in path - Target runtime 必须选已配置的服务器(如 Apache Tomcat v9.0),未配置则点击
New Runtime...添加;若留空,后续发布 JSP 会提示No servers configured - Oxygen 及之后版本默认勾选
Generate web.xml deployment descriptor,建议保留——光子(Photon)某些子版本默认取消该选项,若不勾选,需手动在src/main/webapp/WEB-INF/下补全web.xml,否则 Filter 或 Listener 不生效
JSP 文件必须放在 WebContent 或 src/main/webapp 下
Eclipse 不同版本对 Web 资源目录的默认命名略有差异:Oxygen 默认用 WebContent,Photon 及之后(尤其 Maven 集成项目)倾向用 src/main/webapp。但无论哪种,JSP 文件都**不能**放在 src/main/java 或普通 source folder 里——否则服务器启动后访问 /xxx.jsp 会返回 404 或直接下载源码。
常见错误现象:
- 右键项目 →
New > JSP File时,向导中 Location 显示路径为src/main/java→ 立即点 Cancel,重新右键WebContent(或src/main/webapp)文件夹再新建 - 手动拖入 JSP 到错误目录后,Eclipse 不报错,但刷新浏览器看到
HTTP Status 404→ 检查 Project Facets:右键项目 →Properties > Project Facets,确认Dynamic Web Module已勾选,且Content directory指向正确路径(如WebContent或src/main/webapp) - Photon 中新建 Maven 项目时,默认没有
src/main/webapp→ 需手动创建该文件夹,并右键 →Properties > Deployment Assembly,添加Folder > src/main/webapp > /映射
Tomcat 启动失败常因 JSP 编译器配置不匹配
Eclipse 内嵌 Tomcat 启动时若报 org.apache.jasper.JasperException: Unable to compile class for JSP,大概率是 JSP 编译器(JDT Compiler)与项目 Java 版本不一致。Oxygen 默认用 Java 8 编译器,Photon 开始支持 Java 11+,但若项目设为 Java 17,而 Tomcat 9 默认不兼容高版本字节码,则 JSP 编译失败。
排查与修复:
- 检查项目 Java Compiler 级别:右键项目 →
Properties > Java Compiler,确认Compiler compliance level与 Tomcat 支持版本匹配(Tomcat 9 支持最高 Java 11,Tomcat 10+ 才支持 Java 17) - 检查 JSP 编译器设置:进入
Window > Preferences > Web > JSP Files > Compiler,确认Compiler level与项目一致;若使用较新 Eclipse(如 2022-09),此处可能显示Use project settings,此时以项目级别为准 - 若仍报错,临时在
web.xml中加一段强制编译配置(仅调试用):*.jsp UTF-8
不同版本对 UTF-8 和中文注释的支持差异很小,但编码设置必须显式指定
Oxygen 到 2023-09,Eclipse 自身对 JSP 文件编码的处理逻辑基本一致,但新手常忽略一个关键点:JSP 文件顶部的 pageEncoding 指令和 Eclipse 工作空间编码必须协同。即使写了 ,若文件实际保存为 GBK,浏览器仍会乱码。
确保中文正常显示的步骤:
- 全局设置:进入
Window > Preferences > General > Workspace,将Text file encoding设为UTF-8(不是 “Default (inherited from container)”) - 单文件设置:右键 JSP 文件 →
Properties > Resource > Text file encoding,选Other > UTF-8,并勾选Always use this encoding - 页面头声明不可少:
——contentType控制浏览器解析,pageEncoding控制服务器读取,二者缺一不可 - 若使用 Tomcat 9+,还需检查
conf/server.xml中 Connector 的URIEncoding="UTF-8"是否启用,否则 GET 请求中文参数会乱码
真正麻烦的从来不是版本差异,而是把 JSP 当成普通文本文件对待——它依赖完整的 Web 容器生命周期、正确的目录映射、以及三处(工作空间、文件属性、page 指令)编码的一致性。漏掉任意一环,都会在浏览器里静默失败。










