Tomcat与http协议知识点梳理

Tomcat与http协议

资源分类

  • 静态资源

    • 网站中提供给人们展示的资源是一成不变的,也就是说不同人或者在不同时间,看到的内容都是一样的

    • 例如:我们看到的新闻,网站的使用手册,网站功能说明文档等等

    • 作为开发者来说,我们编写的 HTML、CSS、JavaScript 都属于静态资源

    • 注意:这里说的是js文件本身属于静态资源,但是js可以实现界面动态效果

  • 动态资源

    • 网站中提供给人们展示的资源是由程序产生的,在不同的时间或不同的人由于身份的不同,所看到的内容是不一样的

    • 例如:我们在12306上购买火车票,火车票的余票数由于时间的变化,会逐渐的减少,直到最后没有余票。

    • 作为开发者来说,我们编写的 JSP、Servlet 等都属于动态资源

系统结构

基础结构划分
  • C/S结构

  • B/S结构

区别:

  • 第一:硬件环境不同,C/S通常是建立在专用的网络或小范围的网络环境上(即局域网),且必须要安装客户端。而B/S是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行。

  • 第二:C/S结构比B/S结构更安全,因为用户群相对固定,对信息的保护更强。

  • 第三:B/S结构维护升级比较简单,而C/S结构维护升级相对困难

优劣:

  • C/S:是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。

  • B/S:总体拥有成本低、维护方便、 分布性强、开发简单,可以不用安装任何专门的软件就能 实现在任何地方进行操作,客户端零维护,系统的扩展非常容易,只要有一台能上网的电脑就能使用。

技术选项划分
  • Model1模型

  • Model2模型

  • MVC模型

  • 三层架构+MVC模型

部署方式划分

一体化架构,垂直拆分架构,分布式架构,流动计算架构,微服务架构。

 

常见服务器名称
服务器名称说明
weblogic 实现了javaEE规范,重量级服务器,又称为javaEE容器
websphereAS 实现了javaEE规范,重量级服务器。
JBOSSAS 实现了JavaEE规范,重量级服务器。免费的。
Tomcat 实现了jsp/servlet规范,是一个轻量级服务器,开源免费。

Tomcat

linux安装tomcat

1.将压缩包放到 /usr/local/tomcat

2.进入/usr/local/tomcat目录,解压Tomcat

cd /usr/local/tomcat tar -xvf apache-tomcat-8.5.32.tar.gz

3.进入 /usr/local/tomcat/apache-tomcat-8.5.32/bin

cd /usr/local/tomcat/apache-tomcat-8.5.32/bin

4.启动tomcat

方式1: sh startup.sh 方式2: ./startup.sh

5.修改防火墙的规则

方式1:service iptables stop 关闭防火墙(不建议); 用到哪一个端口号就放行哪一个(80,8080,3306...)

方式2:放行8080 端口 修改配置文件 cd /etc/sysconfig vi iptables 复制(yy , p) -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 改成 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT 重启加载防火墙或者重启防火墙 service iptables reload 或者 service iptables restart

Tomcat目录结构详解
  • bin:二进制文件目录

  • conf:配置文件目录

  • lib:运行时所需要的jar包

  • logs:日志目录

  • temp:临时文件目录

  • webapps:默认应用发布目录,非常重要,该目录有一个文件夹就代表一个java-web应用

  • work:工作目录

Tomcat启动异常问题
  • 第一个问题:启动一闪而过

    原因:没有配置环境变量

    解决办法:配置上JAVA_HOME环境变量(一定要确保自己的jdk路径是对的,并且路径不要到bin,是到jdk根路径)

    如果配置过JAVA_HOME还不行,就配置一个CTATLINE_HOME ,路径为tomcat根路径

  • 第二个:Address already in use : JVM_Bind

原因:端口被占用

解决办法:找到占用该端口的应用

使用cmd命令:netstat -a -o 查看pid 在任务管理器中结束占用端口的进程

  • 第三个:启动产生很多异常,但能正常启动

    原因:Tomcat中部署着很多项目,每次启动这些项目都会启动。而这些项目中有启动报异常的。

    解决办法:

    能找到报异常的项目,就把它从发布目录(webapps)中移除

    不能确定报异常的项目,就重新解压一个新的Tomcat
  • 第四个:其它问题

    例如:启动产生异常,但是不能正常启动。此时就需要解压一个新的Tomcat启动,来确定是系统问题,还是Tomcat的问题

    所以,此时就需要具体问题,具体分析,然后再对症解决

Tomcat乱码问题

问题描述:启动tomcat之后,控制台(命令行)出现乱码

问题解决:

  • 打开tomcat目录下conf/logging.properties文件

  • 修改如下:(将UTF-8改为gbk,因为cmd命令行窗口的字符集是gbk,所以要统一)

重新启动tomcat

HTTP协议

什么是Http协议?

HTTP的全称是:Hyper Text Transfer Protocol,意为 超文本传输协议。它指的是服务器和客户端之间交互必须遵循的一问一答的规则。形容这个规则:问答机制、握手机制。

它规范了请求和响应内容的类型和格式。

HTTP协议是由W3C组织管理和维护的。

HTTP协议相关说明

HTTP协议概念是客户浏览器和服务器一种一问一答的规则,那么必须要有问有答,而且要先问后答 但是我们使用<script>,<link><img>标签,没有手动发起请求,但是仍然能从服务器端拿到数据,原因就是:在浏览器遇到<script>,<link>,<img>标签时会自动发出请求。

消息头的共性分析

消息头名称首字母大写,多个单词每个单词的首字母都大写。 多个单词用-分隔 名称和值之间用冒号加空格分隔 多个值之间用逗号加空格分隔 两个头之间用回车分隔

请求详解

请求行:

内容说明
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(****) 会话管理相关,非常的重要。

请求体:

第一:只有post请求方式,才有请求的正文。get方式的正文是在地址栏中的。 第二:表单的输入域有name属性的才会被提交。不分get和post的请求方式。 第三:表单的enctype属性取值决定了请求正文的体现形式。概述的含义是:请求正文的MIME编码类型。

ENCTYPE取值请求正文体现形式示例
application/x-www-form-urlencoded key=value&key=value username=test&password=1234
multipart/form-data 此时变成了多部分表单数据。多部分是靠分隔符分隔的。 -----------------------------7df23a16c0210 Content-Disposition: form-data; name="username" test -----------------------------7df23a16c0210 Content-Disposition: form-data; name="password" 1234 -----------------------------7df23a16c0210 Content-Disposition: form-data; name="headfile"; filename="C:UserszhyDesktop请求部分.jpg" Content-Type: image/pjpeg -----------------------------7df23a16c0210
响应详解

响应行: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版本

响应正文

就和我们在浏览器上右键查看源文件看到的内容是一样的。

 

原文地址:https://www.cnblogs.com/859630097com/p/14310187.html