• http协议


    http协议:对浏览器和服务器端之间数据传输的格式规范。

    版本有:

    HTTP/1.0:客户端与web服务器建立连接后,只能获得一个web资源。

    HTTP/2.0:允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

    参看http协议格式的工具:

    1)使用火狐浏览器的firebug插件。

    2)使用谷歌浏览器的“审查元素”功能。

    3)使用windows系统自带的telnet工具(远程访问工具)。

    http协议分为两个部分:

    1)http请求(浏览器->服务器)

    2)http响应(服务器->浏览器)

    http请求

    每个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=eric&password=123456             --(可选)实体内容

    1)请求行

    格式: 请求方式 统一资源标识符 协议版本

    常见的术语:

      请求资源:

        URL:  统一资源定位符。http://localhost:8080/day09/testImg.html。只能定位互联网资源。是URI的子集。

        URI: 统一资源标记符。/day09/hello。用于标记任何资源。可以是本地文件系统,局域网的资源(//192.168.14.10/myweb/index.html),互联网。

      请求方式:

        常见的请求方式: GET 、 POST、 HEAD、 TRACE、 PUT、 CONNECT 、DELETE  

        常用的请求方式: GET  和 POST

        GET和POST请求方式的对比:

          GET:

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

            2)GET提交参数数据有限制,不超过1KB。

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

          POST:

            1)参数不会跟着URI后面。参数而是跟在请求的实体内容中。没有?开头,多个参数之间以&分割。

            2)POST提交的参数数据没有限制。

            3)POST方式提交敏感数据。

        注意: 浏览器直接访问的请求,默认提交方式是GET方式

    2)请求头

    3)实体内容

      只有post请求提交的参数会放到实体内容中。

    HttpServletRequest对象

    作用:用于获取请求数据。

    核心API:

      请求行:

        request.getMethod();   请求方式

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

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

      请求头:

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

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

      请求参数获取(post请求中的实体的实体内容):

          GET:request.getQueryString();

          POST: request.getInputStream();

        由于以上获取参数的方式不通用,获取到参数之后需要进一步进行解析很麻烦,下面看一下比较通用的获取请求参数的API:

          request.getParameter("参数名");  根据参数名获取参数值(注意,只能获取一个值的参数)

                 request.getParameterValue("参数名“);根据参数名获取参数值(可以获取多个值的参数)

          request.getParameterNames();   获取所有参数名称列表

      请求的解码格式:

        修改POST方式参数编码:

                     request.setCharacterEncoding("utf-8");

                修改GET方式参数编码:

                     手动解码:String name = new String(name.getBytes("iso-8859-1"),"utf-8");

    Http响应

    http响应包含响应行、响应头和实体内容三部分。具体格式如下:

    1)响应行

    格式:协议版本 状态码 状态描述

    常见状态码:

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

          302:   表示请求需要进一步细化。常用语重定向。

      404:   表示客户访问的资源找不到。

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

    2)响应头

    HttpServletResponse对象

    常用API:

      响应行:

        response.setStatus() 设置状态码

      响应头:

        response.setHeader("name","value");

      实体内容:

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

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

      响应编码格式设置:

        response.setContentType("text/html;charset=utf-8");

  • 相关阅读:
    TPS限流
    JDK并发基础与部分源码解读
    tomcat6-servlet规范对接 与 ClassLoader隔离
    tomcat6-输入输出buffer设计
    tomcat6-endpoint设计
    springMVC请求路径 与实际资源路径关系
    mysql 常用的数据类型
    认识IPv4分组
    CSMA/CD协议(载波侦听多路访问/碰撞检测) 最小帧长理解
    简单的vector--- 2
  • 原文地址:https://www.cnblogs.com/nicker/p/6495876.html
Copyright © 2020-2023  润新知