Tomcat整体结构简单介绍

Tomcat是一个开源的servlet/JSP容器,是广泛使用的Java Web应用服务器之一。下面我来整理一下Tomcat的整体结构简单介绍攻略。

目录结构

Tomcat的安装目录结构如下:

* bin                    // 存放Tomcat的执行脚本和命令
* conf                   // 配置文件目录
* lib                    // 存放Tomcat需要的基础类库和JAR包
* logs                   // 存放Tomcat的日志文件
* webapps                // 存放Web应用程序的文件夹。这里是我们开发时最常用到的目录,把开发好的Web应用程序引入到webapps即可
* work                   // 这个文件夹用来保存Tomcat在运行时JSP编译生成的Servlet文件,它也可以在server.xml作为一个内部标记
* temp                   // Tomcat配置默认的工作目录(在线Java代码编译的时候使用到)

bin目录:存放启动、关闭Tomcat服务器的脚本和命令。其重要文件有startup.sh(启动Tomcat)、shutdown.sh(关闭Tomcat)等。

conf目录:存放配置文件。主要文件如下:

  • server.xml:Tomcat服务器的主要配置文件,定义Tomcat的网络端口,Web应用程序的根目录等。
  • web.xml:Web应用程序的部署描述文件,定义Web应用程序的servlet、JSP、过滤器等。
  • context.xml:Web应用程序的上下文配置文件,定义Web应用程序特殊的参数(例如JNDI等)

lib目录:存放Tomcat需要的基础类库和JAR包。

logs目录:存放Tomcat的日志文件。主要文件有catalina.out和localhost_access_log.yyyy_mm_dd.txt。

webapps目录:用于存放Web应用程序的文件夹。我们可以准备好WAR包,放到webapps下面启动Tomcat即可自动解压(只有部署方式为自动部署时会解压)。

work目录:用于在运行时储存JSP页面的编译代码以及Servlet类文件。

temp目录:Tomcat配置默认的工作目录。

Tomcat的核心组件

Tomcat的核心组件包括:

  • Catalina:Tomcat 的Servlet 容器和 Web 服务器。
  • Jasper:Tomcat 的JSP 引擎。
  • Coyote:Tomcat 的HTTP 连接器。
  • Cluster:Tomcat 的集群服务。
  • Tomcat Native:Tomcat 的本地组件,提供用于Tomcat的APR/Native实现。

其中,Coyote是实现 Tomcat 基本功能的核心组织, 是提供 HTTP(S) 访问的组件;而 Catalina 则是继承于 Coyote 之上的业务组件,是实现servlet和JSP规范API的Java类库集合。

示例说明

示例1:修改Tomcat默认端口

在conf/server.xml文件中找到如下两条配置:

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

如上所示,Connector标签中的port参数用于设置Tomcat监听的端口号。我们可以把8080端口改成其他的端口号(如9090),并重启Tomcat服务器即可生效:

<Connector port="9090" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

示例2:添加添加新的Web应用程序

我们把项目目录拷贝到Tomcat的webapps目录下,Tomcat会自动帮我们把这个项目进行解压并部署。如果我们要自己手动部署一个Web应用程序,需要创建一个新的目录,然后在该目录中添加Web应用程序工程结构。例如,假设我们把项目拷贝到了/home/projects/myapp目录下,我们可以使用如下命令为Tomcat添加一个新的上下文:

$ cd $CATALINA_HOME/conf/Catalina/localhost
$ sudo vi myapp.xml

在myapp.xml文件中添加一个Context标签,设置docBase属性并保存:

<Context path="/myapp" docBase="/home/projects/myapp" />

以上代码会在http://localhost:8080/myapp路径下显示我们自己的Web应用程序。需要注意的是,这样添加的Web应用程序通常都需要手动启动和停止。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Tomcat整体结构简单介绍 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • docker-compose实现容器任务编排的方法步骤

    当我们需要部署多个容器应用的时候,我们需要使用容器编排来管理和协调这些应用。而docker-compose是一种常用的容器编排工具,它可以通过一个配置文件描述容器应用间的关系,使得容器的部署和管理变得更加方便。 以下是使用docker-compose实现容器任务编排的方法步骤: 编写docker-compose.yml文件 首先,我们需要创建一个名为dock…

    database 2023年5月21日
    00
  • SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值

    这个问题通常发生在使用SQL Server链接服务器调用存储过程时,参数为NULL值的场景下。下面是解决这一问题的完整攻略: 问题背景 使用SQL Server配置链接服务器,通过链接服务器调用存储过程时,参数传递NULL值会导致异常。 解决步骤 配置Linked Server 首先需要使用ODBC驱动配置Linked Server。这里假设我们已经配置好了…

    database 2023年5月21日
    00
  • Redis数据导入导出以及数据迁移的4种方法详解

    关于Redis数据导入导出以及数据迁移的4种方法详解,我来给你详细讲解一下。 1. Redis数据导入导出 Redis提供了2种导入导出数据的方式,分别是RDB快照和AOF文件。 RDB快照 RDB快照是Redis的一种备份机制,可以将当前内存中的数据保存到磁盘上的一个RDB文件中。它的优点是导出速度非常快,并且文件体积相对较小,适合搭建冷备份。 导出RDB…

    database 2023年5月22日
    00
  • Cassandra和RDBMS的区别

    Cassandra和RDBMS是两种不同类型的数据库管理系统。下面我详细讲解Cassandra和RDBMS的区别,并附上相应的实例说明。 Cassandra和RDBMS的结构 Cassandra是NoSQL数据库,采用键值对存储数据。Cassandra本质上是一种分布式键值存储系统,所有数据都被散列存储在多个节点上。它的结构比较扁平,表设计灵活,能够存储大量…

    database 2023年3月27日
    00
  • redis 存日志

    package main import ( “fmt” “time” “github.com/go-redis/redis” ) func main() { start := time.Now() client := redis.NewClient(&redis.Options{ Addr: “127.0.0.1:6379”, }) err := c…

    Redis 2023年4月13日
    00
  • 基于Spring Boot使用JpaRepository删除数据时的注意事项

    简介 Spring Boot是一个快速开发框架,可以帮助开发人员开发高效率的Web应用程序。在使用Spring Boot和JpaRepository删除数据时,可能会遇到一些问题,因此需要注意一些细节。 调用JpaRepository删除数据示例 在调用JpaRepository删除数据时,需要注意一下几点:- 通过JpaRepository进行删除操作时,…

    database 2023年5月22日
    00
  • Oracle数据创建虚拟列和复合触发器的方法

    下面是详细讲解“Oracle数据创建虚拟列和复合触发器的方法”的完整攻略。 创建虚拟列 确定需要创建虚拟列的表,并确认虚拟列的计算公式。 使用 ALTER TABLE 语句添加虚拟列,语法如下: sql ALTER TABLE table_name ADD (column_name data_type [GENERATED ALWAYS] AS (expre…

    database 2023年5月21日
    00
  • MySQL查询语句大全集锦

    MySQL查询语句大全集锦 简介 本篇文章是关于MySQL查询语句的大全集合,旨在帮助开发人员快速准确地进行MySQL数据的查询操作。文章包含常见的查询语句、查询技巧和案例实战等方面的内容。 常见查询语句 SELECT SELECT 语句常用于从数据库中获取数据。 示例: SELECT * FROM users; 上面的语句将选取 users 表中的所有行和…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部