Tomcat 的 conf/web.xml 的全局配置文件
是 Tomcat 的 “全局规则手册”,定义了静态资源处理、JSP 解析、Session 超时等基础逻辑,确保所有 Web 应用 “开箱即用”。如果需要对单个项目自定义配置(如新增 Servlet ),则在项目的中编写。
·
目录
完整 conf/web.xml 核心结构(简化版,保留关键逻辑)
1. DefaultServlet(核心兜底 Servlet )
2. JspServlet(JSP 专属 Servlet )
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.html
、style.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
中编写

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