首页 > 其他分享 >XML,Tomcat,HTTP

XML,Tomcat,HTTP

时间:2025-01-19 22:29:21浏览次数:3  
标签:XML HTTP 请求 Tomcat 报文 服务器 目录 客户端

目录

    • 1.XML
      • XML的解析(使用DOM4J)
    • 2.Tomcat服务器
      • 2.1Tomcat目录结构
      • 2.2WEB项目的标准结构
    • 3.HTTP
    • 3.1 交互的方式和数据的格式
      • 交互的方式
      • 数据的格式
        • 报文
    • 3.2HTTP长链接和短链接
    • 3.3请求和响应报文
      • 报文的格式
      • 请求报文
      • 响应报文
        • 状态码

1.XML

XML具体不需要太深入,但是要知道它是什么,是干嘛用的。

xml作为配置文件,可以更好地存储一些信息

xml文件第一行一定是<?xml version="1.0" encoding="字符集"?>

根标签只能有一个

xml是有约束的,分为dtd约束和schema约束,dtd约束简单不细致,schema约束复杂细致。

xml文件举例:

<?xml version="1.0" encoding="UTF-8"?><students>
    <student id="01">
            <name>张三</name> 
             <age>18</age> 
    </student>   
    <student id="02">       
              <name>李四</name>        
              <age>20</age>  
    </student>
</students>

xml文件的语法与html类似,也是只有一个根标签,也是由元素组成,元素也是由标签+属性+文本组成,可以说,html就是有html语法约束的xml文件。

XML的解析(使用DOM4J)

XML不需要具体了解,大体看一下流程即可

package XML_leaning;
 
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
 
import java.io.InputStream;
import java.util.List;
 
public class TestDom4j {
    public static void main(String[] args) throws DocumentException {
        //读取jdbc.xml配置文件,获得document对象
        SAXReader saxReader = new SAXReader();
        //通过类加载器获得指向字节码根路径下的指定文件的输入流
        InputStream resourceAsStream = TestDom4j.class.getClassLoader().getResourceAsStream("jdbc.xml");
        //通过输入流获得配置文件,解析成一个dom对象
        Document document = saxReader.read(resourceAsStream);
        //从domcument对象上获取配置文件中的信息
        Element rootElement = document.getRootElement();
        System.out.println(rootElement.getName());
        List<Element> elements = rootElement.elements();
        for (Element element : elements) {
            System.out.print("\\t" + element.getName());
            Attribute attribute = element.attribute("id");
            System.out.println(" " + attribute.getName() + "=" +  attribute.getValue());
            List<Element> elements1 = element.elements();
            for (Element element1 : elements1) {
                System.out.println("\\t\\t" + element1.getName() + ":" + element1.getText());
            }
        }
    }
}

不需要特别搞懂,知道是配置文件,用来存储一些配置信息,作用类似于properties文件即可。

2.Tomcat服务器

Tomcat是专门运行WEB应用软件的服务器软件

2.1Tomcat目录结构

  • bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat10.exe、tomcat10w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat;

  • conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:

    • server.xml:配置整个服务器信息。例如修改端口号。默认HTTP请求的端口号是:8080

    • tomcat-users.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;

        <tomcat-users xmlns="http://tomcat.apache.org/xml"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
                      version="1.0">	
        	<role rolename="admin-gui"/>
        	<role rolename="admin-script"/>
        	<role rolename="manager-gui"/>
        	<role rolename="manager-script"/>
        	<role rolename="manager-jmx"/>
        	<role rolename="manager-status"/>
        	<user 	username="admin" 
        			password="admin" 
        			roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"
        	/>
        </tomcat-users>

web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。
客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!

context.xml:对所有应用的统一配置,通常我们不会去配置它。

  • lib:Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放到其他Tomcat下时就不能再共享这个目录下的jar包了,所以建议只把Tomcat需要的jar包放到这个目录下;

  • logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。

  • temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!

  • webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的项目。其中ROOT是一个特殊的项目,在地址栏中访问:http://127.0.0.1:8080,没有给出项目目录时,对应的就是ROOT项目.http://localhost:8080/examples,进入示例项目。其中examples"就是项目名,即文件夹的名字。

  • work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。

  • LICENSE:许可证。

  • NOTICE:说明文件。 NOTICE:说明文件。

2.2WEB项目的标准结构

一个标准的可以用于发布的WEB项目标准结构如下:

在这里插入图片描述

  • app 本应用根目录

    • static 非必要目录,约定俗成的名字,一般在此处放静态资源 ( css js img)

      • WEB-INF 必要目录,必须叫WEB-INF,受保护的资源目录,浏览器通过url不可以直接访问的目录
        • classes 必要目录,src下源代码,配置文件,编译后会在该目录下,web项目中如果没有源码,则该目录不会出现
        • lib 必要目录,项目依赖的jar编译后会出现在该目录下,web项目要是没有依赖任何jar,则该目录不会出现
        • web.xml 必要文件,web项目的基本配置文件. 较新的版本中可以没有该文件,但是学习过程中还是需要该文件
    • index.html 非必要文件,index.html/index.htm/index.jsp为默认的欢迎页

url的组成部分和项目中资源的对应关系:

在这里插入图片描述

3.HTTP

HTTP 超文本传输协议 (HTTP-Hyper Text transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。客户端与服务端通信时传输的内容我们称之为报文HTTP协议就是规定报文的格式。HTTP就是一个通信规则,这个规则规定了客户端发送给服务器的报文格式,也规定了服务器发送给客户端的报文格式。实际我们要学习的就是这两种报文。客户端发送给服务器的称为"请求报文",服务器发送给客户端的称为"响应报文"

3.1 交互的方式和数据的格式

HTTP提供了客户端和服务端的交互的方式和数据的格式

交互的方式

请求:客户端向服务端发送

响应:服务端向客户端返回

数据的格式

请求时发送的数据称为请求报文

响应时返回的数据称为响应报文

报文

报文是有规定的格式:

  • 报文首部:
  • 报文主体

请求报文的格式对应称为请求行、请求头、请求体

响应报文的格式对应称为响应行、响应头、响应体

3.2HTTP长链接和短链接

HTTP是一种应用层协议,规定的是报文的格式,但是不规定传输。

TCP是一种传输层协议,是面向连接的协议。而想要确定传输的实体,就要通过IP协议。

IP是一种网络层协议。

TCP连接的步骤为:创建连接(三次握手)—>关闭连接(四次挥手)

短链接即为在客户端向服务端发送请求时,每有一个资源需要向服务端发送连接,都进行一遍三次握手四次挥手,如果有n个资源需要向服务器端发送连接,就进行了n遍三次握手四次挥手

长连接即为在客户端向服务端发送请求时,先三次握手建立连接,获取到所有资源后才四次握手关闭连接,减少了TCP连接的次数

HTTP1.1时,增加了缓存机制,即一个资源获取到后会先缓存下来,如此重复获取此资源时,不用再重复请求。节省了带宽并使得响应速度也更快

3.3请求和响应报文

报文的格式

报文分为报文首部和报文主体,报文首部和报文主体之间用空行隔开

报文首部

空行(CR+LF,即回车加换行)

报文主体

报文首部可以继续细分为 行 和 头

  • 报文首部
    • 请求行/状态行
    • 请求首部字段/响应首部字段
    • 通用首部字段
    • 实体首部字段
    • 其他

请求报文

客户端发给服务端的报文

  • 请求报文格式

    • 请求首行(请求行); GET/POST 资源路径?参数 HTTP/1.1
    • 请求头信息(请求头);
    • 空行;
    • 请求体;POST请求才有请求体

    GET请求方式会将参数放在地址栏上,不安全,且GET方式只能携带纯文本。POST请求方式将参数放在请求体,较为安全,且POST方式能携带所有内容。GET方式没有请求体。

响应报文

服务端发给客户端的报文

  • 响应报文格式
    • 响应首行(响应行); 协议/版本 状态码 状态码描述
    • 响应头信息(响应头);
    • 空行;
    • 响应体;
状态码

响应状态码:响应码告诉浏览器响应的结果。较有代表性的响应码:

  • 200: 请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;
  • 302: 重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location指定新请求的URL地址;
  • 304: 使用了本地缓存
  • 404: 请求的资源没有找到,说明客户端错误的请求了不存在的资源;
  • 405: 请求的方式不允许
  • 500: 请求资源找到了,但服务器内部出现了错误;

还有一些其他的状态码,我粘贴在下面,遇见时对照查找是哪种情况即可:

状态码状态码英文描述中文含义
1**
100Continue继续。客户端应继续其请求
101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
2**
200OK请求成功。一般用于GET与POST请求
201Created已创建。成功请求并创建了新的资源
202Accepted已接受。已经接受请求,但未处理完成
203Non-Authoritative Information非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204No Content无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205Reset Content重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206Partial Content部分内容。服务器成功处理了部分GET请求
3**
300Multiple Choices多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303See Other查看其它地址。与301类似。使用GET和POST请求查看
304Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305Use Proxy使用代理。所请求的资源必须通过代理访问
306Unused已经被废弃的HTTP状态码
307Temporary Redirect临时重定向。与302类似。使用GET请求重定向
4**
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
402Payment Required保留,将来使用
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405Method Not Allowed客户端请求中的方法被禁止
406Not Acceptable服务器无法根据客户端请求的内容特性完成请求
407Proxy Authentication Required请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408Request Time-out服务器等待客户端发送的请求时间过长,超时
409Conflict服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410Gone客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411Length Required服务器无法处理客户端发送的不带Content-Length的请求信息
412Precondition Failed客户端请求信息的先决条件错误
413Request Entity Too Large由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414Request-URI Too Large请求的URI过长(URI通常为网址),服务器无法处理
415Unsupported Media Type服务器无法处理请求附带的媒体格式
416Requested range not satisfiable客户端请求的范围无效
417Expectation Failed服务器无法满足Expect的请求头信息
5**
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求的功能,无法完成请求
502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504Gateway Time-out充当网关或代理的服务器,未及时从远端服务器获取请求
505HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理

标签:XML,HTTP,请求,Tomcat,报文,服务器,目录,客户端
From: https://blog.csdn.net/2402_86838546/article/details/145243541

相关文章

  • 如何在IIS中配置https重定向到http?
    问题描述:如何在IIS架构的服务器中配置https重定向到http?答案:将以下代码另存为web.config文件后保存到网站根目录即可生效。<?xmlversion="1.0"encoding="UTF-8"?><configuration><system.webServer><rewrite><rules>......
  • 势头正猛,HTTP3的优势是什么?
    经过了多年的努力,IETF(互联网工程任务小组)正式发布了HTTP/3的RFC,这是超文本传输协议(HTTP)的第三个主要版本,完整的RFC超过了20000字,非常详细的解释了HTTP/3。HTTP历史1991HTTP/1.12009Google设计了基于TCP的SPDY2013QUIC2015HTTP/22018HTTP/3HTTP3......
  • HTTP 常用方法解析
    一、HTTP协议简介HTTP,即超文本传输协议(HyperTextTransferProtocol),是互联网通信的基石,广泛应用于Web浏览器与服务器之间的数据交互。它构建起客户端与服务器沟通的桥梁,使得我们能够流畅地浏览网页、获取各类信息资源,从新闻资讯、社交媒体到在线购物、视频娱乐,几乎所有网络......
  • 什么是HTTP POST请求?初学者指南与示范
    什么是HTTPPOST请求?HTTP(超文本传输协议)是Web的基础协议,用于在客户端(如浏览器)和服务器之间传输数据。HTTP请求方法有多种,最常见的包括GET和POST。本文将详细介绍HTTPPOST请求,包括其用途、工作原理及示范。HTTPPOST请求的用途POST请求用于向服务器发送数据,通常用于以下场景:......
  • frp http转发
    FRP(FastReverseProxy)是一款高性能的反向代理应用,用于内网穿透。它可以将内网服务暴露到外网,使得外网用户能够访问内网服务。本文将详细介绍如何使用FRP进行HTTP转发。安装FRP首先需要下载并安装FRP。可以从FRP的GitHub页面获取最新的发布版本。下载FRP前往FRP的发布页面下......
  • 【鱼皮大佬API开放平台项目】Spring Cloud Gateway HTTPS 配置问题解决方案总结
    问题背景项目架构为前后端分离的微服务架构:前端部署在8000端口API网关部署在9000端口后端服务包括:api-backend(9001端口)api-interface(9002端口)初始状态:前端已配置HTTPS(端口8000)后端服务未配置HTTPS通过Nginx进行反向代理遇到的问题第一阶段:400Ba......
  • 在 nuget 私服 BaGet 中应用https 以及 gitea action runner 自动打包
    最近赋闲,想起之前工作中代码管理的一点经历,就是在打包项目的时候,类库的版本号几乎没变过,一个项目运行多少年了,版本号还是1.0.0。......
  • Tomcat进阶篇
    目录对应的输出结果一、聊聊ClassLoader的那些事儿1.类加载器的过程2.类加载器的分类3.BootstrapClassLoader4.ExtensionClassLoader5.自定义类加载器6.双亲委派机制Catalina为什么不new出来?1.Web容器的特性2.Tomcat类加载器结构3.Tomcat的类加载器的继承结......
  • JAVA-Exploit编写(1)--HttpURLConnection库使用
    目录1.HttpURLConnection简介2.创建HttpURLConnection请求.2.1HttpURLConnection的属性2.2设置相关的请求属性2.3 设置请求头参数3使用GET方法进行请求4.POST方法进行请求4.1常规使用4.2单独调用 5. 设置代理5.1 直接设置代理5.2 配置Proxy代理类 6.......
  • JAVA-Exploit编写(2)--HttpClient库使用
    目录1.HttpClient简介1.1ApacheHttpClient特性1.2 ApacheHttpClient使用流程2.依赖导入3.HttpClient属性4.GET方式请求4.1 test2.php4.2不携带参数请求 4.3 携带参数提交4.4 支持URIBuilder对象的使用 5.POST请求5.1test3.php5.2 单个参数提交......