(一)Tomcat 详细介绍

Tomcat是一个免费的,开放源代码的Web应用服务器,是Apache软件基金会项目中的一个核心项目,由Apache ,Sun和一些公司以及个人共同开发而成,深受Java爱好者的喜爱,是一款比较流行的web应用服务器。
Tomcat由一系列的组件构成,其中核心的组件有三个:

  1. web容器:完成web服务器的功能。
  2. Servlet容器:名字为catalina,用于处理Servlet代码。
  3. JSP容器:用于将JSP动态网页翻译成Servlet代码。

因此Tomcat是web应用服务器,也是一个Servlet/JSP容器。Tomcat作为 Servlet容器,负责处理客户请求,把请求传送给servlet,并将servlet的响应传送回给客户。

(一)web容器

在这里插入图片描述

web容器可以简单的和web服务器视为同一种东西,它提供web服务的软件或主机,返回服务端的静态文件,即用户通过浏览器向web服务器发送HTTP请求,web服务器解析HTTP请求将请求路径的文件返回给浏览器,浏览器再将文件渲染给用户查看。
其作用简单概括为:

  • 管理和布置web应用。
  • 响应用户对静态页面或图片的请求。
  • 同时将动态请求委托给其他程序(Servlet容器、CGI等等技术)

如果浏览器中请求的是动态资源的话,web服务器就无法处理了。所以就开发了Server Applet(Servlet)来对动态请求进行处理返回动态资源。

(二)servlet

Servlet 是 Java Servlet 的简称,可以理解为是一个服务连接器,是用Java编写的服务器端程序,具有独立于平台和协议的特性,简单的理解: servlet就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。

通常在一个web应用中会有非常多的Servlet,如果让开发人员自己手动来对如此多的Servlet手动管理它们的生命周期,业务逻辑,通信方式,将大大的增加研发人员的工作量。
在这里插入图片描述
所以Tomcat实现了一套叫做Servlet容器的东西来统一加载和管理Servlet。
在这里插入图片描述
这样一来HTTP服务器不直接跟servlet打交道,而是把请求交给Servlet容器去处理,Servlet容器会将请求转发到具体的Servlet,如果这个Servlet还没创建,就加载并实例化这个Servlet,然后调用这个Servlet的接口方法。

因此Servlet接口其实是Servlet容器跟具体业务类之间的接口,这样做的话就达到了HTTP服务器与业务类解耦的目的,简化了开发过程。
其作用简单概括为:

  • 管理业务类(Servlet)
    • 负责加载类、实例化和初始化Servlet
    • 调用Servlet的service方法提供服务
    • 管理Servlet实例的垃圾回收
    • 管理Servlet之间的共同资源(servletContext)
  • 处理动态请求
    • 解析包装请求
    • 调用某个Servlet
    • 将Servlet的执行结果返回给请求端
  • 多线程
    • 自动为它所接收的每个Servlet请求创建一个新的java线程
    • 但是也会出现线程安全问题
  • 实现简便安全
    • 使用xml部署描述文件来配置和修改安全性
  • JSP支持
    • 负责将jsp代码翻译为真正的java代码
  • 管理通信
    • 负责管理servlet与web服务器之间的通信

(三)JSP

JSP 全称 Java Server Pages,是一种动态网页开发技术。它使用JSP 标签在HTML,网页中插入Java代码。标签通常以 <% 开头,以 %> 结束。JSP是一种Java servlet,主要用于实现Java web 应用程序的用户界面部分。

JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

(四) Tomcat 其他组件

Tomcat的核心功能有两个,分别是负责接收和反馈外部请求的连接器Connector,和负责处理请求的容器Container:其中连接器和容器相辅相成,一起构成了基本的 web服务Service。每个Tomcat服务器可以管理多个Service。各Service 之间相互独立。

Service:对外提供的web服务。主要包含Connector和 Container两个核心组件,以及其他功能组件。

1 Connector

Connector: 负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。

2 Container

每个Service 会包含一个Container容器。Container:负责对内处理业务逻辑。其内部由 Engine、Host、Context和wrapper 四个容器组成,用于管理和调用Servlet相关逻辑,其作用分别是:

  • Engine:引擎,用来管理多个虚拟主机,一个Service最多只能有一个Engine。

  • Host:代表一个虚拟主机,也可以叫站点,通过配置 Host 就可以添加站点;

  • Context:代表一个 web 应用,包含多个Servlet封装器;

  • wrapper:封装器,容器的最底层。每一Wrapper封装着一个Servlet,负责对象实例的创建、执行和销毁功能。

Engine、Host、Context和 wrapper,这四个容器之间属于父子关系。容器由一个引擎管理多个虚拟主机。每个虚拟主机可以管理多个web应用。每个web应用会有多个Servlet封装器。

(五)Tomcat请求过程

  1. 用户在浏览器中输入网址,请求被发送到本机端口8080,被在那里监听的 Connector获得。
  2. Connector 把该请求交给它所在的Service 的 Engine (Container)来处理,并等待Engine的回应。
  3. 请求在Engine、Host、Context和Wwrapper 这四个容器之间层层调用,最后在Servlet 中执行对应的业务逻辑、数据存储等。
  4. 执行完之后的请求响应在Context、Host、Engine容器之间层层返回,最后返回给Connector,并通过Connector 返回给客户端。

(二)Tomcat安装

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IForFree

整理不易,望多支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值