HTTP服务器
Http协议包介绍(超文本传输协议)【背】
http请求协议包
在浏览器准备发送请求时,创建一个Http请求协议包。
浏览器将请求信息以二进制形式保存在Http请求协议包各个空间。
由浏览器负责将Http请求协议包推送到指定服务端计算机。
http请求协议包按照自上而下划分,分为4个空间:
请求行:[
url:请求地址(http://192.168.100.2:8080/index.html)
method:请求方式(POST/GET)
]
请求头:[
请求参数信息【GET】
]
空白行:[
没有任何内容,起到隔离作用
]
请求体:[
请求参数信息【POST】
]
http响应协议包
Http服务器在定位到被访问的资源文件之后。
负责创建一个Http响应协议包。Http服务器将定位文件内容或则文件命令以二进制形式写入到Http响应协议包各个空间。
由Http服务器负责将Http响应协议包推送回
发起请求的浏览器上。
状态行:[
Http状态码
]
响应头:[
content-type: 指定浏览器采用对应编译器
对响应体二进制数据进行解析
]
空白行:[
没有任何内容,起到隔离作用
]
响应体:[
可能被访问静态资源文件内容
可能被访问的静态资源文件命令
可能被访问的动态资源文件运行结果
*****都是以二进制形式***
]
Tomcat内部文件结构
文件夹 | 作用 |
---|---|
bin | 管理命令 |
conf | 核心配置文件:server.xml |
lib | Tomcat依赖的jar包 |
logs | 日志信息 |
temp | 临时文件 |
webapps | 每次收到请求,默认在这个文件夹下查找文件。 |
work | 工作空间,处理jsp文件 |
网站内部结构
- 网站内部结构
src
:存放作为动态资源文件的Java文件。web
:存放静态资源文件、jar包、配置文件WEB-INF
:放jar包和配置文件lib
:存放依赖的jar包web.xml
:通知Tomcat当前哪些Java类是动态资源文件
http状态码
介绍:
-
由三位数字组成的一个符号。
-
Http服务器在推送响应包之前,根据本次请求处理情况
将Http状态码写入到响应包中【状态行】上 -
如果Http服务器针对本次请求,返回了对应的资源文件。
通过Http状态码通知浏览器应该如何处理这个结果如果Http服务器针对本次请求,无法返回对应的资源文件
通过Http状态码向浏览器解释不能提供服务的原因
分类:(100—599;分为5个大类)
-
1XX(100)
最有特征 100;通知浏览器本次返回的资源文件,不是一个独立的资源文件,需要浏览器在接收响应包之后,继续向Http服务器索要依赖的其他资源文件。
-
2XX(200)
最有特征200,通知浏览器本次返回的资源文件是一个完整独立资源文件,浏览器在接收到之后不需要索要其他关联文件。(一切正常)
-
3xx(302)
通知浏览器本次返回的不是一个资源文件内容而是一个资源文件地址,需要浏览器根据这个地址自动发起请求来索要这个资源文件
8 response, sendRedirect("资源文件地址") // 写入到响应头中location // 而这个行为导致Tomcat将302状态码写入到状态行
-
4XX
404:通知浏览器,由于在服务端没有定位到被访问的资源文件因此无法提供帮助
405:通知浏览器,在服务端已经定位到被访问的资源文件(Servlet)但是这个Servlet对于浏览器采用的请求方式不能处理
-
5XX
在服务端已经定位到被访问的资源文件(Servlet)这个Servlet可以接收浏览器采用请求方式,但是Servlet在处理请求期间,由于Java异常导致处理失败。
Tomcat提一下的点
启动/关闭Tomcat
启动:运行bin下的startup.bat
关闭:运行bin下的shutdown.bat。关闭时要关到抛异常!(运行2次)
idea中调试
红线处做出如下选择,可以在不重启服务的情况下,应用代码的更新。
classes代表动态资源文件,resources代表静态资源文件。
tomcat中web.xml的细节
-
tomcat通过读取web.xml文件来判断项目中有哪几个servlet实现类(动态资源)
-
tomcat只在启动时读取一次web.xml文件
情况下,应用代码的更新。
classes代表动态资源文件,resources代表静态资源文件。
tomcat中web.xml的细节
-
tomcat通过读取web.xml文件来判断项目中有哪几个servlet实现类(动态资源)
-
tomcat只在启动时读取一次web.xml文件
-
所以在创建了一个新servlet时,一定要重启tomcat(上面的自动更新方式无效)。