
为什么 src/main/webapp 下不能直接建 JSP 文件?
因为 Eclipse 的 Dynamic Web Project 默认不把 src/main/webapp 当作 Web Root(即部署根路径),除非你显式配置了 Deployment Assembly 和 Facets。Maven 项目结构里,src/main/webapp 是标准 Web 资源目录,但 Eclipse 不会自动识别它为 web content folder——尤其当你用的是「Java Project」而非「Dynamic Web Project」,或没启用 Web Facet 时,新建的 JSP 文件甚至不会被编译器识别,更不会打包进 WAR。
如何让 Eclipse 正确识别 src/main/webapp 为 Web Content 目录?
必须手动设置 Deployment Assembly 并校验 Project Facets:
- 右键项目 → Properties → Deployment Assembly
- 点击 Add… → Folder → 选中
src/main/webapp→ 点击 Finish - 确认该条目右侧的 Deploy Path 是
/(不是/webapp或其他) - 再进 Project Facets → 勾选 Dynamic Web Module(版本建议 4.0 或 5.0,与 Tomcat 版本匹配)→ 确保 Further configuration available… 已点开,并将 Web content folder 设为
src/main/webapp
在 src/main/webapp 下创建 JSP 文件的实际操作要点
配置完后,才能安全地新建 JSP:
- 确保资源浏览器中已展开
src/main/webapp(若看不到,可能被过滤;点击小三角 → Filters and Customization… → 取消勾选.* resources) - 右键
src/main/webapp→ New → Other… → 展开 Web → 选 JSP File - 文件名必须以
.jsp结尾,路径必须在src/main/webapp内(例如src/main/webapp/index.jsp或src/main/webapp/WEB-INF/views/home.jsp) - 不要放在
src/main/java或src/main/resources下——JSP 不是 Java 类,也不参与 classpath 扫描
常见错误现象和对应检查项
如果 JSP 页面访问 404 或报 The requested resource is not available:
- 检查服务器启动时控制台是否打印类似
Initializing Spring DispatcherServlet—— 若没启动 Servlet 容器上下文,说明没识别到 Web 内容 - 打开
.settings/org.eclipse.wst.common.component,确认里面有类似: - 右键项目 → Refresh,再右键 → Validate,看是否有 Web 相关警告
- 运行时查看
target/m2e-wtp/web-resources(或target/)下是否生成了对应 JSP 文件——没生成=部署路径未生效
Eclipse 对 Maven Web 项目的支持依赖于元数据一致性,src/main/webapp 不是“放进去就自动认”,关键在于 Deployment Assembly 的映射关系和 Facet 的激活状态。漏掉任意一环,JSP 就只是个普通文本文件。










