详解Tomcat

发布于:2025-02-27 ⋅ 阅读:(14) ⋅ 点赞:(0)

Tomcat 介绍

Apache Tomcat 是一个开源的Java Servlet 容器 和 Web 服务器,由 Apache 软件基金会开发和维护。它是一个实现了 Java EE (现改为 Jakarta EE)规范的 Web 容器,特别是 Servlet 和 JSP (Java Server Pages)。Tomcat 是用于部署 Java Web 应用程序的广泛使用的技术之一。

Tomcat 的功能可以分为以下几个方面:

  1. Web 服务器:Tomcat 充当一个轻量级的 Web 服务器,能够处理 HTTP 请求并将它们转发到正确的 Java Servlet 或 JSP 页面进行处理。它不具备像 Apache HTTPD 或 Nginx 那样的完整功能,但对于 Java 应用来说,它的性能和功能已经足够。
  2. Servlet 容器:Tomcat 是一个 Java Servlet 容器,能够根据 Servlet API 规范来运行 Java Servlet。Servlet 是 Java 中用于处理 HTTP 请求并生成响应的类,Tomcat 负责加载、初始化和管理这些 Servlet。
  3. JSP 容器:Tomcat 还可以处理 JSP (Java Server Pages)。JSP 是一种动态 Web 页面技术,它允许开发者在 HTML 中嵌入 Java 代码。Tomcat 会编译 JSP 文件成 Servlet,并根据请求进行处理。
  4. 连接器:Tomcat 使用连接器与外部 Web 服务器(如 Apache HTTP Server)进行协作。它将 HTTP 请求从外部 Web 服务器转发给 Tomcat 来处理,尤其适用于分布式或大规模系统。

Tomcat 的工作原理

  1. 接收请求:当客户端发送 HTTP 请求到 Tomcat 时,Tomcat 会监听指定端口(通常是 8080)上的请求。如果 Tomcat 收到请求,它会判断该请求是指向某个 Servlet 或 JSP 页面。

  2. Servlet 请求处理:

    • Servlet Mapping:Tomcat 会根据 URL 路径找到相应的 Servlet 或 JSP。
    • 请求和响应:Tomcat 会将请求封装成 HttpServletRequest 对象,并将响应封装成 HttpServletResponse 对象传递给 Servlet。
    • 调用 Servlet:Servlet 会处理请求,并生成响应。Tomcat 会将响应发送回客户端。
  3. JSP 处理:

    • JSP 转换:Tomcat 会将 JSP 页面转化为 Servlet,然后执行该 Servlet。
    • 动态页面:JSP 页面能够在客户端请求时动态生成内容,响应则返回给客户端。

Tomcat 的主要组件

Connector:

  • Connector 是 Tomcat 和 Web 服务器之间的桥梁,它负责接收客户端的请求并将请求交给 Tomcat 的内部组件处理。Tomcat 默认有 HTTP Connector,用于处理 HTTP 请求。
  • 可以配置其他类型的连接器,如 AJP 连接器,它主要用于与 Apache HTTP Server 的集成。

Engine:

  • Tomcat 的 Engine 是 Web 容器的核心,它负责解析请求并找到适当的容器来处理。它会将请求分发给 Host、Context 等子组件。

Host:

  • Host 代表虚拟主机。在 Tomcat 中,每个 Host 对象对应一个网站域名。如果你有多个网站在同一个 Tomcat 实例上运行,可以为每个网站配置不同的 Host。

Context:

  • Context 代表一个 Web 应用程序(或 Web 应用)。每个部署在 Tomcat 上的 Web 应用都对应一个 Context 对象。Context 决定了请求和资源如何被处理。

Realm:

  • Realm 是 Tomcat 中的身份验证和授权组件。它用于管理用户身份验证,支持多种方式,如数据库、LDAP 等。它帮助确定请求的用户是否有权限访问特定的资源。

Valve:

  • Valve 是 Tomcat 中用于请求和响应处理的组件。可以在请求进入 Servlet 容器之前或之后插入自定义的处理逻辑。常见的 Valve 有日志记录、访问控制等。

Loader:

  • Loader 负责加载应用程序中的类,它决定了应用程序的类加载机制。

Tomcat 配置文件

Tomcat 通过一系列配置文件来控制它的行为和参数,主要包括以下几个重要的文件:

  1. server.xml:server.xml 是 Tomcat 的主要配置文件,负责定义服务器的端口、连接器、Host、Engine 等配置项。你可以在这个文件中配置 Tomcat 监听的端口号、虚拟主机的域名等。
  2. web.xml:web.xml 是 Web 应用程序的配置文件,定义了应用程序的部署描述、Servlet 映射、过滤器、监听器等。每个 Web 应用程序都有一个 web.xml 文件,它位于应用程序的 WEB-INF 目录下。
  3. context.xml:context.xml 文件包含特定 Web 应用的配置信息,可以配置应用程序的上下文路径、数据库连接池等。
  4. tomcat-users.xml:tomcat-users.xml 是 Tomcat 用于配置用户和角色的文件。它主要用于 Tomcat 的安全性设置,如定义管理员账户、访问权限等。

Tomcat的安装目录

在这里插入图片描述

  1. bin目录
    bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。
    很多环境变量的设置都在此处,例如可以设置JDK路径、tomcat路径
  • startup 用来启动tomcat
  • shutdown 用来关闭tomcat
  • 修改catalina可以设置tomcat的内存
    在这里插入图片描述
  1. conf目录
    conf目录主要是用来存放tomcat的一些配置文件。
  • server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码
  • web.xml可以设置tomcat支持的文件类型
  • context.xml可以用来配置数据源之类的
  • tomcat-users.xml用来配置管理tomcat的用户与权限
  • 在Catalina目录下可以设置默认加载的项目
    在这里插入图片描述
  1. lib目录
    lib目录主要用来存放tomcat运行需要加载的jar包。
    例如,像连接数据库的jdbc的包我们可以加入到lib目录中来。

  2. logs目录
    logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。(清空不会对tomcat运行带来影响)
    在windows环境中,控制台的输出日志在catalina.xxxx-xx-xx.log文件中
    在linux环境中,控制台的输出日志在catalina.out文件中

  3. temp目录
    temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)

  4. webapps目录
    webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。
    当然,你也可以把应用程序放置在磁盘的任意位置,在配置文件中映射好就行。

  5. work目录
    work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。
    清空work目录,然后重启tomcat,可以达到清除缓存的作用。


网站公告

今日签到

点亮在社区的每一天
去签到