zoukankan      html  css  js  c++  java
  • java深入探究04

    1.Http协议

        tcp/ip关注的是客户端服务器之间数据是否传输成功

        http协议:是在tcp/ip协议之间封装的一层协议关注的是传输格式是否规范

        注意:系统自带的telent工具(远程访问工具)可以查看http协议

            a.telnet ip地址 端口号      访问tomcat服务器

            b.ctrl+] 回车       可以查看回显

            c.输入请求内容

    事先将服务器要搭起来

    GET /day09/hello HTTP/1.1
    Host: localhost:8080

            d.回车,可以查看服务器响应的内容

        一:http协议内容

    请求(浏览器-》服务器)
    GET /day09/hello HTTP/1.1      --请求行
    Host: localhost:8080         --请求头(多个key-value对象)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
                         --一个空行
    name=s&password=23           --(可选)实体内容
    响应(服务器-》浏览器)
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Length: 24
    Date: Fri, 30 Jan 2015 01:54:57 GMT
    
    this is hello servlet!!!

          1)请求行

            GET /day09/hello HTTP/1.1  

            协议版本

            http1.0:当前浏览器客户端与服务器端建立连接之后,只能发送一次请求,一次请求之后连接关闭。

            http1.1:当前浏览器客户端与服务器端建立连接之后,可以在一次连接中发送多次请求。(基本都使用1.1

            请求资源

            URL:统一资源定位符。只能定位互联网资源,是URI的子集

            URI:统一资源标记符。可以标记本地资源也可以互联网资源

            请求方式

            常见的请求方法:GET,POST,HEAD,TRACE,PUT,CONNENT,DELETE

            常用的请求方式:GET和POST

            GET和POST区别

             a)地址栏(URI)会跟上参数数据。以?开头,多个参数之间以&分割。

              b)GET提交参数有限制,不超过1kb

             c)GET方式不适合提交敏感密码

             d)浏览器直接访问请求默认方式是GET方式

          2)请求头

    Accept: text/html,image/*      -- 浏览器接受的数据类型
    Accept-Charset: ISO-8859-1     -- 浏览器接受的编码格式
    Accept-Encoding: gzip,compress  --浏览器接受的数据压缩格式
    Accept-Language: en-us,zh-       --浏览器接受的语言
    Host: www.it315.org:80          --(必须的)当前请求访问的目标地址(主机:端口)
    If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  --浏览器最后的缓存时间
    Referer: http://www.it315.org/index.jsp      -- 当前请求来自于哪里
    User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)  --浏览器类型
    Cookie:name=eric                     -- 浏览器保存的cookie信息
    Connection: close/Keep-Alive            -- 浏览器跟服务器连接状态。close: 连接关闭  keep-alive:保存连接。
    Date: Tue, 11 Jul 2000 18:23:51 GMT      -- 请求发出的时间

          3)实体内容

            只有POST提交的参数会放在实体内容中

        二:HttpServletRequest对象

          HttpServletRequest对象作用是用于获取请求数据。

          1)请求行:

            request.getMethod();   请求方式

            request.getRequetURI()   / request.getRequetURL()   请求资源

            request.getProtocol()   请求http协议版本

          2)请求头:

            request.getHeader("名称")   根据请求头获取请求值

            request.getHeaderNames()    获取所有的请求头名称

          3)实体内容:

            request.getInputStream()   获取实体内容数据

        三:HttpServletResponse对象

    常见的响应头:

    状态码:(服务器处理请求的结果)

          200 :  表示请求处理完成并完美返回

          302:   表示请求需要进一步细化。
          404:   表示客户访问的资源找不到。

          500:   表示服务器的资源发送错误。(服务器内部错误)

    响应Http
    HTTP/1.1 200 OK                --响应行
    Server: Apache-Coyote/1.1         --响应头(key-vaule)
    Content-Length: 24 
    Date: Fri, 30 Jan 2015 01:54:57 GMT
                                       --一个空行
    this is hello servlet!!!                  --实体内容
    响应头
    Location: http://www.it315.org/index.jsp -表示重定向的地址,该头和302的状态码一起使用。 Server:apache tomcat ---表示服务器的类型 Content-Encoding: gzip -- 表示服务器发送给浏览器的数据压缩类型 Content-Length: 80 --表示服务器发送给浏览器的数据长度 Content-Language: zh-cn --表示服务器支持的语言 Content-Type: text/html; charset=GB2312 --表示服务器发送给浏览器的数据类型及内容编码 Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT --表示服务器资源的最后修改时间 Refresh: 1;url=http://www.it315.org --表示定时刷新 Content-Disposition: attachment; filename=aaa.zip --表示告诉浏览器以下载方式打开资源(下载文件时用到) Transfer-Encoding: chunked Set-Cookie:SS=Q0=5Lb_nQ; path=/search --表示服务器发送给浏览器的cookie信息(会话管理用到) Expires: -1 --表示通知浏览器不进行缓存 Cache-Control: no-cache Pragma: no-cache Connection: close/Keep-Alive --表示服务器和浏览器的连接状态。close:关闭连接 keep-alive:保存连接

          HttpServletResponse对象修改响应信息:

          响应行:response.setStatus()  设置状态码

          响应头:response.setHeader("name","value")  设置响应头

          实体内容:

            response.getWriter().writer();   发送字符实体内容

            response.getOutputStream().writer()  发送字节实体内容  

      

      三:multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded

        

    multipart/form-data:

    1、既可以提交普通键值对,也可以提交(多个)文件键值对。

    2、HTTP规范中的Content-Type不包含此类型,只能用在POST提交方式下,属于http客户端(浏览器、java httpclient)的扩展

    3、通常在浏览器表单中,或者http客户端(java httpclient)中使用。

    页面中,form的enctype是multipart/form-data,提交时,content-type也是multipart/form-data。

    POST http://www.xx.com/myproject/service1  
    Host: 192.168.0.201:8694  
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW  
    Cache-Control: no-cache  
    Postman-Token: c3d85a6c-9849-7e3e-5c89-5b994b335b1d  
      
    ----WebKitFormBoundary7MA4YWxkTrZu0gW  
    Content-Disposition: form-data; name="name1"  
      
    value1  
    ----WebKitFormBoundary7MA4YWxkTrZu0gW  
    Content-Disposition: form-data; name="name2"  
      
    value2  
    ----WebKitFormBoundary7MA4YWxkTrZu0gW  
    Content-Disposition: form-data; name="file1"; filename="94b5b232gw1ewlx3p595wg20ak0574qq.gif"  
    Content-Type: image/gif  
      
      
    ----WebKitFormBoundary7MA4YWxkTrZu0gW  
    Content-Disposition: form-data; name="file2"; filename="1443175219259.jpg"  
    Content-Type: image/jpeg  
      
      
    ----WebKitFormBoundary7MA4YWxkTrZu0gW  
    View Code

    application/octet-stream

    1、只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)

    2、属于HTTP规范中Content-Type的一种

    3、很少使用

    application/x-www-form-urlencoded

    1、不属于http content-type规范,通常用于浏览器表单提交,数据组织格式:name1=value1&name2=value2,post时会放入http body,get时,显示在在地址栏。

    2、所有键与值,都会被urlencoded,请查看urlencoder

    数据组织格式

    POST http://www.xx.com/myproject/service HTTP/1.1  
    Host: 192.168.0.201:8694  
    Content-Type: application/json  
    Cache-Control: no-cache  
    Postman-Token: f5f6240c-08d3-8695-9473-607038f71eaa  
      
    name11=file1&name2=value2  
    View Code

    HTTP Content-type对照表

     

  • 相关阅读:
    php 高精度计算函数
    CSS 文本溢出显示省略号样式
    Vue import、export及export default示例详解,附带如何实现全局调用
    利用高德API获取最新的省市区数据
    TP5 基类验证器
    php 两种递归方法
    新建PO類型ZFA的固定資產時灰掉 GR Non-Valuated
    MRP 參數設置
    info record
    kill procedure in os level
  • 原文地址:https://www.cnblogs.com/xiaoping1993/p/day4.html
Copyright © 2011-2022 走看看