热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

终于有人把Tomcat讲清楚了,通透!

在目前流行的互联网架构中,对一个应用来说,Tomcat是首,SSM是中,JVM是尾,我们通常对于SSM是比较了

在目前流行的互联网架构中,对一个应用来说,Tomcat是首,SSM是中,JVM是尾,我们通常对于SSM是比较了解的,而忽略了首尾,而Tomcat在目前的网络编程中是举足轻重的,但是我们其实对Tomcat中很多原理性的东西不太了解,如果能够掌握Tomcat的原理,那么是非常有用的,比如:


  • 如果我们能弄清楚Tomcat和Socket、Tcp之间的关系,我们就能明白Tomcat为什么会出现端口冲突。
  • 如果我们能准确的知道Tomcat中部署一个项目的N种方式,那么就能在工作中更加得心应手。
  • Tomcat中热部署和热加载的区别是什么,到底是如何实现的,弄明白实现原理,能很大程度上提高Tomcat的运行效率。
  • Tomcat到底是如何处理一个请求的?这对于针对Tomcat的性能调优是必备的。
  • 目前Spring Boot和Dubbo等框架中都是使用的内嵌Tomcat,那么一个内嵌的Tomcat到底是如何运行的?
  • Tomcat的架构设计其实非常优秀的,如果能明白Tomcat为什么要那么设计,那么对于Tomcat的原理和自己的架构设计思维都能有很大提升。
  • JSP虽然过时,但是它的底层实现原理和思路依然保存着,那么Tomcat中到底是如何实现JSP功能的?

分享给大家这套tomcat视频讲解教程,新手可以看看,讲解很详细。


在线观看:

Javaweb开发视频教程之Tomcat9配置和使用_动力节点_哔哩哔哩_bilibili​www.bilibili.com

资料下载:

Tomcat服务器视频教程全套免费下载【适合零基础入门】 - 动力节点​www.bjpowernode.com



Tomcat是什么?

Tomcat是web容器。你在做web项目时,多数需要http协议,也就是基于请求和响应,比如你在百度输入一行内容搜索,那么百度服务器如何处理这个请求呢,他需要创建servlet来处理,servlet其实就是java程序,只是在服务器端的java程序servlet通过配置文件拦截你的请求,并进行相应处理,然后展示给你相应界面,那么servlet如何创建?

这时候tomcat用到了,它就是帮助你创建servlet的东西,所以也称web容器,没有它,没法运行web项目。相对应的web容器有很多,比如JBOSS,WEBLOGIC等。

Tomcat是一个应用服务器。他可以运行你按照J2EE中的Servlet规范编写好的Java程序。

简单的说它是一个Web网站的运行容器,把你写好的网站放进去就可以运行。


一、网络协议/网络协议包

在互联网通信过程中,在网络传递信息都是二进制形式。

此时接收方接收到信息之后必须进行一次解析。

但是由于传递信息量相对较大,增加接收方解析难度

浏览器: http://localhost:8080/myWeb/index.html

1010101010101010101011111000110101010

网络协议包:

一组有规律二进制数据,存在固定空间。在指定空间下专门存放指定数据,降低接收方解析难度

0000 服务端计算机ip地址 0000 Http服务器端口号 0000 资源文件 0000


二、Http网络协议包:

在B/S通信结构下,浏览器发送请求信息以及服务端返回资源文件内容都是通过Http网络协议包进行传递


三、Http网络协议包分类:

1.Http请求协议包:

1)在浏览器准备发送请求时,负责生成一个Http请求协议包

2)在浏览器准备发送请求时,负责将请求信息写入Http请求协议包

3)由浏览器负责推送Http请求协议包

2.Http响应协议包:

1)在Http服务器准备返回结果时,负责生成一个Http响应协议包

2)由Http服务器调用输出流将文件内容(文字,数字,像素,帧,命令)以二进制形式写入到Http响应协议包

3)由Http服务器负责将Http响应协议包推送回发起请求的浏览器


四、Http请求协议包内部结构:自上而下分为4层结构 【背】

1.请求行:

【url:请求地址method:请求方式】

2.请求头:

【如果浏览器以GET方式发送请求请求参数存放在请求头】

3.空白行:

【】

4.请求体:

【如果浏览器以POST方式发送请求请求参数存放在请求体】

五、Http响应协议包内部结构 自上而下分为4层结构 【背】

1.状态行:

【Http状态码】

2.响应头:

【content-type:指定浏览器使用对应解析器或则编译器对返回二进制数据进行解析或则编译】

3.空白行:

【】

4.响应体:

【本次索要文件内容(二进制形式存放)】

六、Http服务器介绍

1.所有的Http服务器都是由java编程语言开发应用程序

2.Http服务器可以接收由浏览器发动的Http请求协议包

3.Http服务器可以解析Http请求协议包二进制数据了解用户请求

4.Http服务器可以自动定位被访问的资源文件

5.Http服务器可以自动将被访问文件内容或则文件运行结果通过输出流以二进制形式写入到Http响应协议包中响应体

6.Http服务器可以自动将Http响应协议包推送回发起请求的浏览器


七、Http服务器分类:

1.功能最强---Websphere

2.功能最新---GlassFish

3.最轻量级---tomcat


八、tomcat服务器安装与配置

1.tomcat服务器下载: tomcat.apache.org/

2.tomcat安装:tomcat9.0版本是绿色免安装版

3.tomcat配置:

1)JAVA_HOME环境变量: 用于向tomcat服务器提供当前计算机中JDK位置

JAVA_HOME=C:\Program Files\Java\jdk1.8.0_101

2)CATALINA_HOME环境变量:通知本次启动的tomcat服务器存放位置

CATALINA_HOME=C:\tomcat9

九、tomcat服务器启动与关闭

1.tomcat服务器启动时生成一个管理对象。如果手动关闭,时间一长。

这个管理对象将脱离管理,导致无法再次启动tomcat

2.管理命令位置: tomcat安装地址/bin文件夹

3.启动tomcat命令: startup

4.关闭tomcat命令: shutdown


十、tomcat服务器启动失败原因

1.忘记配置JAVA_HOME

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

2.JAVA_HOME地址写错了

The JRE_HOME environment variable is not defined correctly
This environment variable is needed to run this program

3.CATALINA_HOME地址写错了

The CATALINA_HOME environment variable is not defined correctly
This environment variable is needed to run this program

4.tomcat服务器默认端口号8080.一个计算机只能启动一个tomcat

java.net.BindException: Address already in use: JVM_Bind

十一、tomcat服务器工作文件

1.bin : tomcat管理命令

2.conf:tomcat配置文件。server.xml是tomcat核心配置文件

3.lib: tomcat应用程序在运行时依赖的第三方jar

4.logs:存放tomcat运行日志

5.temp:存放tomcat运行时生成临时文件

6.webapps:tomcat在默认情况下,接收到请求之后到webapps下定位资源文件

7.work: tomcat在默认情况下,在work文件下将jsp文件编辑为java文件并编译为class文件


十二、第一次BS通信模拟

1.在webapps下创建一个网站

网站:网络资源站点,存放可以被浏览器访问的资源文件

2.启动tomcat

3.启动浏览器,向tomcat发起请求

在地址栏输入资源文件定位命令(url):

http://服务端计算机IP地址:http服务器端口号/网站名/资源文件名.后缀名

http://localhost:8080/myWeb/one.html


十三、标准网站内部结构

|

|_________src文件夹:java文件和动态资源文件

|

|_________web文件夹 :静态资源文件/第三jar/网站核心配置文件

|

|________WEB-INF: 第三jar/网站核心配置文件

|

|______lib文件夹(手动) 第三jar

|

|______web.xml 网站核心配置文件

|

|______________静态资源文件


十四、模拟tomcat调用动态资源文件

1.对于一个网站来说,tomcat只能调用网站中Servlet接口实现类

2.Tomcat接收到请求之后,根据url中文件名称定位被访问Servlet接口实现类。

1)Tomcat通过Class.forName方法将硬盘类文件加载到内存

2)Tomcat通过反色机制通知JVM创建当前类的实例对象

3)Tomcat通过实例对象调用init方法来实现对实例对象初始化操作

4)Tomcat通过实例对象调用service方法处理当前用户请求

5)Tomcat通过输出流将service方法处理结果写入到响应体交还给发起请求浏览器


十五、适配器设计模式

1.作用: 降低接口实现类开发难度的。可以让接口实现类自由选择接口中方法重写

2.解决方案:

1)使用抽象类实现接口,对接口中不受欢迎抽象方法进行空实现

2)创建接口实现类 继承与抽象类,此时接口实现类开发时只要重写感兴趣方法


十六、模板设计模式:

1.作用:子类只需要考虑相关方法重写实现,不需要考虑方法调用场景。子类方法调用规则由父类负责控制


推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • springboot项目引入jquery浏览器报404错误的解决办法
    本文介绍了在springboot项目中引入jquery时,可能会出现浏览器报404错误的问题,并提供了解决办法。问题可能是由于将jquery.js文件复制粘贴到错误的目录导致的,解决办法是将文件复制粘贴到正确的目录下。如果问题仍然存在,可能是其他原因导致的。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
author-avatar
手机用户2502908547
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有