目录

完整 conf/web.xml 核心结构(简化版,保留关键逻辑)

关键配置详解(结合你的疑问)

1. DefaultServlet(核心兜底 Servlet )

2. JspServlet(JSP 专属 Servlet )

3. 欢迎文件列表

4. 会话配置

5. 错误页面配置

与项目 WEB-INF/web.xml 的区别

总结


Tomcat 的 conf/web.xml 是全局配置文件,定义了所有 Web 应用通用的 Servlet、过滤器、欢迎页等规则。以下是基于 Tomcat 典型版本(如 Tomcat 9 )的 conf/web.xml 核心内容梳理,包含关键配置的作用说明:


完整 conf/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">

    <!-- 1. 全局上下文参数(可选,给所有Web应用提供环境变量) -->
    <context-param>
        <param-name>globalParam</param-name>
        <param-value>全局参数值</param-value>
    </context-param>

    <!-- 2. 过滤器配置(可自定义,如字符编码、日志等) -->
    <filter>
        <filter-name>SetCharacterEncodingFilter</filter-name>
        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SetCharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 3. Servlet 配置(Tomcat 核心功能) -->
    <!-- 3.1 DefaultServlet:处理静态资源、兜底404 -->
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value> <!-- 是否显示目录列表(安全考虑,一般关) -->
        </init-param>
        <load-on-startup>1</load-on-startup> <!-- 启动优先级(1 表示较早加载) -->
    </servlet>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern> <!-- 缺省匹配,其他Servlet无法匹配时生效 -->
    </servlet-mapping>

    <!-- 3.2 JspServlet:处理JSP文件(编译、执行) -->
    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value> <!-- 是否fork新进程编译JSP -->
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value> <!-- 是否在响应头加 "X-Powered-By: JSP" -->
        </init-param>
        <load-on-startup>3</load-on-startup> <!-- 启动优先级(3 比 DefaultServlet 晚) -->
    </servlet>
    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern> <!-- 匹配 .jsp 文件 -->
        <url-pattern>*.jspx</url-pattern> <!-- 匹配 .jspx 文件 -->
    </servlet-mapping>

    <!-- 4. 会话配置(全局Session超时时间) -->
    <session-config>
        <session-timeout>30</session-timeout> <!-- Session 30分钟无操作则过期(单位:分钟) -->
    </session-config>

    <!-- 5. 欢迎文件列表(访问目录时,自动查找的文件) -->
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!-- 6. 错误页面配置(可选,自定义404、500等错误页) -->
    <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location> <!-- 需确保项目中有此文件,否则用Tomcat默认错误页 -->
    </error-page>
    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/error.jsp</location>
    </error-page>

    <!-- 7. MIME 类型映射(指定文件后缀对应的 Content-Type) -->
    <mime-mapping>
        <extension>html</extension>
        <mime-type>text/html</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>css</extension>
        <mime-type>text/css</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>js</extension>
        <mime-type>application/javascript</mime-type>
    </mime-mapping>
    <!-- 更多MIME类型... -->

</web-app>

关键配置详解

1. DefaultServlet(核心兜底 Servlet )
  • 作用
    • 处理静态资源(如 index.htmlstyle.css )。
    • 当请求找不到其他 Servlet 匹配时,返回 404 错误
  • 配置细节
    • <url-pattern>/</url-pattern>:表示 “缺省匹配”,只有其他 Servlet 都无法处理时,才会触发它。
    • <init-param name="listings">false</init-param>:关闭 “目录列表”(若为 true,访问目录时会显示文件列表,有安全风险 )。
2. JspServlet(JSP 专属 Servlet )
  • 作用
    编译 JSP 文件为 Java Servlet 并执行,动态生成 HTML 响应。
  • 配置细节
    • <url-pattern>*.jsp</url-pattern>:匹配所有 .jsp.jspx 结尾的请求。
    • <init-param name="xpoweredBy">false</init-param>:不在响应头暴露 X-Powered-By: JSP(安全优化,避免泄露技术栈 )。
3. 欢迎文件列表
  • 作用
    访问目录(如 http://localhost:8080/ )时,Tomcat 会按顺序查找 index.html → index.htm → index.jsp,找到第一个存在的文件返回。
4. 会话配置
  • 作用
    全局设置 Session 超时时间(30 分钟 ),若项目中未单独配置,以此为准。
5. 错误页面配置
  • 作用
    自定义错误页(如 404.jsp ),替代 Tomcat 默认错误页,提升用户体验。

与项目 WEB-INF/web.xml 的区别

  • conf/web.xml:Tomcat 全局配置,影响所有 Web 应用(如所有项目的静态资源都由 DefaultServlet 处理 )。
  • WEB-INF/web.xml:单个 Web 应用的配置,仅影响当前项目(可覆盖全局配置,如自定义 Servlet 映射 )。

总结

conf/web.xml 是 Tomcat 的 “全局规则手册”,定义了静态资源处理、JSP 解析、Session 超时等基础逻辑,确保所有 Web 应用 “开箱即用”。如果需要对单个项目自定义配置(如新增 Servlet ),则在项目的 WEB-INF/web.xml 中编写

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐