目录
- 一、项目部署的问题
- 二、项目访问路径设置
-
- [1. URL、应用程序上下文的区别](#1. URL、应用程序上下文的区别)
- [2. 实际开发中的使用](#2. 实际开发中的使用)
- 三、项目默认首页路径的设置
-
- 默认首页路径的实现方式
-
- [1. 基础配置:指定默认页面文件名](#1. 基础配置:指定默认页面文件名)
- [2. 配置子目录下的默认首页](#2. 配置子目录下的默认首页)
- [3. 结合应用程序上下文的访问规则](#3. 结合应用程序上下文的访问规则)
- 注意事项
一、项目部署的问题
- 配置
war或war exploded的目的
为了让Tomcat能识别并运行你的JavaWeb项目,是项目部署到Tomcat的必要步骤。
JavaWeb项目最终需要打包成Web应用归档格式 (即war相关形式),Tomcat作为Web服务器,只能识别这种格式的项目文件结构,才能加载并运行项目。如果不配置,Tomcat不知道如何读取你的项目代码,无法启动项目。 war和war exploded的区别
| 类型 | 含义 | 特点 | 适用场景 |
|---|---|---|---|
| war | 是一个压缩包 (把项目的class、资源、配置等文件打包成.war文件) |
部署时Tomcat会自动解压这个包;文件是静态的,修改代码后需要重新打包部署 | 正式环境、生产环境发布 |
| war exploded | 是解压后的war目录结构(直接以文件夹形式存在,包含所有项目文件) | 修改代码后可以实时生效(配合热部署);不需要打包,部署速度快 | 开发环境、调试阶段 |



二、项目访问路径设置
上面的应用程序上下文 是项目的访问前缀 ,而服务器的URL 是Tomcat的基础访问地址,二者组合起来才是项目的完整访问路径。
1. URL、应用程序上下文的区别
- 服务器URL:
http://localhost:8080/(这是Tomcat本身的基础地址,所有部署在这个Tomcat上的项目都基于这个地址访问) - 应用程序上下文:比如设为
/myproject(这是你的项目在Tomcat中的"标识路径") - 完整访问路径 = 服务器URL + 应用程序上下文 + 资源路径
(比如访问项目里的index.html,完整URL是http://localhost:8080/myproject/index.html)
2. 实际开发中的使用
- 服务器URL :一般不用改,保持Tomcat默认的
http://localhost:8080/即可(除非端口冲突,才需要修改HTTP端口)。 - 应用程序上下文 :根据需求设置
- 若你只部署一个项目:可以设为
/(根路径),此时完整访问路径直接是http://localhost:8080/资源名(比如http://localhost:8080/login.html),更简洁。 - 若部署多个项目:给每个项目设不同的上下文(比如项目A设
/appA,项目B设/appB),避免访问冲突。
- 若你只部署一个项目:可以设为
三、项目默认首页路径的设置
默认首页路径的实现方式
默认首页的配置核心是在web.xml文件里面设置<welcome-file-list>标签,具体规则和扩展用法如下:
1. 基础配置:指定默认页面文件名
xml
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<!-- 可添加多个备选页面,Tomcat会按顺序查找 -->
<welcome-file>index.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
- 当访问项目根路径(如
http://localhost:8080/myweb/)时,Tomcat会按顺序在项目根目录下查找<welcome-file>指定的文件,找到第一个存在的页面并加载; - 若项目根目录有
index.jsp,则直接访问http://localhost:8080/myweb/会自动打开index.jsp;若没有,则找index.html,以此类推。
2. 配置子目录下的默认首页
如果默认首页不在项目根目录,而是在子目录(如pages/index.jsp),需通过虚拟路径映射 或Servlet转发实现:
方式1:用<welcome-file>指定子目录路径(Tomcat支持)
xml
<welcome-file-list>
<welcome-file>pages/index.jsp</welcome-file>
</welcome-file-list>
- 访问根路径时,Tomcat会查找
pages/index.jsp并加载。
方式2:通过Servlet映射实现(更灵活,支持动态逻辑)
- 先定义一个处理根路径的Servlet:
java
@WebServlet("/") // 映射到根路径
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 转发到指定的首页路径
req.getRequestDispatcher("/pages/home.jsp").forward(req, resp);
}
}
- 此时
web.xml中无需配置<welcome-file-list>,Servlet会直接处理根路径请求并跳转到目标页面。
3. 结合应用程序上下文的访问规则
若项目的应用程序上下文是/myweb,默认首页配置后:
- 访问
http://localhost:8080/myweb/→ 加载配置的默认首页; - 若默认首页是
pages/index.jsp,则实际访问路径等价于http://localhost:8080/myweb/pages/index.jsp。
注意事项
- 优先级:Servlet映射(如
@WebServlet("/")) ><welcome-file-list>,若同时配置,Servlet会覆盖欢迎页规则; - 静态资源优先级:若
web.xml里不配置<welcome-file-list>,Tomcat会使用内置的默认欢迎页列表 ,顺序是:index.html→index.htm→index.jsp; - 新版Servlet(3.0+)推荐用注解替代
web.xml的Servlet配置,但欢迎页仍建议在web.xml中配置,更直观。
