XML与HTTP协议笔记归纳(将来学jsp必备!)

                   不心浮气噪   静心    集中心力    理解   透彻   一步步   积累   定心
XML基础:
1.文档声明:<?xml version="1.0" ?>
声明文档中字符编码:<?xml version="1.0" encoding="gb2312" ?>(默认:utf-8/utf-16)
声明文档独立存在与否:<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
浏览器默认用Unicode编码来解析文档
2.元素定义:<书名>Java 就业培训教程</书名>
格式良好的XML文档必须有且仅有一个根元素,其他元素都是这个根元素的子孙元素
<img src="log.gif"></img>==<img src="log.gif" />
标签要合理嵌套:<b>Welcome to <i>www.baidu.com</i></b>
3.属性定义:<售价 单位="元">58</售价>
   可改为子元素的描述:
   <售价>
       <单位>元</单位>
       <价格>58</价格>
   <售价>
4.注释:<!-- 注释信息 -->
5.空格和换行处理:不同于HTML,在XML中文本出现的所有空格和换行,xml解析程序都要一个个如实地交给
   下游程序去处理。
   <网址>www.baidu.com</网址> 不同于:
   <网址>              (回车换行符)
             www.baidu.com       (tab制表符、回车换行符)
   </网址>
6.CDATA区 (character data 字符数据):不想被解析程序解析的一片原始数据区," <![CDATA[ "开始," ]]> "结束
   将文本段放在CDATA区,解析器就还会对此区内容解析,而是将数据原封不动交给下游程序处理。
   <script type="text/javascript">
   <![CDATA[
         for(var x=0;x<3;x++)     alert(x);
   ]]>
   </script>
   注意:<![CDATA[www.baidu.com]]>不同于:
             <![CDATA[
              www.baidu.com
             ]]>
   大小写不能错。
7.特殊字符:
   &   &amp;        <  &lt;       >  &gt;      "  &quot;      '  apos;
8.处理指令:XML声明语句就是最常见的一种处理指令,XML分析器把处理指令原封不动地传给应用程序,由应用
   程序来解释这个指令,按照它提供的信息进行处理。
   如:告诉浏览器使用book.css控制其显示效果    <?xml-stylesheet type="text/css" href="book.css"?>
   看一个例子:
   <?xml version="1.0" encoding="GB2312"?>
   <?xml-stylesheet type="text/css" href="book.css"?>
    <bookstore>
 <book>
  <bookname>Java就业培训教程</bookname>
  <author>张孝祥</author>
  <price>39元</price>
 </book>
    </bookstore>
    book.css文件代码:
    bookname {display:block; color:red}
    author {display:block; font-style:italic}
    price {display:block; color:olive}
9.XML约束模式:如果把一个XML文件看做数据库中的一个表,那么XML约束模式就相当于数据库表结构的定义。
   如果为一个XML文档指定了约束模式,那么它必须满足约束模式所规定的结构、数据类型和数据关联等内容。
10.DTD  XML Schema

 


HTTP协议:
1.一个完整的请求消息包括:一个请求行、若干消息头,以及实体内容;消息头和实体内容之间要用空行隔开。
  下面是一个http请求消息的内容:
   GET /books/java.html HTTP/1.1    //请求行
   Accept: */*                                    //此行及以下都是消息头部分
   Accept-Language: en-us
   Connection: Keep-Alive
   Host: localhost
   Referer: http://localhost/links.asp
   User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
   Accept-Encoding: gzip, deflate
                                              //此空行是用来分隔消息头与实体部分(若有),必不可少
   /*没有实体部分*/
浏览器使用GET方式发送类似上面的不包含实体内容的请求消息;
只有使用POST  PUT  DELETE 方式的请求消息中才可以包含实体内容。

2.一个完整的响应消息包括:一个状态行、若干消息头,以及实体内容。
  HTTP/1.1 200 OK             //状态行
  Server: Microsoft-IIS/5.0         //消息头部分
  Date: Thu, 13 Jul 2000 05:46:53 GMT
  Content-Length: 2291
  Content-Type: text/html
  Set-Cookie: ASPSESSIONIDQQGGGNCG=LKLKFFKCINFLDMFHCBCBMFLJ; path=/
  Cache-control: private
                                         //空行
  <HTML>                  //实体内容(网页文档的内容)
  <BODY>
  ... ...

3.简单请求消息:只包含请求行的请求消息(只能用于GET方式,请求行中不指定HTTP版本号)。
   简单响应消息:只包含实体内容的响应消息。
   简单请求消息对应的响应消息就是简单响应消息。
   (在实际应用中并不常见)

4.http消息头
  使用消息头,可以实现HTTP客户机与服务器之间的条件请求和应答。
  消息头相当于服务器和浏览器之间的一些暗号指令     如:隔多长时间刷新网页,用哪种字符集显示网页内容... ...
消息头可以分为:通用信息头、请求头、响应头、实体头四类。

5.请求行:请求消息的请求行中包括三个部分:请求方式、资源路径、http协议版本
   格式:请求方式 资源路径 HTTP版本号<CRLF>
   HTTP请求方式包括:GET  POST  HEAD  OPTIONS  DELETE  TRACE  PUT(通常只用get和post两种方式)。

6.状态行:响应消息的状态行中包括三个部分:HTTP协议的版本号、一个表示成功或错误的整数代码、
                 对状态码进行描述的文本信息。
   格式:HTTP版本号  状态码  原因叙述<CRLF>

7.使用GET和POST方式传递参数:
   http://www.it315.org/servlet/ParamsServlet?param1=abc&param2=xyz
   在URL地址后可以附加一些参数,每个参数由参数名和参数值组成,
   参数名与参数值之间用“=”分隔; 各个参数之间用“&”分隔; URL地址与整个参数部分之间用“?”分隔
   附加参数用处:使得URL地址所指向的Web资源可以根据参数值的不同返回不同的结果内容。

8.GET方式:
  当用户在浏览器地址栏中直接输入某个URL地址或单击网页上一个超链接时,浏览器将使用GET方式发送请求。
     http://www.it315.org/servlet/ParamsServlet?param1=abc&param2=xyz
     浏览器发送给www.it315.org服务器的请求消息如下:
     GET /servlet/ParamsServlet? param1=abc&param2=xyz HTTP/1.1
     Host: www.it315.org
   使用GET方式传送的数据量是有限制的,一般限制在1KB以下。

9.POST方式:
  <form>元素的method属性设置为“POST”,浏览器使用POST方式提交表单内容。
  不是传递URL地址,而是发送HTTP消息的实体内容。因此它比用GET方式传送数据量要大得多。
  用POST方式时,必须:将Content-Type消息头设置为“application/x-www-form-urlencoded”
                                     将Content-Length消息头设置为实体内容的长度
  如:针对网址:http://www.it315.org/servlet/ParamsServlet?param1=abc&param2=xyz
         POST /servlet/ParamsServlet HTTP/1.1
         Host:
         Content-Type: application/x-www-form-urlencoded
         Content-Length: 28

         param1=abc&param2=zyz

10.使用GET和POST方式传递参数:
   在浏览器地址栏输入:http://localhost:8080/examples/servlet/RequestParamExample
   页面出现两个待填项:First Name   和   Last Name   它们分别对应两个值:firstname和lastname
    填写后登陆,发现URL地址后面增加了"?firstname=liu&lastname=kuan"
   如果用GET方式直接传:http://local...........RequestParamExample?firstname=liu&lastname=kuan,
   这样就直接在URL中向Web服务器传递参数了。

11.响应状态码:用于表示服务器对请求的各种不同处理结果和状态,它是一个三位的十进制数。
  (1)100-199  (2)200-299 (3)300-399 (4)400-499 (5)500-599

12.通用信息头:通用信息头字段既能用于请求消息,也能用于响应消息,它包括一些与被传输的实体内容
                         没有关系的常用消息头字段。
  1>.Cache-Control   (cache:/kæʃ/高速缓存):用在客户机发出的请求消息头中,它用于通知位于客户和服务器
                                                                     之间的代理服务器如何使用已缓存的页面。若用在响应消息中,
                       它用于通知客户机和代理服务器如何缓存该页面。
  2>.Connection:用于指定处理完本次请求/响应后,客户端与服务器是否还要继续保持连接。
  3>.Date:用于表示HTTP消息产生的当前时间。Date头字段的设置值必须为GMT格式,
                  如:Date:Tue,11 Jul 2000 18:23:51 GMT
  4>.Pragma/编译器指令/:设置值只能固定为no-cache,即 Pragma:no-cache
       当Pragma头字段用于响应消息时,指示HTTP1.0客户机不要缓存文档;当用于请求消息时,指示代理服务器
        必须返回一个最新的文档。在HTTP1.1中,用Cache-Control头字段更为有效。
  5>.Trailer:对于要放置在尾部的头字段,需要在消息中使用Trailer字段说明。如:Trailer:Date
  6>.Transfer-Encoding:此头字段指定HTTP消息的实体内容采用的传输编码方式。目前标准的设置值只有chunked,
        /chunk :tʃʌŋk  组块/ 用于把整个消息体分成一连串的分段后再进行传输。Transfer-Encoding:chunked
       每个分段的开始部分都是一个十六进制格式的数字,用来表示这个分段的大小。最后一个分段的大小必须是0,
       用于表示整个chunked编码数据结束。 这种情况下不必用Content-Length头字段来指定实体内容的大小。
  7>.Upgrade:此头字段允许客户机指定它所支持并希望将当前协议切换到的通信协议,对于101(切换协议)响应码,
        服务器必须使用Upgrade头字段指定切换的协议,如:Upgrade:HTTP/2.0,SHTTP/1.3
  8>.Via:用于指定HTTP消息所途径的中介代理服务器名称和所使用的协议,这个头字段由代理服务器产生,每个
              代理服务器必须把它的信息追加到Via字段的最后,以反映HTTP消息途径的多个代理服务器的顺序,如:
              Via:HTTP/1.1 Proxy1, HTTP/1.1 Proxy2     /'prɔksi  代理服务器/
  9>.Warning:用于说明其他头字段和状态码不能说明的一些附加警告信息,如,返回的实体内容可能已经过时。

13.请求头:用于客户端在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型、压缩方法、语言
                  以及发出请求的超链接所属页面的URL地址等信息。
  1>.Accept:用于指出客户端程序(通常是浏览器)能够处理的MIME类型,例如:png格式的图像具有某种供大于求   

               gif格式图像的压缩优点,但只有少数浏览器支持png格式。
                  如:Accept:text/html,image/*     指出了客户端能接受的MIME:text类型html , image类型不限
  2>.Accept-Charset:用于指出客户端程序可以使用的字符集。
           如:Accept-Charset:ISO-8859-1,unicode-1-1
  3>.Accept-Encoding:用于指定客户机能够进行解码的数据编码方式,通常是指某种压缩方式,最常用的压缩编码
         方式是gzip和compress这两种格式。如:Accept-Encoding:gzip,compress
  4>.Accept-Language:用于指定客户机期望服务器返回哪个国家语言的文档。
          如:Accept-Language:en-gb,zh-cn
  5>.Authorization:/ɔ:θərai'zeiʃən 授权/:当客户端访问受口令保护的网页文件时,Web服务器会发送401响应状态码
            和WWW-Authenticate响应头,要求客户机使用Authorization请求头来应答。根据WWWW-Authenticate响  

         应头中指定的认证方式的不同,Authorization请求头中的内容格式也不一样。
        有两种认证方式:BASIC和DIGEST。(对Basic方式,将用户名和密码进行Base64编码后传给Web服务器)
       如要求发送用户名:zxx 密码:123456的认证信息:Authorization:Basic enh40jEyMzQ1Ng==zxx:123456
        使用DEGEST验证方式,即使装备了网络监视工具的计算机截获了网络传输信息,也不可能将密码从散列结果
        中破译出来。
  6>.Expect:用于指定客户机请求服务器采取的特殊行动,目前设置值只有100-continue,用于询问服务器是否可以在
          后面的请求中发送一个附加文档。
  7>.From:用于指定请求发送者的E-mail地址,它只被一些特殊的Web客户端程序使用,浏览器不会使用到它。
  8>.Host:用于指定资源所在的主机名和端口号,
         格式与资源完整URL中的主机名和端口号部分一样,如:Host:www.it315.org:80
          如果端口号等于连接服务器时所使用的端口号,则可以省略。
        在HTTP1.1中,浏览器和其他客户端发送的每个请求消息中必须包含Host请求关字段,
         根据Host头字段中的主机名来区分客户端所要访问的虚拟Web站点。IE浏览时,浏览器根据Url自动生成Host头
  9>.if-Match:判断缓存页面是否是最新的,可以使用If-Match头字段附带以前缓存的实体标签内容,这个请求被视为 

       一个条件请求,如:If-Match:"xyzzy","r2d2xxxx","c3piozzzz"     其中,"xyzzy"等内容是客户机上次访问该页面   

    时,服务器使用如下字段传送的实体标签:ETag:"xyzzy"             实体标签:一些代表实体内容特征的头字段。
        如果客户机使用的是GET请求方式,服务器检索If-Match头中的实体标签内容,并与服务器端的代表当前网页
        内容特征的实体标签内容进行比较。如果两者相同,则表示网页内容没有更改,Web服务器不返回网页内容,让
        客户仍然使用以前缓存的网页内容。对于PUT请求方式,网页没更改则去修改网页,否则不修改,避免重复修改
  10>.If-Modified-Since:当用户再次访问已缓存的页面时,只有该文档自某个指定的时间以来发生过更改,客户机才
         有必要下载此文档。如果自从If-Modified-Since指定的时间以来,网页内容没有发生修改,服务器将返回一个
          304(Not Modified)状态码来表示浏览器缓存的版本是最新的,而不向浏览器返回文档内容,浏览器则继续
        使用以前缓存的内容。
  11>.If-None-Match:作用与If-Match头字段的作用正好相反。
  12>.If-Range: 只能伴随着Range头字段一起使用,设置值可以是:实体标签或HTTP的GMT格式的时间
  13>.If-Unmodified-Since:作用与If-Modified-Since相反,此头字段一般只用于PUT方式,设置值为HTTP的GMT格式
  14>.Max-Forwards:指定当前请求可以途径的代理服务器数量,每经一个代理服务器,此数值减一。
  15>.Proxy-Authorization:除了是针对代理服务器的用户信息认证外,此头字段作用和用法与Authorization相同
  16>.Range:用于指定服务器只需返回文档中的部分内容及内容范围,这对较大文档的断点续传非常有用。
  17>.Referer:浏览器发送Referer请求头,可以让服务器了解和追踪发出本次请求的起源URL地址。
  18>.TE:用于指定客户机可接受的扩展传输编码类型(除chunked之外的类型)和使用chunked传输编码类型时是否允许
              使用Trailer头字段。   如:TE:trailers,deflate
  19>.User-Agent:用于指定浏览器或其他客户端程序的类型和名称,以便服务器针对不同类型的浏览器而返回不同的  

                        内容。 如手机浏览与电脑浏览端就不同。
          如:User-Agent:Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

14.响应头:响应头字段用于服务器在响应消息中向客户端传递附加信息,包括服务程序名、被请求资源需要的
                  认证方式、被请求资源已移动到的新地址等信息。
  1>.Accept-Range:用于说明当前Web服务器是否接受Range请求和Range请求中指定的数据的单位,
        若不接受:Accept-Range:none  ,以bytes为单位的Range请求:Accept-Range:bytes
  2>.Age:用于指出当前网页文档可以在客户机或代理服务器中缓存的有效时间,设置值是一个以秒为单位的时间数,
             如:Age:315315315
  3>.Etag:用于向客户机传送代表实体内容特征的标记信息   如:Etag:b38b9-17dd-367c5dcd
  4>.Location:用于通知客户机应该到哪个新的地址去获取文档
  5>.Proxy-Authenticate:除了是针对代理服务器的用户信息认证外,此头字段作用和用法与WWW-Authenticate相同
  6>.Retry-After:用于告诉客户机可以在什么时间重复发出刚才的请求,需与503响应状态码结合使用,设置值为
          HTTP的GMT格式,如:Retry-After:Tue,11 Jul 2000 28:23:51 GMT
  7>.Server:用于指定服务器软件的产品名称  如:Server:Microsoft-IIS/5.0
  8>.Vary:用于指定影响了服务器所生成的响应内容的那些请求头字段名  如:Vary:Accept-Language
  9>.WWW-Authenticate:可以指定两种认证方式:BASIC和DIGEST,如果要求客户端采用BASIC方式传送认证信息,
           格式:WWW-Authenticate: BASIC realm=“it315"

15.实体头:是实体内容的元信息,描述了实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间
                   、数据有效期等。
  1>.Allow:用于指定客户端请求的资源所支持的请求方法(如GET、POST等),它通常伴随着405响应状态码一起使用
  2>.Content-Encoding:用于指定实体内容的压缩编码方式。
  3>.Content-Language:用于指定返回的网页文档的国家语言类型。
  4>.Content-Length:用于表示实体内容的长度
  5>.Content-Location:用于指定响应消息中所封装的实体内容的实际位置路径,
          如:Content-Location:http://www.it315.org/java_cn.html
  6>.Content-MD5:用于指定实体内容的MD5算法算出的数字摘要的base64编码结果,以提供实体内容的完整性检查
  7>.Content-Range:用于指定服务器返回的部分实体内容的位置作息。如:Content-Range:bytes 2543-4532/7898
  8>.Content-Type:用于指出实体内容的MIME类型。
  9>.Expires:用于指定当前文档应该在什么时候被认为过期
               如:Expires:Tue,11 Jul 2000 18:23:51 GMT
  10>.Last-Modified:用于指定文档的最后更改时间,设置值为GMT格式

16.扩展头:在HTTP消息中,也可以使用一些在HTTP1.1正式规范里没有定义的头字段,这些头字段统称为自定义的    

              HTTP头或扩展头,它们通常被当作是一种实体头处理。   
  1>.Refresh:用于告诉浏览器过多少秒后自动刷新页面,过1秒后刷新:  Refresh:1
           过1秒后跳转到www.baidu.com:Refresh:1;url=www.baidu.com
  2>.Content-Disposition:指定了接收程序处理数据内容的方式。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itzyjr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值