Tomcat&Http协议
Tomcat&Http协议
1.web资源
web在计算机领域指网络,我们可以在网络中获取各种资源,资源的存放之处就是网站。这些网站中的资源,可以分为静态和动态资源。
-
静态资源:
静态资源指,网站中提供给人们的一成不变的资源,如新闻,各种文档等,作为开发者,html,css,js,图片,多媒体资料等都成为静态资源。
-
动态资源:
动态资源指,网站中提供给人们展示的资源是由程序产生的,在不同时间或者权限不同的人,所看到的内容都是不一样的,比如编写的jsp,servlet,php等都是动态资源,也可以说是逻辑代码。
2.系统结构
在Java工程中,无论是产品还是项目都有系统架构。
- 基础结构:C/S结构,B/S结构
- 技术选型划分:MVC模型和三层架构
- 部署方式划分:一体化架构,垂直拆分架构,分布式架构,微服务架构
2.1 C/S架构
客户端——服务器模式。
2.2 B/S架构
浏览器——服务器模式
2.3 两种架构比较
两种结构的区别
第一:硬件环境不同,C/S通常是建立在专用的网络或小范围的网络环境上(即局域网),且必须要安装客户端。而B/S是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行。
第二:C/S结构比B/S结构更安全,因为用户群相对固定,对信息的保护更强。
第三:B/S结构维护升级比较简单,而C/S结构维护升级相对困难。
优劣
1 C/S:是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。
2 B/S:总体拥有成本低、维护方便、 分布性强、开发简单,可以不用安装任何专门的软件就能 实现在任何地方进行操作,客户端零维护,系统的扩展非常容易,只要有一台能上网的电脑就能使用。
3.Tomcat
服务器可以指性能较高的特殊计算机,也可以指用于部署网站的应用。一般说的服务器是指web服务器,它的本质就是一个软件,作用就是发布应用。
服务器名称 | 说明 |
---|---|
weblogic | 实现了javaEE规范,重量级服务器,又称为javaEE容器 |
websphereAS | 实现了javaEE规范,重量级服务器。 |
JBOSSAS | 实现了JavaEE规范,重量级服务器。免费的。 |
Tomcat | 实现了jsp/servlet规范,是一个轻量级服务器,开源免费。 |
3.1 Tomcat各个版本所需要的支持
3.2 Tomcat目录结构详解
3.3 安装Tomcat过程中可能出现的问题
-
一闪而过, 因为JAVA_HOME没有配置好
-
端口被占用:
- 杀死那个占用端口的进程
- cmd —> netstat -ano 查进程编号
- 打开任务管理器, 找到进程编号对应的程序结束掉即可
- 修改自己的端口, 在conf/server.xml中
注意: http协议的默认端口是80
- 杀死那个占用端口的进程
3.4 在Tomcat中发布项目的三种方式
-
直接将项目拷贝到Tomcat的webapps目录中**(最常用)**
- 优点:非常简洁
- 缺点:项目较大的话,需要较长时间拷贝
- 解决方案:将项目打成war包,Tomcat可以自动解析war包
-
在Tomcat中的conf/server.xml中添加项目位置,需要在server.xml的标签内添加如下内容:
(不常用)
path(虚拟路径):配置真实位置的别称, 起别称,是因为项目要通过浏览器访问,而浏览器不能输入盘符。
docBase:配置项目的真实位置。
- 缺点:server.xml为Tomcat的核心配置,一旦修改错误会造成服务器崩溃。
-
在conf/localhost/catalina下创建任意名称的xml文件,这个xml的文件名就是访问项目的虚拟路径。(idea中自动创建)(较常用)
在xml中配置如下内容:
4.HTTP协议
HTTP的全称是:Hyper Text Transfer Protocol,意为超文本传输协议。指服务器和客户端之间交互必须遵循的的一问一答的规则。这个规则也称:问答机制,握手机制。HTTP协议是有W3C组织管理和维护
规范了请求和响应内容的类型和格式。
- 底层是基于tcp/ip
- 请求/响应模式,一次请求对应一次响应
- 默认端口是 80
- 无状态,多次请求之间互相不干扰
4.1 请求部分
- 请求行:永远位于请求的第一行
- 请求头:从第二行开始,到第一个空行结束
- 请求体:从第一个空行后开始,到正文结束
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4VeitD8-1597298164571)(C:\Users\lee\AppData\Roaming\Typora\typora-user-images\image-20200812164425091.png)]
- 请求行详解
请求行:GET /myapp/2.html HTTP/1.1
内容 | 说明 |
---|---|
GET | 请求的方式。(还有POST) |
/myapp/2.html | 请求的资源。 |
HTTP/1.1 | 使用的协议,及协议的版本。 |
- 请求头详解
内容 | 说明 |
---|---|
Accept | 告知服务器,客户浏览器所支持的MIME类型。 |
Accept-Encoding | 告知服务器,客户浏览器所支持的压缩编码格式。最常用的就是gzip压缩。 |
Accept-Language | 告知服务器,客户浏览器所支持的语言。一般都是zh_CN或en_US等。 |
Referer | 告知服务器,当前请求的来源。 只有当前请求有来源的时候,才有这个消息头。从地址栏输入的没有来源。 作用:1 投放广告 2 防盗链 |
Content-Type | 告知服务器,请求正文的MIME类型。 |
Content-Length | 告知服务器,请求正文的长度。 |
User-Agent | 浏览器相关信息 |
Connection: Keep-Alive | 连接的状态:保持连接 |
If-Modified-Since | 告知服务器,客户浏览器缓存文件的最后修改时间。 |
Cookie(**) | 会话管理相关,非常的重要。 |
-
请求正文详解
(1)只有post请求方式,才有请求的正文。get方式的正文在地址栏中。
(2)表单的输入域有name属性才会被提交,不分get和post的请求方式。
(3)表单的enctype属性取值决定了请求正文的体现形式,概述的含义是:请求正文的MIME编码类型。
内容 | 说明 |
---|---|
Accept | 告知服务器,客户浏览器所支持的MIME类型。 |
Accept-Encoding | 告知服务器,客户浏览器所支持的压缩编码格式。最常用的就是gzip压缩。 |
Accept-Language | 告知服务器,客户浏览器所支持的语言。一般都是zh_CN或en_US等。 |
Referer | 告知服务器,当前请求的来源。 只有当前请求有来源的时候,才有这个消息头。从地址栏输入的没有来源。 作用:1 投放广告 2 防盗链 |
Content-Type | 告知服务器,请求正文的MIME类型。 |
Content-Length | 告知服务器,请求正文的长度。 |
User-Agent | 浏览器相关信息 |
Connection: Keep-Alive | 连接的状态:保持连接 |
If-Modified-Since | 告知服务器,客户浏览器缓存文件的最后修改时间。 |
Cookie(**) | 会话管理相关,非常的重要。 |
4.2 相应部分
- 响应行:永远位于响应的第一行
- 响应头:从第二行开始,到第一个空行结束
- 响应体:从第一个空行后开始,到正文结束
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Ug4T3Se-1597298164574)(C:\Users\lee\AppData\Roaming\Typora\typora-user-images\image-20200812164705893.png)]
- 响应行详解
响应行:HTTP/1.1 200 OK
内容 | 说明 |
---|---|
HTTP/1.1 | 使用协议的版本。 |
200 | 响应状态码 |
OK | 状态码描述 |
常用状态码介绍:
状态码 | 说明 |
---|---|
200 | 一切都OK |
302/307 | 请求重定向(客户端行为,两次请求,地址栏发生改变) |
304 | 请求资源未发生变化,使用缓存 |
404 | 请求资源未找到 |
500 | 服务器错误 |
- 响应头详解
响应头 | 说明 |
---|---|
Location | 请求重定向的地址,常与302,307配合使用。 |
Server | 服务器相关信息。 |
Content-Type | 告知客户浏览器,响应正文的MIME类型。 |
Content-Length | 告知客户浏览器,响应正文的长度。 |
Content-Encoding | 告知客户浏览器,响应正文使用的压缩编码格式。常用的gzip压缩。 |
Content-Language | 告知客户浏览器,响应正文的语言。zh_CN或en_US等等。 |
Content-Disposition | 告知客户浏览器,以下载的方式打开响应正文。 |
Refresh | 定时刷新 |
Last-Modified | 服务器资源的最后修改时间。 |
Set-Cookie(*******) | 会话管理相关,非常的重要 |
Expires:-1 | 服务器资源到客户浏览器后的缓存时间 |
Catch-Control: no-catch | 不要缓存,//针对http协议1.1版本 |
Pragma:no-catch | 不要缓存,//针对http协议1.0版本 |
- 响应正文详解
就是服务器相应给浏览器的源文件
4.3 请求方式的区别
-
get
- 默认参数在请求行中,默认地址栏上显示
- 有大小写限制
- 较为不安全
-
post
- 默认参数在请求体中,,默认不会显示在地址栏中
- 没有数据大小限制(下载或者上传一定要使用post方式)
- 较为安全