java web
第二章:xml、http协议、tomacat
XML
XML概述
什么是xml:英文Extensible MarkUp Language,可扩展的标记语言。
可扩展的标记语言:在xml里面的标记是可以扩展的。
版本: 1.0和1.1
xml的用途:用来存储数据
-
作为系统与系统之间传输数据的格式
-
作为项目的配置文件
-
保存有结构关系型的数据。
比如:
<China name="中国”>
<province name="河北”>
< city > 衡水< /city >
< city > 保定< /city >
< /province>
< /China>
XML和html的区别:
1. xml文档的标记可以随意扩展,html的标记是预定义好的,不可以随意写。
2. xml区分大小写,html不区分大小写。
3. html主要是用来显示数据的,xml是用来保存数据的。
4. html中,空格会自动过滤,而xml不会
5. html中可以有多个根节点,在xml里面只有一个
XML语法
-
XML的文档声明
语法:<?xml version="1.0"encoding="utf-8"standalone="yes"?>
属性: version 用来表示版本号
encoding 用来表示xml的编码格式
standalone 用来表示xml文件是否依赖外部的文件
注意:xml的文档声明一定要放到文档的第一行第一列
-
XML元素定义
xml文档都是通过元素操作(标记),元素是开始、属性和结束标记组成的
比如:标记可以合理的嵌套。
-
属性定义
语法:
属性对应的值要用“”给括起来
-
注释
html的注释:
xml:
注意:
1. xml是区分大小写的
2. xml的标记不能以数字或者下划线_开头
3. xml的标记不能以xml或者XML等开头
4. xml的标记里面不能包含空格等特殊符号,比如 ,:
XML约束
- 什么是约束:在xml文档中,可以通过一个文件来约束xml文档中的内容规范
简单来说,约束就是规定xml文件中可以写什么,不可以写什么
-
为什么要有约束?
因为xml文件可以随意写,如果标记随意写,在解析xml文件时,程序就不清楚xml文件中标记具体表示什么含义,所以说用约束规范xml的书写
-
创建约束文件
语法:<!ELEMENT 元素名称 元素内容>
比如: <!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,价格)>
<!ELEMENT 书名(#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格(#PCDATA)>
DTD约束
-
引入方式
- 直接在xml文件中引入
<!DOCTYPE 书架[
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,价格)>
<!ELEMENT 书名(#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格(#PCDATA)>
]>
-
外部引入方式
-
本地引入:
- <!DOCTYPE书架 SYSTEM “book.dtd”>
-
公网引入:
-
DTD语法
- 元素定义
基本语法<!ELEMENT 元素名称 元素内容>
元素内容对应的类型
-
普通文本:#PCDATA
-
子元素:比如说(元素1,元素2,元素3)
-
EMPTY:比如说
-
ANY:代表任意内容,元素内容可以是普通文本,可以是子元素
注意:
*表示0个或者多个
+表示一个或者多个
|表示任选一个
,表示子元素按顺序排列
?表示可以出现0或者1
- 属性定义
- CDATA:属性值为任意文本数据
- Enumerated:属性值必须是枚举表中的一个。它不是关键字,定义枚举型的属性要给出枚举列表
- ID:属性值必须是唯一的,并且属性值不能以数字开头 。一个元素最多只有一个ID,ID属性用来表示元素的唯一标识,
- IDREF:属性值必须是ID属性的值。它是用来与其他元素建立关联关系,IDREF属性的值必须是另一个元素的ID属性值
-
Schema约束
-
什么是Schema约束:它跟DTD约束基本一样,也是用来规范xml文本内容的书写规范,只不过Schema约束比DTD约束更加强大。
-
区别:
- DTD约束文件的后缀名dtd,机制采用自身的约束。
- Schema约束文件的后缀名是xsd,他是机遇xml语法格式(更贴合)。
-
名称空间:名称空间的作用就是用来在xml文档中引入schema文件的,但是在一个xml文件中可以引入多个schema文件,就可以使用名称空间来区分不同的约束文件
-
引入Schema文档
- 第一种方式:通过名称空间来引入schema文件
- 第二种方式:不通过名称空间引入
-
Schema语法
- 元素定义
- 属性定义
HTTP协议
-
HTTP概述:
什么是http协议:规范了浏览器和服务器交互或者通信的规则。
https:基于http实现的,比http更加安全,多了提供了身份验证和通信内容加密的机制
服务器从两个层面理解:
- 硬件:配置高的电脑 - 软件:它就是一个应用。 比如:前面用过的mysql数据库服务器
-
Http 1.0和Http 1.1
区别:
- http1.0通信机制,每次从浏览器向服务器发送请求,都需要和服务器建立连接
- http1.1建立一个Tcp;连接,可以发送多个请求,服务器在作出多个响应后,最后关闭这个Tcp连接
-
-
Http消息:
http是基于请求和响应的。
-
请求信息:
请求头信息:
-
响应信息:
响应头信息:
注意:浏览器有自带的抓包功能(查看请求和响应消息F12)
-
HTTP请求消息
-
请求行:POST /aa/registersuccesss.html HTTP/1.1
分三部分:
- 第一部分:请求的方式
- 第二部分:请求的资源的地址
- 第三部分:请求的协议和版本号
-
请求头信息:
Accept text/htm,application/xhtml+xml,application/xml;q=0.9,* / *;q=0.8
Accept-Encoding gzip,deflate
Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection keep-alive
Referer http://localhost:8080/aa/regDemo.html
User-Agent Mozilla/5.0(Window NT 6.2;WOW64;rv:20.0)Gecko/20100101 Firefox/20.0
比如说: host请求资源主机的ip地址和端口号
Referer:请求是从什么地方发起的
UserAgent:浏览器的版本、类型以及内核。
-
请求正文(只有post请求,才有请求正文):
username=aaa_bbb&password=123456&phone=13800000000
-
get请求和post请求的区别:get没请求正文,get请求的数据在浏览器的地址栏
post请求有请求正文,请求的数据在请求正文里面。
Referer:防止盗链,通过来访的地址判断是从什么地方发起的。如果不是自己网站发送的请求不于访问。
响应信息
响应信息分三部分:
-
响应行信息: HTTP/1.1 200 OK
- 协议和版本号
- 状态码 :200,302,304,404,405,500等,比如200:响应成功
- OK:对状态码的描述
-
响应头信息:
Accept-Ranges bytes
Content-Length 331
Content-Type text/html
Date Mon,20 Feb 2007 09:53:34 GMT
Etag W/“331-1449652621901”
Last-Modified Web,09 Dec 2015 09:17:01 GMT
Server Apache-Coyote/1.1
比如:Server 响应头队友的就是使用的服务器
-
响应正文信息: 注册成功