(一)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就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。

因此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 返回给客户端。

本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;

2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;

3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;

4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;

5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/294384.html

(0)
上一篇 2022年12月1日
下一篇 2022年12月1日

相关推荐

发表回复

登录后才能评论