You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ IDEA中Jakarta EE 8项目.xhtml访问及首页配置问题

JSF项目默认首页404问题解决指南(项目结构、文件存放与web.xml配置)

一、标准项目结构规划

IntelliJ IDEA中Jakarta EE 8项目需遵循以下结构(确保Tomcat能正确识别资源):

JSFStarter/
├── src/main/java/               # 存放Servlet、JSF Managed Bean等Java类
├── src/main/resources/          # 配置文件、国际化资源等
├── src/main/webapp/             # Web应用根目录(核心资源目录)
│   ├── home.xhtml               # 自定义首页文件(直接放此目录)
│   ├── WEB-INF/
│   │   ├── web.xml              # Web应用配置文件
│   │   ├── faces-config.xml     # JSF核心配置(可选,按需添加)
│   │   └── lib/                 # 依赖库(非Maven管理时使用)
│   └── META-INF/                # 项目元数据(可选)
└── pom.xml/gradle.build         # Maven/Gradle依赖管理文件

二、XHTML文件存放规则

  • 自定义首页home.xhtml必须放在webapp根目录下,不能放在WEB-INF内(WEB-INF下的文件无法直接被外部访问)。
  • 注意文件名大小写:Tomcat在Linux环境下区分大小写,确保文件名与配置完全一致(如home.xhtml而非Home.xhtml)。

三、web.xml配置修正

你的配置存在两个核心问题,导致404错误:

  1. Jakarta EE 8已完成API包名迁移,旧的javax.faces前缀需改为jakarta.faces。
  2. welcome-file路径无需前置斜杠,否则会被解析为服务器根目录而非应用根目录。

修正后的完整web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <context-param>
        <param-name>jakarta.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>home.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

关键配置说明:

  • 包名迁移:将javax.faces替换为jakarta.faces,确保FacesServlet能被正确加载(Jakarta EE 8不再支持旧的javax前缀API)。
  • welcome-file路径:移除前置斜杠,直接写home.xhtml,对应webapp根目录下的文件。
  • Servlet映射:保留*.xhtml映射即可,无需额外*.jsf映射(除非你需要兼容旧的访问方式)。

四、验证与部署步骤

  1. 确认home.xhtml在webapp根目录下,且内容格式正确(至少包含基础JSF标签结构,如<h:head>、<h:body>)。
  2. 替换web.xml后,清理Tomcat的work目录(避免缓存旧配置)。
  3. 重新部署项目,访问localhost:8080/JSFStarter_war_exploded/,首页应正常加载。

额外注意事项

若使用Tomcat作为服务器,需自行添加JSF实现库(如Mojarra),因为Tomcat默认不包含JSF组件。可通过Maven添加依赖:

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>jakarta.faces</artifactId>
    <version>2.3.14</version>
</dependency>

内容的提问来源于stack exchange,提问作者Carlos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 10:06:00