tomcat组件图解 一个web服务器的架构演化史
1. tomcat是谁?
2. tomcat可以做什么?
tomcat是一个web容器,可以将web应用部署到tomcat,由它提供web服务,一个web容器中可以部署多个web应用,这些web应用可以是同一个域名,也可以是多个域名的服务。
3. tomcat有哪些组件
4.怎么快速理解这些组件呢?
我们可以假设我们来设计一个web容器,我们该什么设计?
第一代:接收请求,处理请求,返回结果集中到整个web容器中,如下图所示:
第二代 :连接管理和处理逻辑分开
使用过程中发现,每次都要打开socket的连接,调用处理逻辑,然后关闭socket连接比较烦,干脆将socket的连接关闭交给Connector来处理,请求的业务逻辑交给Container来处理好了,就变成这样了。
第三代:支持多种网络协议
最初的目标是设计一个web服务器或者容器,那么如果想要支持更多的协议就需要新建不同的Connector和Container,此时就变成这样子了,其中service包装了Connector和Container
第四代:支持多个web应用
既然是容器,就要支持多个应用,每个应用是有一个Context,且相互隔离,支持多个Context的架构如下:
第五代:支持多域名
Context上下文不仅仅需要物理上的隔离,也需要逻辑上的隔离,如app1.example.com访问context1,app1.test.com访问context2.
此时的架构应该是这样的,host可以支持多个context。
5.总结:
- web服务器的组件由server-->满足功能
- server+connector+Container-->职责分离
- server+service+connector+Container-->支持多种协议
- server+service+connector+Container+context-->支持多个应用
- server+service+connector+Container+host+context -->支持多个域名的多个应用
其实就是一个分工组件细化的过程,类似于社会分工的细化,注意,Container在tomcat里也称作engine。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
IDEA部署JavaWeb项目到Tomcat服务器的方法
IDEA创建一个传统JAVA WEB项目(不使用maven构建) 方法一 File --> NEW --> Project --> Java (勾选Web Application) 方法二 File --> NEW --> Project --> Java Enterprise(勾选Web Application) IDEA部署JAVA WEB项目 IDEA 并非把项目放到 tomcat 的 webapp目录中,而项目还是在源项目目录中,IDEA采用了一种无入侵Tomc
-
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
遇到的问题 使用webpack打包vue后,将打包好的文件,发布到Tomcat上,访问成功,但是刷新后页面报404错. 在网上查找了一下,原来是HTML5 History 模式引发的问题,具体为什么,vue官方已经给出了解释,你可以看https://router.vuejs.org/zh-cn/essentials/history-mode.html 但是看完问题又来了,官方给出的解决方案中没有说tomcat下,怎么决解. 解决方案 根据官方给出的解决方案原理 你要在服务端增加一个覆盖所有情况的
-
Eclipse中导入Maven Web项目并配置其在Tomcat中运行图文详解
今天因为实习的关系需要讲公司已经开发的项目导入进Eclipse,而公司的项目是用Maven来构建的所以,需要将Maven项目导入进Eclipse下. 自己因为没有什么经验所以搞了得两个多小时,在这里和大家分享一下自己的经验已经在这之中遇到的一些问题. 首先我通过svn将公司的项目checkout到了本地. 因为Maven遵循的是规约比配置重要的原则,所以Maven项目的结构一般是进入目录后是一个pom.xml文件和一个src文件夹,当然可能还存在一些README之类的这些都不重要,最关键的就是p
-
在Tomcat中部署Web项目的操作方法(必看篇)
在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Manager Web应用程序 一:部署解包的webapp目录 将Web项目部署到Tomcat中的方法之一,是部署没有封装到WAR文件中的Web项目.要使用这一方法部署未打包的webapp目录,只要把我们的项目(编译好的发布项目,非开发项目)放到Tomcat的webapps目录下就可以了.如下图所示: 这时,打开Tomcat服务器(确保服务器打开),就可以在浏览器访问我们的项目了,如下
-
使用Maven tomcat:run命令启动web项目时修改默认端口的方法
在使用maven时,修改插件tomcat启动端口.一开始我在pom.xml配置文件里面修改,如下面所示: <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>9999&
-
Tomcat 中如何给 web 项目配置虚拟目录的方法
为什么要给 web 项目配置虚拟目录? 初学 JavaWeb 时,会发现只要我们把 web 项目放到 Tomcat 的 webapps 目录下,再通过 http://localhost:8080/项目名称/某个页面 就可以访问该网站了.可是这样并不符合规范,最好还是把 web 项目文件和 Tomcat 的安装文件分开.那如何实现这个要求呢?当然是给 web 项目配置虚拟目录啦. 如何给 web 项目配置虚拟目录? 前面已经说了,我们要把项目文件和 Tomcat 安装文件分离开.假设我们这里把
-
tomcat组件图解 一个web服务器的架构演化史
1. tomcat是谁? 2. tomcat可以做什么? tomcat是一个web容器,可以将web应用部署到tomcat,由它提供web服务,一个web容器中可以部署多个web应用,这些web应用可以是同一个域名,也可以是多个域名的服务. 3. tomcat有哪些组件 4.怎么快速理解这些组件呢? 我们可以假设我们来设计一个web容器,我们该什么设计? 第一代:接收请求,处理请求,返回结果集中到整个web容器中,如下图所示: 第二代 :连接管理和处理逻辑分开 使用过程中发现,每次都要打开soc
-
node学习笔记之读写文件与开启第一个web服务器操作示例
本文实例讲述了node读写文件与开启第一个web服务器操作.分享给大家供大家参考,具体如下: 读取文件 Node中的js 具有文件操作的能力 使用require 方法加载fs核心模块 * require是一个方法 * 他的作用就是用来加载模块的 * 在Node中,模块有三种: * 具名的核心模块,列如 fs.http * 用户自己编写的文件模块 * 相对路径必须加./ * 在Node中 ,没有核心作用域,只有模块作用域 * 外部
-
详解node.js创建一个web服务器(Server)的详细步骤
前言 在 node.js 中创建一个服务器非常简单,只需要使用 node.js 为我们提供的 http 模块及相关 API 即可创建一个麻雀虽小但五脏俱全的web 服务器,相比 Java/Python/Ruby 搭建web服务器的过程简单的很. http model 要想创建一个基于 node.js 的 web 服务器,你就必须使用 node.js 提供的 http 模块,node.js 中的 http 接口旨在支持传统上难以使用的协议的许多特性, 特别是,大块的.可能块编码的消息,接口永远不会
-
Erlang实现的一个Web服务器代码实例
转贴一个简单的Web服务器: httpd.erl %% httpd.erl - MicroHttpd -module(httpd). -author("ninhenry@gmail.com"). -export([start/0,start/1,start/2,process/2]). -import(regexp,[split/2]). -define(defPort,8888). -define(docRoot,"public"). start() ->
-
在IDEA 2020.3.1中部署Tomcat并且创建第一个web项目的过程详解
Tomcat介绍 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范.因为Tomcat 技术先进.性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前
-
如何用PHP来实现一个动态Web服务器
要是现实一个 web 服务器,那么就需要大概了解 web 服务器的运行原理.先从静态的文本服务器开始,以访问 web 服务器的1.html为例 1.客户端通过发送一个 http 请求到服务器,如果服务器监听的端口号是9002,那么在本机自身测试访问的地址就是http://localhost:9002/1.html. 2.服务器监听着9002端口,那么在收到请求了请求之后,就能从 http head 头中获取到请求里需要访问的 uri 资源在web 目录中的位置. 3.服务器读取需要访问的资源文件
-
Shell脚本实现的一个简易Web服务器例子分享
假设你想测试网页和一些CGI,而你又不想麻烦Apache安装完整的包.这个快速的shell脚本可能只是你所需要的东西. 简而言之,一个web服务器是一个应用程序,该应用程序将本地文本文件通过网络发送给客户的请求.如果你让另一个程序(例如inetd)处理网络情况下,web服务器可以减少到只有 cat "文件名"发送到stdout.当然,困难将提取部分文件名的HTTP请求字符串:任何一个Bash脚本无法轻易做到. 脚本 我们的脚本应该像其他任何脚本一样,加上一些定义: 复制代码 代码如下:
-
Go语言实现的一个简单Web服务器
Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务.同时使用这个包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和操作. http包建立Web服务器 复制代码 代码如下: package main import ( "fmt" "net/http" "strings" "log"
-
java实现一个简单的Web服务器实例解析
Web服务器也称为超文本传输协议服务器,使用http与其客户端进行通信,基于java的web服务器会使用两个重要的类, java.net.Socket类和java.net.ServerSocket类,并基于发送http消息进行通信. 这个简单的Web服务器会有以下三个类: *HttpServer *Request *Response 应用程序的入口在HttpServer类中,main()方法创建一个HttpServer实例,然后调用其await()方法,顾名思义,await()方法会在指定端口上
-
java使用socket实现一个多线程web服务器的方法
除了服务器类,还包括请求类和响应类 请求类:获取客户的HTTP请求,分析客户所需要的文件 响应类:获得用户请求后将用户需要的文件读出,添加上HTTP应答头.发送给客户端. 服务器处理类 package com.lp.app.webserver; import java.io.*; import java.net.*; //使用Socket创建一个WEB服务器,本程序是多线程系统以提高反应速度. class WebServer { public static String WEBROOT = "&
随机推荐
- 使用正则表达式屏蔽关键字的方法
- iOS中Navbar设置渐变色效果的方法示例
- VBS文本文件操作实现代码
- 浅谈java中math类中三种取整函数的区别
- java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)
- Java中基于maven实现zxing二维码功能
- ASP.Net MVC 布局页、模板页使用方法详细介绍
- 简单讲解Android开发中触摸和点击事件的相关编程方法
- 用PHP动态创建Flash动画
- js支持158、159开头的手机号的验证
- 快速解决进入fragment时不能弹出软件盘的问题
- 根据status信息对MySQL服务器进行优化
- react.js 父子组件数据绑定实时通讯的示例代码
- SQL Server中选出指定范围行的SQL语句代码
- 创建动态MSSQL数据库表
- 微博API常用方法总结(必看篇)
- C#中判断一个集合是否是另一个集合的子集的简单方法
- Java NIO深入分析
- 小程序实现抽奖动画
- collection集合体系与并发修改异常的解决方法