Tomcat 是什么?
Tomcat 是一个开源的 Java Servlet 容器和 Web 容器
。
Tomcat 的主要功能有哪些?
三大主要功能:
- 运行 Java Web 应用。
- 处理 HTTP 请求。
- 管理 Web 应用。
如何安装 Tomcat ?
- 下载 Tomcat 安装包(Apache Tomcat 官网:https://tomcat.apache.org)。
- 解压到指定目录。
- 配置环境变量(如
CATALINA_HOME
)。 - 启动 Tomcat:
-
- Windows: 运行
bin/startup.bat
。 - Linux/macOS: 运行
bin/startup.sh
。 - 注意:启动tomcat时如果出现乱码,修改日志配置
logging.properties
文件中的参数java.logging.ConsoleHandler.encoding
即可。
- Windows: 运行
- 访问
http://localhost:8080
验证是否启动成功。 - 关闭Tomcat:运行
shutdown.bat
文件。
如何在 Tomcat 中部署 Web 应用?
示例:部署一个简单的 Web 应用
创建一个简单的 Servlet:
继承HttpServlet
,并实现其中的doGet
方法。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;public class HelloServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<html><body>");out.println("<h1>Hello, Tomcat!</h1>");out.println("</body></html>");}
}
编译 Servlet 并将其放入 WEB-INF/classes
目录。
创建 web.xml
文件配置 Servlet:
<web-app><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>
</web-app>
将应用打包为 WAR 文件或直接复制到 Tomcat 的 webapps
目录。
启动 Tomcat 并访问 http://localhost:8080/your-app/hello
。
war 模式和 war exploded 模式有什么区别?
在Java Web开发中(特别是使用IDEA或Eclipse等IDE部署到Tomcat时),会遇到WAR模式和WAR Exploded模式两种不同的部署方式。
WAR 模式(打包模式) | WAR Exploded(展开模式) | |
---|---|---|
热更新 | 不支持 | 支持 |
特点 | 将项目编译后打包成一个标准的 .war 文件(如 myapp.war ),部署时服务器会自动解压到其工作目录(如Tomcat的 webapps 目录)。 | 直接将项目的编译结果以目录结构展开(未压缩),部署到服务器。 |
是否压缩文件 | 压缩(ZIP格式) | 未压缩 |
部署速度 | 比WAR Exploded模式更快。 | 文件以目录形式存在,部署速度略慢于WAR模式。 |
调试便利性 | 低 | 高 |
建议:
- 开发阶段使用WAR Exploded模式:
- 使用 WAR Exploded,利用热更新提高开发效率。
- 在IDEA中配置Tomcat时,选择 Deploy as exploded war。
- 生产阶段使用WAR 模式:
- 使用 WAR模式,通过CI/CD工具生成
.war
文件后部署。
- 使用 WAR模式,通过CI/CD工具生成
IDEA中,如何启动 Tomcat 热部署?
Tomcat的热部署机制:
- 对于Exploded模式,Tomcat会监控
WEB-INF/classes
和WEB-INF/lib
的变化,但默认不自动重载Java类(需配置reloadable="true"
或使用JRebel)。
IDEA中的配置:
<!-- 在Tomcat的 context.xml 中 -->
<Context reloadable="true" path="/myapp"/>
开启后,Tomcat会检测变更并自动重启应用(影响性能,慎用于生产环境)。