Tomcat 介绍
Apache Tomcat 是一个开源的Java Servlet 容器 和 Web 服务器,由 Apache 软件基金会开发和维护。它是一个实现了 Java EE (现改为 Jakarta EE)规范的 Web 容器,特别是 Servlet 和 JSP (Java Server Pages)。Tomcat 是用于部署 Java Web 应用程序的广泛使用的技术之一。
Tomcat 的功能可以分为以下几个方面:
- Web 服务器:Tomcat 充当一个轻量级的 Web 服务器,能够处理 HTTP 请求并将它们转发到正确的 Java Servlet 或 JSP 页面进行处理。它不具备像 Apache HTTPD 或 Nginx 那样的完整功能,但对于 Java 应用来说,它的性能和功能已经足够。
- Servlet 容器:Tomcat 是一个 Java Servlet 容器,能够根据 Servlet API 规范来运行 Java Servlet。Servlet 是 Java 中用于处理 HTTP 请求并生成响应的类,Tomcat 负责加载、初始化和管理这些 Servlet。
- JSP 容器:Tomcat 还可以处理 JSP (Java Server Pages)。JSP 是一种动态 Web 页面技术,它允许开发者在 HTML 中嵌入 Java 代码。Tomcat 会编译 JSP 文件成 Servlet,并根据请求进行处理。
- 连接器:Tomcat 使用连接器与外部 Web 服务器(如 Apache HTTP Server)进行协作。它将 HTTP 请求从外部 Web 服务器转发给 Tomcat 来处理,尤其适用于分布式或大规模系统。
Tomcat 的工作原理
接收请求:当客户端发送 HTTP 请求到 Tomcat 时,Tomcat 会监听指定端口(通常是 8080)上的请求。如果 Tomcat 收到请求,它会判断该请求是指向某个 Servlet 或 JSP 页面。
Servlet 请求处理:
- Servlet Mapping:Tomcat 会根据 URL 路径找到相应的 Servlet 或 JSP。
- 请求和响应:Tomcat 会将请求封装成 HttpServletRequest 对象,并将响应封装成 HttpServletResponse 对象传递给 Servlet。
- 调用 Servlet:Servlet 会处理请求,并生成响应。Tomcat 会将响应发送回客户端。
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 通过一系列配置文件来控制它的行为和参数,主要包括以下几个重要的文件:
- server.xml:server.xml 是 Tomcat 的主要配置文件,负责定义服务器的端口、连接器、Host、Engine 等配置项。你可以在这个文件中配置 Tomcat 监听的端口号、虚拟主机的域名等。
- web.xml:web.xml 是 Web 应用程序的配置文件,定义了应用程序的部署描述、Servlet 映射、过滤器、监听器等。每个 Web 应用程序都有一个 web.xml 文件,它位于应用程序的 WEB-INF 目录下。
- context.xml:context.xml 文件包含特定 Web 应用的配置信息,可以配置应用程序的上下文路径、数据库连接池等。
- tomcat-users.xml:tomcat-users.xml 是 Tomcat 用于配置用户和角色的文件。它主要用于 Tomcat 的安全性设置,如定义管理员账户、访问权限等。
Tomcat的安装目录
- bin目录
bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。
很多环境变量的设置都在此处,例如可以设置JDK路径、tomcat路径
- startup 用来启动tomcat
- shutdown 用来关闭tomcat
- 修改catalina可以设置tomcat的内存
- conf目录
conf目录主要是用来存放tomcat的一些配置文件。
- server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码
- web.xml可以设置tomcat支持的文件类型
- context.xml可以用来配置数据源之类的
- tomcat-users.xml用来配置管理tomcat的用户与权限
- 在Catalina目录下可以设置默认加载的项目
lib目录
lib目录主要用来存放tomcat运行需要加载的jar包。
例如,像连接数据库的jdbc的包我们可以加入到lib目录中来。logs目录
logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。(清空不会对tomcat运行带来影响)
在windows环境中,控制台的输出日志在catalina.xxxx-xx-xx.log文件中
在linux环境中,控制台的输出日志在catalina.out文件中temp目录
temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)webapps目录
webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。
当然,你也可以把应用程序放置在磁盘的任意位置,在配置文件中映射好就行。work目录
work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。
清空work目录,然后重启tomcat,可以达到清除缓存的作用。