(一)Tomcat 详细介绍
Tomcat是一个免费的,开放源代码的Web应用服务器,是Apache软件基金会项目中的一个核心项目,由Apache ,Sun和一些公司以及个人共同开发而成,深受Java爱好者的喜爱,是一款比较流行的web应用服务器。
Tomcat由一系列的组件构成,其中核心的组件有三个:
- web容器:完成web服务器的功能。
- Servlet容器:名字为catalina,用于处理Servlet代码。
- 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请求过程
- 用户在浏览器中输入网址,请求被发送到本机端口8080,被在那里监听的 Connector获得。
- Connector 把该请求交给它所在的Service 的 Engine (Container)来处理,并等待Engine的回应。
- 请求在Engine、Host、Context和Wwrapper 这四个容器之间层层调用,最后在Servlet 中执行对应的业务逻辑、数据存储等。
- 执行完之后的请求响应在Context、Host、Engine容器之间层层返回,最后返回给Connector,并通过Connector 返回给客户端。
(二)Tomcat安装
(一)Tomcat 详细介绍相关推荐
- Tomcat详细介绍和使用总结
文章目录 Tomcat 介绍 Tomcat作为Servlet容器的基本功能 Tomcat的组成结构 Tomcat的工作模式 Tomcat 版本 Tomcat 安装和配置 安装 配置 启动与关闭 Tom ...
- tomcat详细介绍
tomcat是java语言编写的软件 JVM是java虚拟机的缩写 java虚拟机本质就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令. java语言的可移植性正是建立在j ...
- tomcat的服务器目录在哪个文件夹,Tomcat目录结构详细介绍
打开tomcat的解压之后的目录可以看到如下的目录结构: 1.Tomcat的bin目录: bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以. ...
- Hadoop生态系统的详细介绍
hadoop生态系统的详细介绍 简介 Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算.今 ...
- Dockerfile 文件结构、docker镜像构建过程详细介绍
[Docker那些事]系列文章 Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT指令的区别 构建Docker镜像指南,含实战 ...
- chromedriver放在哪个目录下_python | Linux各目录及每个目录的详细介绍 - MR_黄Python之路...
[常见目录说明] 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里. /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目录,是用户主目录的基点 ...
- tomcat详细日志配置
tomcat详细日志配置 在server.xml里的<host>标签下加上 <Valve className="org.apache.catalina.valves.Acc ...
- Cookie和Session的详细介绍和使用规范
Cookie和Session的详细介绍和使用规范 Cookie的由来(浏览器端的会话技术--保存数据技术) Cookie的需求分析 场景: 现象:进入淘宝的登陆页面,显示了我上次登录的用 ...
- hadoop生态系统的详细介绍-详细一点
前提 日常喜欢看一些微信分享的好文,总结下来,可以作为过滤器吧(节约更多人的时间!),在这里引用的是别人的文章!对原文的作者表示感谢!确实写的很好! hadoop生态系统的详细介绍 简介 Hadoop ...
最新文章
- checkbox管理
- 使用named_mutex实现读写锁,实现进程之间读共享写独占
- [原]逆向iOS SDK -- _UIImageAtPath 的实现(SDK 5.1)
- 景观连接度指数怎么算都是0的解决方案
- vue根据条件显示字段
- 华为无盘服务器,无盘服务器操作系统
- CentOS 7.5 安装Zabbix4.4.4和Grafana6.4.4监控系统安装
- NRF24L01入门总结
- 现在有什么好用的切换ip工具吗?
- android浏览器实现收藏功能,Lua布局fusionapp 收藏功能与历史记录实现
- 十年育林,百度NLP已枝繁叶茂
- STM32CubeMX和STM32CubeIDE组合,定义STM32开发新方式
- 解决了.Net 2003“试图调试项目时发生错误”的问题
- #超全#行人重识别数据集整理,附下载链接和介绍
- 成功的背后--原CSDN国服排名第一大神逆袭之路
- eclipse jee配置tomcat
- 降调软件测试自学,普通话测试及变调.ppt
- 在线教育陷入停滞期 内容不力难盈利
- 【动态规划】股票买入卖出点计算
- 剑指offer笔记(九)栈和队列
热门文章
- 四大组件之Service(一)-双子座的Service-Start Service与Bind Service
- java根据汉字获取拼音的方法
- STM32F1与STM32CubeIDE编程实例-设备驱动-EEPROM-AT24C256驱动
- java身份证号码校验工具类
- spacevector=[] matlab,向量空间模型(vectorspacemodel)
- 会议笔记_一种带时间约束的影响力最大化算法
- 生产质量分析方案,实现车企“质量”和“销量”共赢!
- 酷比魔方i7手写版linux网卡驱动,酷比魔方i7手写板,Ubuntu 18.04,RTL8723BU wifi驱动安装...
- 2017回顾优米网历年定位
- stata15无法识别调用plus外部命令,报错:command XXX is unrecognized如何解决?