首页 > 其他分享 >Tomcat服务器

Tomcat服务器

时间:2024-03-25 13:00:36浏览次数:18  
标签:Engine 容器 Tomcat Connector Host Context 服务器 Servlet

Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。

二、原理
    Tomcat结构图:

               Tomcat主要组件:服务器Server,服务Service,连接器Connector、容器Container。连接器Connector和容器Container是Tomcat的核心。

    一个Container容器和一个或多个Connector组合在一起,加上其他一些支持的组件共同组成一个Service服务,有了Service服务便可以对外提供能力了,但是Service服务的生存需要一个环境,这个环境便是Server,Server组件为Service服务的正常使用提供了生存环境,Server组件可以同时管理一个或多个Service服务。

三、两大组件
1、Connector

    一个Connecter将在某个指定的端口上侦听客户请求,接收浏览器的发过来的 tcp 连接请求,创建一个 Request 和 Response 对象分别用于和请求端交换数据,然后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给处理Engine(Container中的一部分),从Engine出获得响应并返回客户。 
Tomcat中有两个经典的Connector,一个直接侦听来自Browser的HTTP请求,另外一个来自其他的WebServer请求。HTTP/1.1 Connector在端口8080处侦听来自客户Browser的HTTP请求,AJP/1.3 Connector在端口8009处侦听其他Web Server(其他的HTTP服务器)的Servlet/JSP请求。 
Connector 最重要的功能就是接收连接请求然后分配线程让 Container 来处理这个请求,所以这必然是多线程的,多线程的处理是 Connector 设计的核心。

2、Container

          Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。通常一个Servlet class对应一个Wrapper,如果有多个Servlet定义多个Wrapper,如果有多个Wrapper就要定义一个更高的Container,如Context。 

Context 还可以定义在父容器 Host 中,Host 不是必须的,但是要运行 war 程序,就必须要 Host,因为 war 中必有 web.xml 文件,这个文件的解析就需要 Host 了,如果要有多个 Host 就要定义一个 top 容器 Engine 了。而 Engine 没有父容器了,一个 Engine 代表一个完整的 Servlet 引擎。

Engine 容器 
Engine 容器比较简单,它只定义了一些基本的关联关系
Host 容器 
Host 是 Engine 的子容器,一个 Host 在 Engine 中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们。它的子容器通常是 Context,它除了关联子容器外,还有就是保存一个主机应该有的信息。
Context 容器 
Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet 了。简单的 Tomcat 可以没有 Engine 和 Host。Context 最重要的功能就是管理它里面的 Servlet 实例,Servlet 实例在 Context 中是以 Wrapper 出现的,还有一点就是 Context 如何才能找到正确的 Servlet 来执行它呢? Tomcat5 以前是通过一个 Mapper 类来管理的,Tomcat5 以后这个功能被移到了 request 中,在前面的时序图中就可以发现获取子容器都是通过 request 来分配的。
Wrapper 容器 
Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了,所以调用它的 addChild 将会报错。 
Wrapper 的实现类是 StandardWrapper,StandardWrapper 还实现了拥有一个 Servlet 初始化信息的 ServletConfig,由此看出 StandardWrapper 将直接和 Servlet 的各种信息打交道。
3、其他组件

    Tomcat 还有其它重要的组件,如安全组件 security、logger 日志组件、session、mbeans、naming 等其它组件。这些组件共同为 Connector 和 Container 提供必要的服务。

四、HTTP请求过程

 

Tomcat Server处理一个HTTP请求的过程
1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。 
2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。 
3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。 
4、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。 
5、path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。 
6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。 
7、Context把执行完之后的HttpServletResponse对象返回给Host。 
8、Host把HttpServletResponse对象返回给Engine。 
9、Engine把HttpServletResponse对象返回Connector。 
10、Connector把HttpServletResponse对象返回给客户Browser。

一、使用tomcat,必须先安装号java,并且将java环境变量配好,这个请百度:java环境变量。
二、下载tomcat:可在https://tomcat.apache.org/download-70.cgi选择你需要的版本下载。下载下来解压当前文件夹,

三、配置tomcat环境变量

1,新建变量名:CATALINA_BASE,变量值:C:\tomcat

2,新建变量名:CATALINA_HOME,变量值:C:\tomcat

3,打开PATH,添加变量值:%CATALINA_HOME%\lib;%CATALINA_HOME%\bin

四、启动Tomcat服务
方法两种:

1,方法一:在CMD命令下输入命令:startup,出现如下对话框,表明服务启动成功。

2,在解压好的tomcat文件夹中找到bin/startup.bat启动。

五、测试tomcat

打开浏览器,在地址栏中输入http://localhost:8080回车,如果看到Tomcat自带的一个JSP页面,说明你的JDK和Tomcat已搭建成功。


注意:如果电脑中安装了或者即将要安装oracle数据库,请在tomcat文件夹下conf/server.xml中找到

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

将“8080”改为其他端口号,如“8989”。因为tomcat与Oracle默认端口号都为“8080”,为避免后期出项冲突,请一定要改改,这种情况多数只有tomcat+Oracle时遇到,切记!

参考:https://www.cnblogs.com/purplestone/p/3964207.html

https://www.cnblogs.com/jingmoxukong/p/8258837.html

 

标签:Engine,容器,Tomcat,Connector,Host,Context,服务器,Servlet
From: https://www.cnblogs.com/klb561/p/18094145

相关文章

  • yolov8云服务器快速部署
    1.进入服务器官网后注册并登录https://www.autodl.com/home2.根据实际情况进行选择3.进行配置4.进入yolov8环境中5.进入终端在ultralytics文件夹下使用pythontrain_v8.py命令即可运行测试用例......
  • 一三云服务器,centos中怎么查看重启记录
    在一三云服务器管理中,经常遇到需要查看服务器操作的记录,比如重启服务器的记录日志等,接下来我就给大家简单介绍一下。要查看CentOS中的重启记录,可以使用以下命令:使用last命令查看系统启动和关机记录:lastrebootAI代码助手复制代码使用journalctl命令查看系统日志,可以筛选出......
  • SSRF(服务器请求伪造)
    相关函数(php)file_get_contenes()fsockopen()curl_exec()fopen()发掘漏洞当一个服务器有可以解析或读取一个url的时候抓包发现某些参数带有url关键字可能存在ssrf漏洞有某个参数的值是http://的链接原理由于函数使用不当造成的file_get_contents()fsockopen()cur......
  • 补充--关于nginx服务器多个网站如何设置404的问题?
    补充--关于nginx服务器多个网站如何设置404的问题?需求1:设置多个网站404页面为一个都需配置网站的nginx.conf,以上面的多网站为例,404发布目录下,每个的nginx.conf1.知道每个网站的(nginx.conf)配置路径www.it.com/usr/local/nginx/conf/nginx.confbbs.it.com/usr/loc......
  • 医院预约挂号系统设计与实现|jsp+ Mysql+Java+ Tomcat(可运行源码+数据库+设计文档)
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读100套最新项目最新ssm+java项目文档+视频演示+可运行源码分享最新jsp+java项目文档+视频演示+可运行源码分享最新SpringBoot项目文档+视频演示+可运行源码分享2024年56套包含java,ssm,springboot的平台......
  • Windows下安装git服务器
    Windows平台下Git服务器搭建该文章转自:https://www.cnblogs.com/android-joker/p/4513125.html安装和配置Java运行环境1:下载Java运行环境,下载地址:https://www.java.com/zh-CN/download/manual.jsp2:安装jre,配置java环境变量3:右键”计算机”=>"属性"=>"高级系统设置"......
  • 自己编译RustDesk,并将自建ID服务器和key信息写入客户端
    前言:搭建RustDesk编译环境    今天总算是把编译环境给折腾清楚了,编译出来了至少能用,但说不上好用,问题还不少,官方的客户端就是要手工填写ID服务器地址和key才可以用,而且还容易被别人白嫖你搭建的服务器,当然如果拿到你编译后的客户端,也是存在被白嫖的可能。这方面还没......
  • 小程序配置服务器域名
    首先登录小程序,点击左侧的开发管理菜单然后找到服务器域名点击后面的修改按钮在弹框中验证管理员的身份后出现如图所示的界面:修改自己的域名后保存提交即可......
  • 游戏开发:服务器部署监控告警
    线上服务器的监控告警,我们暂且从三个层级上分析;业务层:业务相关的日志告警机制。跟业务设计强相关,比如客户端的业务上行请求数据异常之类的告警,业务上定义日志级别(INFO/WARN/ERROR),输出到指定日志文件并通过业务层逻辑抛出,数据分析的埋点、业务行为相关的辅助日志都在这里实现;一套......
  • 阿里云服务器安装mysql后本地连接失败
    阿里云服务器安装mysql后本地连接失败一、问题描述在阿里云安装mysql后,想在本地电脑用可视化工具连接mysql,但是提示连接失败错误如图所示:二、问题分析1、检查3306端口首先,检查阿里云服务器的安全组是否开放了3306端口可以看到,我已经放行了3306端口。2、检查防火墙我选......