Javaweb概述

本文详细介绍了XML的概述,包括与HTML的区别、语法,接着讲解了DTD约束的定义、语法,以及Schema约束的特性。同时,还阐述了HTTP协议的基础知识,包括HTTP 1.0和1.1的主要区别以及HTTP响应状态行的构成。
摘要由CSDN通过智能技术生成

一、学习目标
1.XML的概述
2.DTD的约束
3.HTTP协议
二、重点知识
1.XML的概述
XML 是Extensible Markuplanguange的缩写,它是一种类似于HTML的标记语言,称为可扩展标记语言所谓可扩展,指的是用户可以按照XML规则来定义标记。
1.1XML与HTML的比较
XML和HTML都是标记文本,它们在结构上大致相同,都是以标记的形式来描述信息。但实际它们有着本质的区别如下:
(1)HTML被设计出是用来显示数据的,XML被设计出是为了传输和储存数据的,它用作项目的配置文件,保存有结构关系的数据;
(2)HTML是不区分大小写的,而XML是严格区分大小写的;
(3)HTML可以有很多元素,而格式良好的XML有且只能有一个根元素;
(4)HTML中,空格是自动过滤的,而XML中空格规则不会自动删除;
(5)HTML中的标记是预定义的,而XML中的标记可以根据需要自己定义,并且可扩展。
1.2XML的语法
在一个完整的XML 文档中,必须包含一个XML文档的声明,并且该声明必须位于文档的第一行,这个声明表示该文档是一个XML文档,以及遵循哪个XML版本的规范。
2.DTD的约束
2.1什么是约束?
在现实生沽中,如果一篇文章的语法正确,但内容包含违法言论或逻辑错误,这样的文章是不允许发表的。同样,在书写XML文档时,其内容必须满足某些条件的限制;对XML文档进行约束时,同样需要遵守一定的语法规则,这种语法规则就形成了XML约束语言。目前,最常用的两种约束语言是 DTD约束和Schema 约束。
(1)DTD约束
DTD约束是早期出现的一种XML约束模式语言,根据它的语法创建的文件称为DTD 文件。
2.2 DTD语法
在编写XML文档时,需要掌握XML语法。同理,在编写DTD文档时,也需要遵循一定的语法。DTD的结构—船由元素类型定义、属性定义、实体定义、记号(Notation)定义等构成,一个典型的文档类型定义会把将来要创建的XML文档的元素结构、属性类型、实体引用等预先进行定义。接下来针对DTD结构中涉及的语法进行详细讲解。
2.3 Schema约束
它同DTD约束基本一样,也是用来规范xml文件内容的书写规范,只不过Schema的约束比DTD更加强大。
(1)区别:

DTD约束文件的后缀名dtd,机制采用自身的约束。
Scheam约束文件的后缀名是xsd,它是基于xml语法格式。

(2)名称空间:
名称空间的作用就是用来在xml文档中引入schema文件的,但是在一个xml文件中可以引入多个schema文件,就可以使用名称空间、来区分不同的约束文件。
(3)引入Schema文档:
第一种方式:通过名称空间来引入shcema文件,第二种:不通过名称空间引入。
(4)Schema语法:

元素定义
属性定义

3.HTTP介绍
HTTP是 HyperText TransferProtocol的缩写,即超文本传输协议。它是一种请求/响应式的协议,客户端在与服务器端建立连接后,就可以向服务器端发送请求,这种请求被称作HTTP 请求,服务器端接收到请求后会做出响应,称为HTTP响应,客户端与服务器端在HTTP下的交互过程如图2-2所示。
在这里插入图片描述
从图2-2中可以清楚地看到客户端与服务器端使用HTTP通信的过程,接下来总结一下HTTP协议的特点:
(1)支持客户端(浏览器就是一种 Web客户端)/服务器模式;
(2)简单快速:客户端向服务器请求服务时,只需传送请求方式和路径。常用的请求方式有GET、 POST 等,每种方式规定了客户端与服务器联系的类型不同。由于HTTP 简单,使得HTTP服务器的程序规模小,因而通信速度很快;
(3)灵活:HTTP允许传输任意类型的数据,正在传输的数据类型由Content-Type 加以标记;
(4)无状态:HTTP是无状态协议。无状态是指协议对于事务处理没有记忆能力,如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
三、实际运用
1.XML
XML文档声明语法格式:<?xml 版本信息[编码信息] [文档独信息]?>
文档声明以“<?”开头,以符号“?>”结束,中间可以声明版本信息、编码信息以及文档独立性信息。更需要注意的是,在“<”和“?”之间、“?”和“<”之间以及第一个"?"和xml之间不能有空格;另外,中括号([])括起来的部分是可选的,接下来,针对语法格式中的版本信息、编码信息、文档独立信息编写一段代码<?xml version="1.0" encioding="UTF-8" standalone="yes"?>
在上述示例代码中, version属性表示XML 的版本。目前,最常用的XML版本是1.0.standalone属性的值为no,表示文档依赖于外部文档。
2. DTD的约束
先来看一个例子,具体如下:

<?xml version="1.0" encoding="UTF-8"?>
<书架>
  <>
     <书名>Java就业培训教程</书名>
     <作者姓名="张孝祥"/>
     <售价单位="元">38</售价>
     <售价单位="元">28</售价>
  </书>
</书架>

在上面的示例中,尽管这个XML文档结构是正确的,用IE浏览器打开它也不会出现任何问题,但是,由于XML文档中的标记是可以随意定义的,同一本书出现了两种售价,如果仅根据标记名称区分哪个是原价,哪个是会员价,这是很难实现的。为此,在XML文档中,定义了一套规则来对文档中的内容进行约束,这套约束称为XML 约束。
2.1 DTD语法
(1)元素定义
元素是XML文档的基本组成部分在DTD定义中,每一条<!ELEMENT…>语句用于定义一个元素,其基本的语法格式如下所示。
<!ELEMENT 元素名称 元素内容>
在上面元素的定义格式中,包含了“元素名称”和“元素内容”。其中,“元素名称”是自定义的名称,它用于定义被约束XML文档中的元素;“元素内容”是对元素包含内容的声明,包括数据类型和符号两部分,它共有5种内容形式,具体如下:
1)#PCDATA:表示元素中嵌套的内容是普通文本字符串,其中,关键字PCDATA是 ParsedCharacter Data的简写。例如,<!ELEMENT书名(#PCDATA)>表示书名所嵌套的内容是字符串类;
2)子元素:说明元素包含的元素。通常用一对圆括号()将元素中要嵌套的一组子元素括起来,例如,<!ELEMENT 书(书名,作者,售价)>表示元素书中要嵌套书名、作者、售价等子元素;
3)混合内容:表示元素既可以包含字符数据,也可以包含子元素。混合内容必须被定义零个或多个,例如,<!ELEMENT 书(#PCDATAI书名)*>表示书中嵌套的子元素书名包含零个或多个,并且书名是字符串文本格式;
4)EMPTY:表示该元素既不包含字符数据,也不包含子元素,是一个空元素。如果在文档中元素本身已经表明了明确的含义,就可以在 DTD 中用关键字EMPTY 表明空元素。例如,<!ELEMENT br EMPTY>,其中,br是一个没有内容的空元素;
5) ANY:表示该元素可以包含任何的字符数据和子元素。例如,<!ELEMENT 联系人 ANY>表示联系人可以包含任何形式的内容。但在实际开发中,应该尽量避免使用ANY,因为除了根元素外,其他使用ANY 的元素都将失去 DTD 对XML文档的约束效果。
需要注意的是,在定义元素时,元素内容中可以包含一些符号,不同的符号具有不同的作用。
接下来针对一些常见的符号进行讲解:
1)问号[ ? ]:表示该对象可以出现0次或1次;
2)星号[ ✳ ]:表示该对象可以出现0次或多次;
3)加号[ + ]小:表示该对象可以出现1次或多次;
4)竖线[ | ]:表示在列出的对象中选择1个;
5)逗号[ , ]:表示对象必须按照指定的顺序出现;
6)括号[ () ]:用于给元素进行分组。
3. HTTP协议
HTTP自诞生以来,先后经历了很多版本,其中,最早的版本是HTTP0.9,它于1990年被提出。后来,为了进一步完善HTTP,先后在1996年提出了版本1.0,在1997年提出了版本1.1。由于HTTP0.9版本已经过时,这里不作过多讲解。接下来,只针对HTTP 1.0和 HTTP 1.1进行讲解。
3.1 HTTP 1.0
基于HTTP 1.0协议的客户端与服务器在交互过程中需要经过建立连接、发送请求消息、回送响应信息、关闭连接4个步骤,具体交互过程如图2-3所示。
在这里插入图片描述
从图2-3中可以看出,客户端与服务器建立连接后,每次只能处理一个HTTP 请求。对于内容丰富的网页来说,这样的通信方式明显有缺陷。例如,下面的一段HTML 代码。]

<html>
<body>
<img src=" /image01·jpg">
<img srC="/image02.jpg ">
<img srC="/image03.jpg ">
</body>
</html>

上面的HTML文档中包含3个标记,由于标记的src 属性指明的是图片的 URL地址,因此,当客户端访问这些图片时,需要发送3次请求,并且每次请求都需要与服务器重新建立连接。如此一来,必然导致客户端与服务器端交互耗时,影响网页的访问速度。
3.2 HTTP 1.1
为了克服上述HTTP 1.0的缺陷,HTTP 1.1版本应运而生,它支持持久连接,也就是说在一个TCP连接上可以传送多个 HTTP 请求和响应,从而减少了建立和关闭连接的消耗和延时。基于HTTP 1.1的客户端和服务器端的交互过程,如图2-4所示。
在这里插入图片描述
从图2-4中可以看出,当客户端与服务器端建立连接后,客户端可以向服务器端发送多个请求,并且在发送下个请求时,无需等待下次请求的返回结果。但服务器必须按照接受客户端请求的先后顺予依次返回发、响应结果,以保证客户端能够区分出每次请求的响应内容。由此可见,HTTP 1.1不仪继承了HTTP1.0的优点,而且有效解决了HTTP 1.0的性能问题,显著地减少浏览器与服务器交互所需要的时间。
3.3 HTTP响应状态行
HTTP响应状态行位于响应消息的第1行,它包括3个部分,分别是HTTP版本、一个表示成功或错误的整数代码(状态码)和对状态码进行描述的文本信息,具体示例如下:
HTTP/1.1 200OK
上面的示例就是一个HTTP响应消息的状态行,其中,HTTP1.1是通信使用的协议版本(200是状态码),OK是状态描述,说明客户端请求成功。需要注意的是,请求行中的每个部分需要用空格分隔,最后要以回车换行结束。
关于协议版本和文本信息,读者都比较容易理解,而 HTTP的状态码对读者来说则比较陌生,接下来就针对HTTP的状态码进行具体分析。
状态代码由3位数字组成,表示请求是否被理解或满足。HTTP的状态码的第1个数字定义了响应的类别,后面两位没有具体的分类,第1个数字有5种可能的取值,具体介绍如下所示:
1xx:表示请求已接收,需要继续处理;
2xx:表示请求已成功被服务器接收、理解并接受;
3xx:为完成请求,客户端需进一步细化请求;
4xx:客户端的请求有错误;
5xx:服务器端出现错误。
HTTP的状态码数量众多,其中大部分无需记忆。接下来仅列举几个 Web 开发中比较常见状态码,具体如表2-4所示。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值