Tomcat 基础
1. web 概念
1). 软件架构
- C/S: 客户端/服务器端 ‐‐‐‐‐‐‐‐‐‐‐‐> QQ , 360 …
- B/S: 浏览器/服务器端 ‐‐‐‐‐‐‐‐‐‐‐‐> 京东, 网易 , 淘宝 , 传智播客官网
2). 资源分类
- 静态资源: 所有用户访问后,得到的结果都是一样的,称为静态资源。静态资 源可以直接被浏览器解析。
- 如: html,css,JavaScript,jpg
- 动态资源: 每个用户访问相同资源后,得到的结果可能不一样 , 称为动态资 源。动态资源被访问后,需要先转换为静态资源,再返回给浏览器,通过浏览器进行解析。
- 如:servlet/jsp,php,asp…
3). 网络通信三要素
- IP:电子设备(计算机)在网络中的唯一标识。
- 端口:应用程序在计算机中的唯一标识。 0~65536
- 传输协议:规定了数据传输的规则
- 基础协议:
- tcp : 安全协议,三次握手。 速度稍慢
- udp:不安全协议。 速度快
2. 常见的web服务器
1. web服务器概念
- 服务器:安装了服务器软件的计算机
- 服务器软件:接收用户的请求,处理请求,做出响应
- web服务器软件:接收用户的请求,处理请求,做出响应。 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
2.常见web服务器软件
- webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
- webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
- JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
- Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范 servlet/jsp。开源的,免费的。
Tomcat 目录结构
Tomcat 的主要目录文件如下 :
Tomcat 架构
1. Http工作原理
HTTP协议是浏览器与服务器之间的数据传送协议。 作为应用层协议,HTTP是基于TCP/IP 协议来传递数据(HTML文件、图片、查询结果等),HTTP协议不涉及数据包 (Packet传输,主要规定了客户端和服务器之间的通信格式
- 用户通过浏览器进行了一个操作,比如输入网址并回车,或者是点击链接,接着浏览 器获取了这个事件。
- 浏览器向服务端发出TCP连接请求。
- 服务程序接受浏览器的连接请求,并经过TCP三次握手建立连接。
- 浏览器将请求数据打包成一个HTTP协议格式的数据包。
- 浏览器将该数据包推入网络,数据包经过网络传输,最终达到端服务程序。
- 服务端程序拿到这个数据包后,同样以HTTP协议格式解包,获取到客户端的意图。
- 得知客户端意图后进行处理,比如提供静态文件或者调用服务端程序获得动态结果。
- 服务器将响应结果(可能是HTML或者图片等)按照HTTP协议格式打包。
- 服务器将响应数据包推入网络,数据包经过网络传输最终达到到浏览器。
- 浏览器拿到数据包后,以HTTP协议的格式解包,然后解析数据,假设这里的数据是 HTML。
- 浏览器将HTML文件展示在页面上。
2. Http服务器请求处理
浏览器发给服务端的是一个HTTP格式的请求,HTTP服务器收到这个请求后,需要调用服
务端程序来处理,所谓的服务端程序就是你写的Java类,一般来说不同的请求需要由不同 的Java类来处理。
- 图1 , 表示HTTP服务器直接调用具体业务类,它们是紧耦合的。
- 图2,HTTP服务器不直接调用业务类,而是把请求交给容器来处理,容器通过
Servlet接口调用业务类。因此Servlet接口和Servlet容器的出现,达到了HTTP服务器与
业务类解耦的目的。而Servlet接口和Servlet容器这一整套规范叫作Servlet规范。
Tomcat按照Servlet规范的要求实现了Servlet容器,同时它们也具有HTTP服务器的功
能。作为Java程序员,如果我们要实现新的业务功能,只需要实现一个Servlet,并把它
注册到Tomcat(Servlet容器)中,剩下的事情就由Tomcat帮我们处理了。
3. Servlet容器工作流程
当客户请求某个资源时,HTTP服务器会用一个ServletRequest对象把客户的请求信息封装起来,然后调用Servlet容器的service方法,Servlet容器拿到请求后,根据请求的URL和Servlet的映射关系,找到相应的Servlet,如果Servlet还没有被加载,就用反射机制创 建这个Servlet,并调用Servlet的init方法来完成初始化,接着调用Servlet的service方法 来处理请求,把ServletResponse对象返回给HTTP服务器,HTTP服务器会把响应发送给 客户端。