tomcat是什么?Tomcat 下载、安装、配置图文教程
你用浏览器上网的所有操作,所有请求发送给服务器(tomcat),服务器通过请求,找相应的逻辑处理程序(jsp或servelet或java类,就是有关java语言的所有可以处理逻辑的代码,其中包括访问后台数据)然后通过你的需求,服务器把你需要的文字,图片,显示给你的页面
Tomcat是web容器。它的作用稍后给你解释。
你在做web项目时,多数需要http协议,也就是基于请求和响应,比如你在百度输入一行内容搜索,
那么百度服务器如何处理这个请求呢,他需要创建servlet来处理,servlet其实就是java程序,只是在服务器端的java程序,
servlet通过配置文件拦截你的请求,并进行相应处理,然后展示给你相应界面,那么servlet如何创建? 这时候tomcat用到了,
它就是帮助你创建servlet的东西,所以也称web容器,没有它,没法运行web项目。相对应的web容器有很多,
比如JBOSS,WEBLOGIC等。
Tomcat是一个应用服务器。他可以运行你按照J2EE中的Servlet规范编写好的Java程序。
简单的说它是一个Web网站的运行容器,把你写好的网站放进去就可以运行。
Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展,处理动态网页部分。
Eclipse+tomcat=网络应用,如JSP类应用
为了不让网络编程在自己看来是一个黑盒子
在学习tomcat和servlet,jsp之前,需要了解这些
一、tomcat是一个封装和实现了http传输协议的容器,那么http是什么?
http全称是超文本传输协议
即是指从万维网服务器端(http server端)传送超文本到本地浏览器的协议
它是基于安全连接tcp/ip协议产生的
所谓超文本传输,传输的即是html/css/js可视化前端代码
http的特点
1、socket是在底层封装了tcp/ip协议的java类
2、http也是基于tcp/ip协议的传输协议
3、如果尝试在socket中打开一个端口并等待,获取socket后输出这个socket对象通过字符流获取的请求,然后再在浏览器中输入127.0.0.1:portNum 会发现在控制台中输出了当前浏览器的配置信息,客户端ip地址等
4、简单的说,socket和http都是封装了ip/tcp协议,在使用时不需要去在意那些从物理层到网络层等的实现(TTL包头等),只需要进行业务数据的处理即可
5、那么http协议的三个特点,可以结合socket类的运行机制进行理解
A.无连接
结合socket进行理解,socket分为serversocket和socket,前者是服务器端的tcp接口,socket进行数据收发是监听机制,即服务器端的serversocket创建好了以后,会开放一个端口进行监听
它的传输是通过流进行传输的,客户端socket封装了一个输入流一个输出流,服务器端serversocket封装了一个输入流和一个输出流,两个流建立连接后,AtoB,BtoA进行消息发送,但是如果!如果在一次请求和回应之后关闭当前的流,会导致获取了一个socket请求就将当前监听端口关闭了
可以理解为http没有对数据进行循环监听和定时刷新验证的机制
http大概是同理的,它每一次在载入页面,或者说获取超文本数据时,没有一个登陆状态或者说没有一个定时刷新的机制向服务端请求刷新当前的数据,超文本数据获取了就获取,如果需要对页面的内容进行变更,需要再次根据url/ajax等再次进行请求
B.http是媒体独立的
只要客户端知道如何进行数据处理,理论上可以接受任何形式的数据,这个很好理解,在socket中,传输的媒介 是通过流实现的,流分很多种,但究其本质都是字节流的包装,传输数据时本身肯定还是以字节为单位的
C.http是无状态的
这一点其实有一点重复,是根据第一点引申出来的,你每一次通信都要重新建立连接,传输过来的超文本对于客户来说是可修改的透明的,每一次获取数据都要重新发送请求,那自然是无状态,
从这里大概可以猜测到比如网络游戏这一类需要保持连接的架构了,tcp/ip可以做成长连接,也可以做成短连接,但是长连接应该也是重复刷新的短连接吧,只要遵循tcp的长连接协议就可以保持登录状态,比如诸如java等语言对于长连接就封装了一个类来简单实现
还有一个有趣的事是作为客户端向服务器端发送时,每次发送的端口都不同,并且都是50000+
http报文格式
这是http请求报文格式
这是服务器响应消息格式
下面是我通过浏览器向socket发送url链接请求获取的Http请求头
二. 什么是tomcat
一般的B/S架构web工程结构为下图:
CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。(摘自百度百科)
可不可以说Tomcat就是实现了CGI接口的web应用开发的容器?
再直白一点,既然socket可以返回响应,那就也可以向客户端返回一个服务器相应的数据包,并且将业务需要的超文本内容放到其中,然后传输完成一次关一次流实现无连接双工通信。那么我也能做到B/S交互(事实上已经试验成功了)
但是这样做很麻烦,更何况在http1.1协议下,还需要考虑到安全问题对不同的请求进行不同的回复和内容细分,比如Get请求发送过来,总不可能瞎回一个POST请求的数据包吧,还有一个web项目的基础逻辑也需要遵守
等等
这些内容就放到tomcat里面自行给我们封装好了,并且还将请求和回应按照业务划分成了GET/POST等方法,但是其本质(无连接的双工TCP/IP通信)是不变的!
这是tomcat的文件结构
tomcat除了实现了http协议以外,
还针对javaweb项目做了很多业务优化,简单的说就是可以更好的管理java项目
比如
通过war包对工程jar包进行二次封装,区分公用lib文件和私有lib文件,多项目开发管理,JAVAWEB日志处理
等等
三、什么是Servlet
Servlet是一个独立的开发标准,不是强耦合在Tomcat中的jar包
JAVAEE是一个针对JAVA开发的B/S架构项目的框架,简单的说是一个jar包
servlet是其中的一个接口,业务定义为用来处理一部分页面业务同时也是作为service层和前端html页面交互的桥梁
其中包含的方法包括servlet生命周期,service服务,获取servlet配置信息
继承关系
GenericServlet抽象类继承了Servlet接口
实现了除Service()以外的方法
HTTPServlet继承了GenericServlet抽象类
将Service()方法细分为了doGet(),doPost(),doHead(),doPull()方法
不过除了doGet()和doPost(),其它几个和实现B/S交互业务不太相关
---------------------
Tomcat 下载、安装、配置图文教程
1.下载
官网:https://tomcat.apache.org/
在浏览器地址栏输入地址,进入下图页面。
点击下图红色标记处(笔者选择的Tomcat 9下载,读者可根据需要自行选择)
下图蓝色标记为绿色版(需要配置环境变量),红色标记为安装版。笔者选择绿色版下载(读者可根据需要自行选择)。
下载后,解压到C盘(可任意选择)。
2.配置环境变量
右键我的电脑,点击属性,然后按下图标记1,2,3依次进行。
接着按下图标记处顺序1,2,3执行。
2:变量名(CATALINA_HOME)
3:解压路径名(C:\apache-tomcat-9.0.0.M22)
启动Tomcat:
进入Tomcat目录,双击startup.bat。
上图界面代表启动成功,成功后不要关闭,否则就关掉了Tomcat。
测试Tomcat是否启动成功:
在地址栏输入http://locathost:8080/
若出现下图界面,则启动成功。
Tomcat9.0 安装与配置讲解完成……谢谢观看。
---------------------
tomcat是什么?Tomcat 下载、安装、配置图文教程的更多相关文章
- MySQL 5.7.33 超级详细下载安装配置测试教程(可以安装成功版)
目录 1.引言及注意事项 (1) 引言: (2) 注意: 2.MySQL下载 3.配置环境变量 4.配置my.ini文件(重点) 5.安装MySQL(重点) 6.设置密码 7.测试MySQL是否安装成 ...
- mysql5.7.17安装配置图文教程
My SQL的特点: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,M ...
- Tomcat服务器的安装配置图文教程(推荐)
现在将使用Tomcat的一些经验和心得写到这里,作为记录和备忘.如果有朋友看到,也请不吝赐教. 1.首先是Tomcat的获取和安装. 获取当然得上Apache的官方网站下载,开源免费,而且带宽也足够. ...
- Mysql教程:[1]下载安装配置详细教程
如果不小心你下载了免安装的mysql,那么你比较倒霉,你找不到setup文件,还得自己去配置很多东西,然后再使用命令安装.所以我今天呢写一篇教程,写的尽量详细,即便是菜鸟也能安装,我自己安装过很多遍了 ...
- linux 下ftp的安装配置 图文教程
0.安装ftp的前置条件是关掉SElinux # vi /etc/selinux/config 修改 SELINUX=” disabled ” ,重启服务器.若相同,则跳过此步骤. 1. 可先查看是否 ...
- Solidworks.2016.SP5下载安装破解图文教程
安装此软件一定要断网安装!!!下载完成后解压文件,打开破解文件夹,双击文件夹中的SolidWorksSerialNumbers2016.reg进行注册表注册,如下图. 解压软件安装包(或者将软件安 ...
- JDK下载安装与环境变量配置图文教程【超详细】
JDK下载安装与环境变量配置图文教程[超详细] 创建时间:2019年11月13日11时02分 文章目录 1. JDK介绍 1.1 什么是JDK? 1.2 JDK版本介绍 2. JDK下载与安装 3.w ...
- eclipse下配置安装ssm图文教程(web版)
eclipse下配置安装ssm图文教程(web版) 一.安装所需jar包 1.1 mybatis安装包 可以进入GitHub的https://github.com/mybatis/mybatis-3 ...
- 【转】Android Studio安装配置学习教程指南 下载和安装--不错
背景 相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Goo ...
随机推荐
- helm-chart5,模板和访问文件
提供的一些声明和使用命名模板段的操作: define在模板中声明一个新的命名模板 template导入一个命名模板 block 声明了一种特殊的可填写模板区域 首先,模板名称是全局的.如果声明两个具有 ...
- yield学习笔记
参考:http://www.dabeaz.com/finalgenerator/ from concurrent.futures import ThreadPoolExecutor import ti ...
- 微信小程序wx.showLoading
效果图: 代码: wx.showLoading({ title: '加载中...', }) wx.request({ url: '', success(res){}, fail(){}, comple ...
- systemverilog中实现饱和截位和饱和截位的分析
截位(rnd/prnd/floor):都是去掉低位数据的操作(去掉低位低精度的数据,或者说小数位,降低数据的精度) 饱和(sat/sym_sat):都是去掉高位数据的操作,(去掉无符号数高位的0,或者 ...
- 剑指offer——python【第23题】二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 首先要清楚,这道题不是让你去判断一个给定 ...
- Lambda查询
使用EF查询数据库,之前使用Linq表达式,现在改成另一个种方法查询:Lambda表达式 TestEntities db=new TestEntities(); ).FirstOrDefault(); ...
- 【OJ】抓牛问题
/* 农夫John的奶牛跑路了.将地图视作一条数轴,John的初始位置在s而奶牛的位置在t(0<=s,t<=100000).John可以花费一分钟的时间使自己作如下移动: 1 从点x移动到 ...
- delphi 自动获取串口
delphi 自动获取串口 https://blog.csdn.net/Nevermore_anger/article/details/79012875 版权声明:本文为博主原创文章,未经博 ...
- Python_对Excel表进行操作
1.使用Python统计Excel表中的行数 import xlrd # 计算一个工作簿中所有Sheet表的行数 def count_book(work_book): workbook = xlrd. ...
- Excel文件导入导出(基于Nodejs、exceljs)
Excel导入.导出是大多数项目的管理后台必备功能.几年来使用过多个该功能的实现包,最近一次开发该功能,突然发现一个人气极高(3000+)的包,这里记录一下使用方法. 大凡厉害的技术的文档咋一看都想字 ...