Http网络协议与Tomcat服务器

HTTP网络协议包

Hypertex.jpg

网络协议包

  • 在网络中传递信息都是以二进制的形式存在的

  • 接收方【浏览器/服务器】在接收信息,要做的第一件事就是将二进制数据进行编译成:文字、图片、视频、命令

  • 传递信息数据量往往比较巨大,导致接收方很难在一组连续的二进制数据中得到对应数据

    比如 浏览器发送一个请求:http://localhost:8080/index.html

    这个请求信息以二进制形式发送00010100101110101010100110

    HTTP服务器很难从二进制数据中得到相关信息

  • 网络协议包是一组有规律的二进制数据,在这组数据存在了固定的空间。每一个空间专门存放特定的信息,这样接收方在接收网络协议包之后就可以到固定的空间得到对应的信息,网络协议包的出现极大降低了接收方对接收二进制数据的编译难度

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

网络协议包分类:

基于B/S结构下的互联网通信过程中,所有在网络中传递的信息都是保存在Http网络协议包中

Http请求协议包:

在浏览器准备发送请求时,负责生成一个Http请求协议包 在浏览器准备发送请求时,负责将请求信息以二进制形式写入Http请求协议包中的各个空间 由浏览器负责推送Http请求协议包到服务端计算机

Http响应协议包:

在Http服务器定位到被访问的资源文件之后,准备返回结果时,负责生成一个Http响应协议包 由Http服务器调用输出流将文件内容(文字,像素,数字,帧,命令)以二进制形式写入到 Http 响应协议包中的各个空间 最后由Http服务器负责将Http响应协议包推送回发起请求的浏览器中

请求协议包的内部结构

按照自上而下划分,分为四个空间

请求行

URL:请求地址,例如( http://localhost:8080/index.html

method:请求方式(GET、POST)。注意这里请求方式别和两种请求参数信息搞混了!方式是方式,信息参数是信息参数

请求头

请求参数信息【GET】

空白行

不存放任何内容,起到隔离请求头和请求体的作用

请求体

请求参数信息【POST】,比如密码之类的

响应协议包的内部结构

按照自上而下划分,分为四个空间

状态行

在Network中 -----> Headers中 -----> General 里的 Status Code属性

Status Code:代表 HTTP 状态码

响应头

在Network中 -----> Headers中 -----> Response Headers 里的 content-type 属性

content-type:内容类型属性,指定浏览器采用何种编译器对响应体的二进制数据进行解析

因为有太多种类型的文件了,有图片img 有javascript,有css,有文本……所以不同类型的数据有不同类型的编译器进行对二进制数据解析

空白行

不存放任何内容,起到隔离响应头和响应体的作用

响应体

可能是被访问的静态资源文件内容

可能是被访问的静态资源文件命令

可能是被访问的动态资源文件的运行结果

(上面的内容在响应体里,都是以二进制形式存在)

常见Http服务器分类

  • 功能最强 — > Websphere

    这是 IBM 工资研发的一个 HTTP 服务器,目前主要应用于电子商务应用领域,Webphere 可以创建电子商务站点,吧应用扩展到联合的移动设备,整合已有的应用并提供自动业务流程。主要安装在Linux 系统中,不适合安装在 Windows系统上

    虽然功能强大,但也需要消耗计算机大量的资源,所以一般装在Linux中,在Windows中跑起来是很慢的,所以这个服务器是企业级的

  • 功能最新 — > GlassFish

    这个服务器是SUN公司开发的一个免费开源,基于Java EE 应用服务器,是SUN公司在未来互联网通信应用领域中的重要服务器,具有轻便的WEB容器的所有优点,他和Tomcat 一样是优秀的 Servlet 容器,Glassfish 在静态文件传输方面的性能比 Tomcat 要强得多,未来有可能代替 Tomcat 服务器

    如果以后使用Glassfish ,那么上面所学的互联网通信流程可能会全部作废。重新洗牌

  • 最轻量级 — > Tomcat

Tomcat 服务器是 Apache 软件基金会中的一个核心项目,由Java 技术开发而成,由 Apache 、Sun 共同开发而成,由于有了Sun 的参与和支持,最新的 Servlet 和JSP 规范总是能在Tomcat 中得到完美的体现,因为 Tomcat 技术先进、性能稳定、而且免费,因而神兽 Java 爱好者的喜爱,并且得到了绝大部分软件开发商的认可,成为目前最流行的 HTTP 覅委屈哦。属于轻量级应用服务器 ,在中小型系统和并发访问用户不是很多的场合下呗普遍使用,而且是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台计算机配置好 Apache 服务器,可利用它相应 HTML(标准通用语言下的一个应用) 页面的访问请求。从而可以在自己的计算机上模拟基于 B/S 结构的互联网通信流程

HTTP状态码

介绍:

  • 由三位数字组成的一个符号

  • HTTP 服务器在推送响应包之前,根据本次请求处理的情况将HTTP状态码写入响应包中的【状态行】上

  • 如果HTTP服务器针对本次请求,返回了对应的资源文件,通过HTTP服务器状态码通知浏览器该如何处理这个结果

    如果HTTP服务器针对本次请求,无法返回对应的资源文件,通过HTTP状态码向浏览器解释不能提供服务的原因

分类

组成:100 ~ 599,分为五个大类

1XX

最有特征的 100 :通知浏览器本次返回的资源文件不是一个独立的资源文件,需要浏览器在接收响应包之后,继续向HTTP服务器索要依赖的其他资源文件

2XX

最有特征的 200 :通知浏览器本次返回的资源文件是一个完整独立的资源文件,浏览器在接收到之后不需要索要其他关联文件

3XX

最有特征的 302 :通知浏览器本次返回的不是一个资源文件内容,而是一个资源文件地址,需要浏览器根据这个地址自动发起请求来索要这个资源文件

  • response.sendRedirect("资源文件地址");

    写入到响应头中的 location , 而这个行为导致Tomcat 将 302 状态码写入到状态行

4XX

404 :通知浏览器,由于在服务端没有定位到被访问的资源文件,因此无法提供帮助

405 :通知浏览器,在服务端已经定位到被访问的资源文件(Servlet)但是这个Servlet 对于浏览器采用的请求方式不能处理

5XX

500 :通知浏览器,在服务端已经定位到被访问的资源文件(Servlet)。这个Servlet 可以接收到浏览器采用的请求方式,但是Servlet 在处理请求期间,由于Java 异常导致处理失败!

Tomcat服务器内部文件结构

7VQYIMMCNI.png

bin 文件夹

tomcat 服务器的管理命令的中心,比如启动命令、关闭命令、安装卸载之类的

conf 文件夹

tomcat 中的核心配置文件的位置。这些文件一种是 .properties文件,另一种是 .xml文件

其中最核心的就是server.xml文件

做高并发模拟的时候要对里面相关的属性进行修改

lib 文件夹

提供的是 tomcat 工程运行时相应功能所需要的 jar 包。

logs 文件夹

tomcat 在运行时会自动产生一些日志信息,这些日志信息是给软件工程师中的运维工程师看的。

运维工程师通过这些日志信息来了解 tomcat 服务器的一些工作情况。并对工作中产生的异常做出相应的处理

temp 文件夹

tomcat 在运行时会生成一些 .tmp 临时文件,在tomcat工作完毕后,会负责吧这些 tmp文件进行销毁

webapps文件夹

基于资源文件的安全性、资源文件的定位速度。tomcat服务器就给自己定了一个默认的位置。

每当 tomcat 收到浏览器的请求之后,它会默认去webapps中找对应的资源文件。如果没找到的话呢,tomcat就会告诉浏览器:“ 俺这儿没有这个东西 ”

work文件夹

work文件夹是Tomcat服务器的工作空间

这个文件夹的工作是把 jsp 的文件编辑为一个 java 文件,并把它编译为一个类文件( .class)。

然后new出一个对象,调用里面的方法来进行处理

模拟互联网通信

1、在tomcat 安装地址的webapps文件夹中创建一个网站 叫:myweb(啥名字都行,网站只不过是个文件夹)

犹如 java 工程:其实就是一个文件夹,里面放着各种各样的文件,我们把这样的文件夹叫做java工程

犹如数据库:其实也就是一个文件夹,里面放着各种的表文件,我们把这种存放着表文件的文件夹叫做数据库

所以网站也并不神奇,他只是一个文件夹而已,文件夹里放着的是可以被 http 服务器所调用的静态文件和动态文件。

2、把一个静态资源文件添加到网站中

3、启动 tomcat

  • 启动 tomcat 服务器的命令:startup
  • 关闭 tomcat 服务器的命令:shutdown

注意:打开服务器时记得要关上,如果不关上,下次是不能成功启动的。而且 tomcat 窗口在浏览器向tomcat服务器索要资源文件时,不能最小化,更不能关闭

使用shutdown关闭服务器时,如果没抛出异常,要连续使用几次,直到抛出异常为止,这才算关死

3.1、用 IDEA 启动 Tomcat

RUN方式启动

用 IDEA 启动 tomcat 时,如果用 RUN,要求在 tomcat 运行时,所管理的网站里的文件内容是不能被修改的,所以想中途加一个或者删除一个文件,是不行的

debug 方式启动

Tomcat 服务器所管理的网站的内容可以实时发生修改的,在平时开发时,自然要反复调试,所以一般使用 debug 的方式启动 Tomcat

4、启动浏览器,命令浏览器向 tomcat 索要静态资源文件

URL格式:网络协议包://服务端计算机IP地址:Http服务器端口号/网站名/资源文件

http://localhost:8080/myweb/mm.jpg

IDEA配置管理Tomcat

Module 中有两个文件夹,一个是 src、一个是 web。只有JavaEE才能创建这个 Java Enterprise 的 Module

src 下:

专门放关于java类的动态资源文件

web 文件夹下的【WEB-INF】文件夹:

  • 第一,放网站运行时所需要的 jar 包(比如MySQL的包也在这里放)

    注意,jar 包需要自己在WEB-INF文件夹中建一个【lib】文件夹,然后 jar 包扔里面

    步骤,file--->Project Structure--->Modules--->右边栏有个加号,自己选

  • 第二,放网站的核心配置文件,web.xml

web文件夹下

放静态资源文件

把一个网站交给 Tomcat 管理,叫做发布网站

猜你喜欢

转载自juejin.im/post/7096713517469794311