Java中的Tomcat,开启Web应用腾飞【基础版】

目录

一、Tomcat 初登场:揭开神秘面纱

(一)啥是 Tomcat

(二)为啥要有 Tomcat

二、Tomcat 的安装与启动:开启第一步

(一)下载 Tomcat

(二)启动 Tomcat

三、Tomcat 的目录结构:探秘内部布局

(一)核心目录介绍

(二)目录间的协同工作

四、部署 Java Web 应用到 Tomcat:让应用上线

(一)打包 Web 应用为 WAR 文件

(二)部署 WAR 文件到 Tomcat

五、Tomcat 的配置优化:让性能飙升

(一)调整 JVM 参数

(二)优化连接器配置

六、Tomcat 与 Servlet:亲密无间的伙伴

(一)Servlet 简介

(二)在 Tomcat 中开发与部署 Servlet

七、Tomcat 与 Spring Boot:强强联合

(一)Spring Boot 集成 Tomcat 的优势

(二)实战:Spring Boot 项目部署到 Tomcat


f7e9341db471455facd673d746dd8eae.gif

亲爱的家人们,今天我要给你们好好讲讲在 Java 开发世界里一个超级重要、堪称 “幕后英雄” 的存在 ——Tomcat。你们知道咱们平时上网,浏览各种网页,背后好多精彩内容都是由 Java 编写的 Web 应用程序提供的,而 Tomcat 呢,就像是这些应用程序的 “超级引擎”,把它们发动起来,推向互联网的广阔天地,让全世界的人都能访问到。接下来,我就带着大家深入了解一下这个神奇的 Tomcat。

一、Tomcat 初登场:揭开神秘面纱

(一)啥是 Tomcat

简单来说,Tomcat 是一个开源的、免费的 Java Web 应用服务器。它就像是一个大管家,专门负责接收来自客户端(比如咱们的浏览器)的 HTTP 请求,然后把这些请求分发给对应的 Java Web 应用程序去处理,等应用程序处理完,又把结果收集起来,返回给客户端,整个过程有条不紊,让咱们的上网体验顺畅无比。比如说,你打开一个电商网站,搜索商品、下单付款这些操作,背后的 Java 代码运行在 Tomcat 这个服务器上,Tomcat 协调各方,让数据在你和服务器之间来回穿梭,就像一个忙碌的交通枢纽,保障着信息的流通。

(二)为啥要有 Tomcat

想象一下,如果没有 Tomcat,咱们写的 Java Web 应用程序就像没头的苍蝇,不知道该往哪儿飞,客户端的请求也不知道找谁处理。Tomcat 提供了一个标准的运行环境,让咱们能方便地部署和运行 Java Web 应用,还帮咱们处理网络通信、线程管理、资源加载这些复杂又琐碎的事儿,就像给咱们建了一条高速公路,咱们只需要把 “车”(Web 应用)开上去,它就能自动导航、加速,把咱们送到目的地,要是没有它,开发和部署 Java Web 应用的难度得呈几何倍数增加,咱们可能还在泥泞小道上艰难前行呢。

二、Tomcat 的安装与启动:开启第一步

(一)下载 Tomcat

咱们要使用 Tomcat,首先得把它 “请” 到咱们的电脑上。可以去 Tomcat 的官方网站(Apache Tomcat® - Welcome!)下载,它有不同的版本,就像汽车有不同型号一样,咱们一般选择比较稳定的版本,比如 Tomcat 9。下载的时候,注意要根据咱们的操作系统选择对应的安装包,要是 Windows 就选.exe 文件,Linux 就选.tar.gz 文件,这就跟买衣服得选合适的尺码一样,选对了才能穿得舒服,用得顺手。下载完成后,把安装包解压到一个合适的目录,比如在 Windows 下,我习惯解压到 “C:\Program Files\Apache Tomcat 9”,这个目录就像是 Tomcat 的 “家”,后面咱们要经常和它打交道。

(二)启动 Tomcat

安装好后,怎么让它运转起来呢?在 Tomcat 的安装目录下,有一个 “bin” 文件夹,这里面藏着启动和停止 Tomcat 的 “魔法按钮”。对于 Windows 系统,找到 “startup.bat” 文件,双击它,就像按下汽车的启动键,Tomcat 就开始启动啦。如果一切顺利,在命令行窗口里会看到一连串的启动信息,最后出现类似 “Server startup in [X] ms” 的字样,这就说明 Tomcat 已经成功启动,准备好迎接咱们的 Web 应用啦。要是在 Linux 系统下,就运行 “startup.sh” 脚本,操作稍微复杂一点,得打开终端,切换到 “bin” 目录,输入 “./startup.sh”,注意要有执行权限哦,要是权限不够,得先用 “chmod +x startup.sh” 命令给它加上权限,就像给一把锁配好钥匙,这样才能顺利启动 Tomcat。启动之后,咱们可以在浏览器里输入 “http://localhost:8080”,如果看到 Tomcat 的默认欢迎页面,那就大功告成,咱们的 “超级引擎” 已经火力全开啦。

三、Tomcat 的目录结构:探秘内部布局

(一)核心目录介绍

  1. “bin” 目录
    咱们前面已经提到,这个目录就像是 Tomcat 的控制中心,里面放着启动、停止、重启 Tomcat 的脚本文件,还有一些辅助工具。比如 “startup.bat” 和 “shutdown.bat”(Windows 下)或者 “startup.sh” 和 “shutdown.sh”(Linux 下),这两对文件就是控制 Tomcat 生死的关键,启动的时候用前者,停止的时候用后者,一定要记清楚,别搞混了,不然 Tomcat 可要发脾气,不乖乖听话啦。
  2. “conf” 目录
    这个目录是 Tomcat 的 “大脑”,存放着各种配置文件,决定着 Tomcat 的运行方式。其中最重要的是 “server.xml” 文件,它就像是 Tomcat 的 “宪法”,规定了服务器的端口号、主机名、虚拟主机这些重要参数。比如说,咱们想把 Tomcat 的默认端口 8080 改成 8081,就得打开 “server.xml”,找到 “<Connector port="8080"” 这一行,把 8080 改成 8081,保存后重启 Tomcat,以后访问就得用新端口啦,是不是感觉自己像个掌控全局的工程师?还有 “web.xml” 文件,它定义了 Web 应用的一些通用配置,比如默认的欢迎页面、错误页面处理等,是 Web 应用运行的重要规则手册。
  3. “webapps” 目录
    这可是 Tomcat 的 “舞台”,咱们开发好的 Java Web 应用程序都要部署到这个目录下,才能闪亮登场。当咱们把一个 Web 应用的 WAR 文件(后面会详细说什么是 WAR 文件)复制到这个目录,Tomcat 就像一个敏锐的导演,立刻发现新演员(Web 应用)来了,自动解压、部署,让它准备好接受观众(客户端)的检验。比如说,咱们开发了一个简单的电商网站应用,打包成 WAR 文件后,扔到 “webapps” 目录,过一会儿就能在浏览器里访问啦,超级方便。
  4. “logs” 目录
    这个目录就像是 Tomcat 的 “日记本”,记录着它运行过程中的点点滴滴,包括启动信息、错误日志、访问日志等。要是咱们的 Web 应用出了问题,第一个要找的地方就是这儿,通过查看日志,咱们能像侦探一样,找出问题的蛛丝马迹,看看是代码报错,还是网络连接有问题,然后对症下药,修复故障,让 Tomcat 重新健康运行。

(二)目录间的协同工作

这些目录可不是孤立存在的,它们相互配合,就像一个精密的机器。“bin” 目录启动 Tomcat 后,“conf” 目录里的配置文件就开始发挥作用,指导 Tomcat 按照咱们设定的规则运行,比如监听哪个端口、加载哪些模块;“webapps” 目录里的 Web 应用则依赖这些配置,在 Tomcat 的调度下,接收客户端请求,处理业务逻辑;“logs” 目录全程记录,为整个过程保驾护航,一旦出现异常,咱们就能依据日志回溯,优化系统,确保 Tomcat 和 Web 应用的完美协作,为用户提供稳定可靠的服务。

四、部署 Java Web 应用到 Tomcat:让应用上线

(一)打包 Web 应用为 WAR 文件

咱们开发好一个 Java Web 应用后,不能直接扔给 Tomcat,得先把它打包成一个 WAR 文件,这就像是把散落的积木零件拼成一个完整的模型,方便运输和安装。如果咱们用的是 Maven 项目管理工具,在项目的 pom.xml 文件里,默认的打包类型就是 JAR,咱们得把它改成 WAR,像这样:

<groupId>com.example</groupId>
<artifactId>my-web-app</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>

然后在项目目录下打开命令行,输入 “mvn package” 命令,Maven 就会把项目所需的一切,包括编译好的 Java 类、配置文件、静态资源文件(图片、CSS、JavaScript),都打包进一个 WAR 文件,放在 “target” 目录下,这个 WAR 文件就是咱们 Web 应用的 “压缩版”,准备好奔赴 Tomcat 这个大舞台了。要是没用 Maven,用 IDE(比如 Intellij IDEA)也能轻松打包,在 IDE 的菜单里找到 “Build”->“Build Artifacts”,选择打包成 WAR 文件,然后坐等打包完成就行。

(二)部署 WAR 文件到 Tomcat

拿到打包好的 WAR 文件后,就该把它部署到 Tomcat 上了。前面咱们提到,把 WAR 文件复制到 Tomcat 的 “webapps” 目录下就行,简单粗暴但超级有效。比如说,咱们把刚才打包好的 “my-web-app.war” 文件复制到 “C:\Program Files\Apache Tomcat 9\webapps”(假设 Tomcat 安装在这个目录),Tomcat 就会自动发现它,开始解压、部署,这个过程可能需要一点时间,取决于 WAR 文件的大小和电脑性能。部署完成后,咱们就能在浏览器里通过 “http://localhost:8080/my-web-app”(假设 Tomcat 端口是 8080,应用名是 my-web-app)访问咱们的 Web 应用啦,是不是很有成就感?要是想删除这个应用,直接把 “webapps” 目录下对应的文件夹(也就是解压后的 WAR 文件目录)删掉就行,Tomcat 下次启动就不会加载它了,操作非常灵活。

五、Tomcat 的配置优化:让性能飙升

(一)调整 JVM 参数

Tomcat 运行在 Java 虚拟机(JVM)上,调整 JVM 参数就像是给汽车发动机调校,能让 Tomcat 跑得更快更稳。在 Tomcat 的启动脚本(“startup.bat” 或 “startup.sh”)里,咱们可以添加一些 JVM 参数。比如说,增加内存分配,防止 Tomcat 因为内存不足而卡顿,像这样:
在 Windows 下的 “startup.bat” 里:

set JAVA_OPTS=-Xms512m -Xmx1024m

这表示给 Tomcat 初始分配 512MB 内存,最大可用 1024MB 内存,你可以根据实际情况,比如服务器的硬件配置、Web 应用的复杂程度,调整这些数值,让内存利用达到最优。在 Linux 下的 “startup.sh” 里:

JAVA_OPTS="-Xms512m -Xmx1024m"
export JAVA_OPTS

原理是一样的,通过合理设置 JVM 参数,能显著提升 Tomcat 的性能,让它轻松应对高并发的客户端请求。

(二)优化连接器配置

75629c24a181408d809fbc5dc8ea081c.jpg

连接器(Connector)在 Tomcat 里负责接收客户端的 HTTP 请求,优化它的配置能让请求处理得更快。还是在 “server.xml” 文件里,找到 “<Connector” 相关的配置行,一般默认的配置是这样:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

咱们可以修改一些参数,比如 “connectionTimeout”,它表示连接超时时间,单位是毫秒,如果客户端在这个时间内没有发送完整的请求,Tomcat 就会断开连接,咱们可以根据网络情况适当延长或缩短这个时间,确保连接的稳定性和效率;还有 “maxThreads” 参数,它决定了 Tomcat 同时处理请求的最大线程数,默认值可能不太够,在高并发场景下,咱们可以增大这个值,比如改成 “maxThreads="200"”,让 Tomcat 能同时服务更多的客户端,就像给超市增加收银台,减少顾客排队等待时间,提高整体服务效率。

六、Tomcat 与 Servlet:亲密无间的伙伴

(一)Servlet 简介

Servlet 是 Java Web 应用的核心组件之一,它就像是一个个勤劳的小工匠,负责处理具体的业务逻辑。咱们可以把 Servlet 想象成一个个小车间,客户端的 HTTP 请求进来后,被分发到对应的 Servlet 车间,由 Servlet 根据请求内容进行加工处理,比如查询数据库、生成动态网页内容,然后把处理结果返回给客户端。每个 Servlet 都实现了 javax.servlet.Servlet 接口,或者继承自它的抽象子类,像 HttpServlet,通过重写 doGet、doPost 这些方法来处理不同的 HTTP 请求方法,就像小工匠掌握不同的手艺,能应对各种任务需求。

(二)在 Tomcat 中开发与部署 Servlet

咱们在开发 Servlet 时,首先得创建一个 Java 类,实现 Servlet 接口或者继承 HttpServlet,比如:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><body><h1>Hello, Tomcat!</h1></body></html>");
    }
}

这里咱们创建了一个简单的 HelloServlet,在 doGet 方法里,设置了响应的内容类型为 HTML,然后向客户端输出一个简单的 HTML 页面,显示 “Hello, Tomcat!”。开发好后,咱们得把这个 Servlet 部署到 Tomcat 上,这就需要把它打包进 WAR 文件(前面讲过打包过程),并且在 WAR 文件的 WEB-INF 目录下的 web.xml 文件里进行配置,像这样:

<web-app>
    <servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>com.example.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>helloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

这里定义了 Servlet 的名字和对应的类,以及它的 URL 映射,也就是客户端访问 “/hello” 路径时,就会调用咱们的 HelloServlet,这样,通过 Tomcat 和 Servlet 的紧密配合,咱们就能为客户端提供丰富多彩的 Web 服务了。

七、Tomcat 与 Spring Boot:强强联合

(一)Spring Boot 集成 Tomcat 的优势

Spring Boot 是现在 Java 开发的热门框架,它和 Tomcat 结合起来,更是如虎添翼。Spring Boot 遵循 “约定大于配置” 的原则,能自动帮咱们把 Tomcat 嵌入到项目里,不需要咱们像以前那样手动配置 Tomcat 的各种参数,大大简化了开发流程。咱们只需要专注于业务逻辑的编写,在项目启动时,Spring Boot 就会自动启动嵌入的 Tomcat,让咱们的 Web 应用迅速上线,就像坐高铁一样,快速又便捷,而且还能利用 Spring Boot 的自动配置、起步依赖等强大功能,开发效率大幅提升,无论是小型项目还是大型分布式应用,都能轻松驾驭。

(二)实战:Spring Boot 项目部署到 Tomcat

虽然 Spring Boot 能自动嵌入 Tomcat,但有时候咱们还是想把它部署到外部的 Tomcat 上,比如在生产环境,为了更好的性能和资源管理。首先,咱们得把 Spring Boot 项目的打包类型改成 WAR,在 pom.xml 文件里:

<groupId>com.example</groupId>
<artifactId>my-spring-boot-app</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>

然后,修改启动类,让它继承 SpringBootServletInitializer 并实现 configure 方法,像这样:

import org.springframework.boot.SpringBootServletInitializer;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MySpringBootApp extends SpringBootServletInitializer {
    @Override
    protected SpringBootServletInitializer configure(SpringBootServletInitializer.Configurer configurer) {
        return super.configure(configurer);
    }
}

接着,打包项目(“mvn package”),把生成的 WAR 文件部署到 Tomcat 的 “webapps” 目录,就像普通的 Java Web 应用一样,启动 Tomcat 后,咱们的 Spring Boot 项目就能在外部 Tomcat 上欢快地运行啦,享受两者结合带来的高效与便捷。

恭喜你完成了今日的每日一篇!

c3c84d84135b4f439e75e1d29b22b84d.gif

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潜意识Java

源码一定要私信我,有问题直接问

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值