您的位置:首页 > 健康 > 美食 > 大连自助建站_移动端应用开发_百度应用平台_如何推销产品给客户

大连自助建站_移动端应用开发_百度应用平台_如何推销产品给客户

2024/12/29 0:22:55 来源:https://blog.csdn.net/weixin_46619605/article/details/144684786  浏览:    关键词:大连自助建站_移动端应用开发_百度应用平台_如何推销产品给客户
大连自助建站_移动端应用开发_百度应用平台_如何推销产品给客户

1.Tomcat介绍

官方文档:https://tomcat.apache.org/tomcat-9.0-doc/index.html

1.1 Tomcat概念
Tomcat是Apache Software Foundation(Apache软件基金会)开发的一款开源的Java Servlet容器。它是一种Web服务器,用于在服务器端运行Java Servlet和JavaServer Pages (JSP)技术。它可以为Java Web应用程序提供运行环境,并通过HTTP协议处理客户端请求。Tomcat也支持多种Web应用程序开发技术,例如JavaServer Faces (JSF)、Java Persistence API (JPA)等。总的来说,Tomcat是一款高效、稳定和易于使用的Web服务器。

Tomcat核心: Http服务器+Servlet容器

在这里插入图片描述

1.2 Tomcat目录结构
Tomcat的解压之后的目录可以看到如下的目录结构

在这里插入图片描述

bin
bin目录主要是用来存放tomcat的脚本,如startup.sh , shutdown.sh

conf
lib
公共类库

logs
tomcat在运行过程中产生的日志文件

webapps
用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序

work
用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件

1.3 web应用部署的三种方式
拷贝到webapps目录下

//指定appBase     
<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true">

server.xml 的Context标签下配置Context

<Context docBase="D:\mvc" path="/mvc"  reloadable="true" />

path:指定访问该Web应用的URL入口(context-path)docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于的appBase属性的相对路径。reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。

在$CATALINA_BASE/conf/[enginename]/[hostname]/ 目录下(默认conf/Catalina/localhost)创建xml文件,文件名就是contextPath。
比如创建mvc.xml,path就是/mvc

<Context docBase="D:\mvc"  reloadable="true" />

注意:想要根路径访问,文件名为ROOT.xml

2、Tomcat整体架构分析
Tomcat 要实现 2 个核心功能:

  • 处理 Socket 连接,负责网络字节流与 Request 和 Response 对象的转化。
  • 加载和管理 Servlet,以及具体处理 Request 请求。

因此Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。

2.1 Tomcat架构图
Tomcat的架构分为以下几个部分:

  • Connector:Tomcat的连接器,用于接收请求并将其发送给容器。
  • Container:Tomcat的容器,负责管理Servlet、JSP和静态资源的生命周期。
  • Engine:Tomcat的引擎,管理容器的生命周期和分配请求。
  • Host:Tomcat的主机,可以管理多个Web应用程序。
  • Context:Tomcat的上下文,用于管理单个Web应用程序的配置信息。
  • Servlet:Tomcat的Servlet,负责处理请求并生成响应。
  • JSP:Tomcat的JSP,用于动态生成Web内容。

总的来说,Tomcat的架构是一个分层的架构,每一层都有其自己的功能和职责。该架构可以提高Tomcat的性能和可维护性,并使得Tomcat可以支持大量的Java Web应用程序。

在这里插入图片描述

http://localhost:8080/mvc2/

2.2 Tomcat核心组件详解
Server 组件
指的就是整个 Tomcat 服务器,包含多组服务(Service),负责管理和启动各个Service,同时监听 8005 端口发过来的 shutdown 命令,用于关闭整个容器 。

Service组件
每个 Service 组件都包含了若干用于接收客户端消息的 Connector 组件和处理请求的 Engine 组件。 Service 组件还包含了若干 Executor 组件,每个 Executor 都是一个线程池,它可以为 Service 内所有组件提供线程池执行任务。 Tomcat 内可能有多个 Service,这样的设计也是出于灵活性的考虑。通过在 Tomcat 中配置多个 Service,可以实现通过不同的端口号来访问同一台机器上部署的不同应用。

在这里插入图片描述

连接器Connector组件
Tomcat 与外部世界的连接器,监听固定端口接收外部请求,传递给 Container,并将Container 处理的结果返回给外部。连接器对 Servlet 容器屏蔽了不同的应用层协议及 I/O 模型,无论是 HTTP 还是 AJP,在容器中获取到的都是一个标准的 ServletRequest 对象。

容器Container组件
容器,顾名思义就是用来装载东西的器具,在 Tomcat 里,容器就是用来装载 Servlet 的。Tomcat 通过一种分层的架构,使得 Servlet 容器具有很好的灵活性。Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 Wrapper。这 4 种容器不是平行关系,而是父子关系。

  • Engine:引擎,Servlet 的顶层容器,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine;
    Host:虚拟主机,负责 web 应用的部署和 Context 的创建。可以给 Tomcat 配置多个虚拟主机地址,而一个虚拟主机下可以部署多个 Web 应用程序;
  • Context:Web 应用上下文,包含多个 Wrapper,负责 web 配置的解析、管理所有的 Web 资源。一个Context对应一个 Web 应用程序。
  • Wrapper:表示一个 Servlet,最底层的容器,是对 Servlet 的封装,负责 Servlet 实例的创建、执行和销毁。

在这里插入图片描述

2.3 结合Server.xml理解Tomcat架构
我们可以通过 Tomcat 的 server.xml 配置文件来加深对 Tomcat 架构的理解。Tomcat 采用了组件化的设计,它的构成组件都是可配置的,其中最外层的是 Server,其他组件按照一定的格式要求配置在这个顶层容器中。

<Server>    //顶层组件,可以包括多个Service<Service>  //顶层组件,可包含一个Engine,多个连接器<Connector/>//连接器组件,代表通信接口		   <Engine>//容器组件,一个Engine组件处理Service中的所有请求,包含多个Host<Host>  //容器组件,处理特定的Host下客户请求,可包含多个Context<Context/>  //容器组件,为特定的Web应用处理所有的客户请求</Host></Engine></Service>	
</Server>	

Tomcat启动期间会通过解析 server.xml,利用反射创建相应的组件,所以xml中的标签和源码一一对应。

2.4 请求定位 Servlet 的过程
Tomcat 是用 Mapper 组件来完成这个任务的。Mapper 组件的功能就是将用户请求的 URL 定位到一个 Servlet,它的工作原理是:Mapper 组件里保存了 Web 应用的配置信息,其实就是容器组件与访问路径的映射关系,比如 Host 容器里配置的域名、Context 容器里的 Web 应用路径,以及 Wrapper 容器里 Servlet 映射的路径,你可以想象这些配置信息就是一个多层次的 Map。当一个请求到来时,Mapper 组件通过解析请求 URL 里的域名和路径,再到自己保存的 Map 里去查找,就能定位到一个 Servlet。一个请求 URL 最后只会定位到一个 Wrapper 容器,也就是一个 Servlet。

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com