zoukankan      html  css  js  c++  java
  • 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版本

    响应正文

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

     

  • 相关阅读:
    正则正数,负数,整数,浮点数校验大全
    只能输入正整数的正则表达式及常用的正则表达式
    Java对返回参数进行处理(JSONObject,getJSONArray等)
    JAVA调用IReport模板生成PDF文件及常见的几个问题解决
    Oracle中关于to_date(),to_char(),to_number()函数的用法
    js将字符串中所有反斜杠替换成正斜杠/
    ext CSS样式
    oracle exist 语句
    【2021.06.12】前去上海市中心见朋友见闻
    牛客网刷题——20210307(刷题第一次)
  • 原文地址:https://www.cnblogs.com/859630097com/p/14310187.html
Copyright © 2011-2022 走看看