Tomcat与http协议知识点梳理

赶星而至 2021-01-21 20:15:05
http 协议 Tomcat 知识 知识点


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:\Users\zhy\Desktop\请求部分.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

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云