美文网首页
1.http的概念

1.http的概念

作者: 峰子1994 | 来源:发表于2017-07-29 11:32 被阅读8次
    1.http协议入门
    1.1 什么是Http协议?
    Http协议: 对浏览器客户端 和 服务器端数据传输格式的规范!!!!
        1.2 查看Http协议工具
        1)火狐浏览器的firebug
        2)谷歌浏览器的审查元素
        3)telnet工具
        a)cmd输入 telnet localhost 8080 回车
        b)ctrl+] 回车
        c)输入请求,回车GET /day09/first HTTP/1.1Host: localhost:8080
    
    1.3 Http协议内容详情
    浏览器->服务器(请求)
    GET /day09/first HTTP/1.1
    Host: localhost:8080
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.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
    服务器->浏览器(响应)
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Length: 51
    Date: Sun, 28 Dec 2014 01:51:16 GMT
    this is first servlet!!Sun Dec 28 09:51:16 CST 2014
    
    2.Http请求
    GET /day09/first HTTP/1.1            --请求行(必须有)
    Host: localhost:8080                --多个请求头(必须有)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.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       --请求实体内容(可选)
    
    2.1请求行
    GET /day09/first HTTP/1.1
    #http协议版本:
        http1.0: 当浏览器客户端与服务器连接之后,只能向服务器发送一次请求。
        http1.1: 当浏览器客户端与服务器连接之后,可以发送多次请求。(效率比1.0高)
                    
    问题:一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求。
        答案:4次
    #请求资源
        URI: 统一资源标识符(可以定位本地文件,局域网文件,互联网文件)
        URL:统一资源定位符(定位互联网文件),是URI的子集。
        /day09/first  : web应用名称+web资源名称
    #请求方式
        请求方式: GET / POST  / HEAD / PUT / CONNECT/  TRACE / DELETE
        常用的请求方式: GET  和  POST
        表单提交:
        <form action="提交的地址" method="GET/POST">
        /form>
    
    =========GET 和 POST方式区别?==============
    GET方式:(在地址栏输入的请求,默认是GET方式)
        1)地址栏会发送改变。请求参数会跟在URI后面。参数以?开头,参数之间用&分割
        2)不合适传递敏感数据
        3)GET方式提交内容有限制的,不超过1kB。
                    
    GET /day09/testMethod.html?userName=eric&userPwd=123456 HTTP/1.1
    Host: localhost:8080
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.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
    Referer: http://localhost:8080/day09/testMethod.html
    Connection: keep-alive
    If-Modified-Since: Sun, 28 Dec 2014 02:40:40 GMT
    If-None-Match: W/"961-1419734440000"
    
    POST方式:
        1)地址栏不会改变。请求参数放在请求实体内容中。参数之间用&分割。
        2)适合传递敏感数据
        3)POST方式提交没有限制的。
                    
    POST /day09/testMethod.html HTTP/1.1
    Host: localhost:8080
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.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
    Referer: http://localhost:8080/day09/testMethod.html?userName=eric&userPwd=123456
    Connection: keep-alive
    userName=eric&userPwd=123456
    
    2.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             --请求发出时间
    
    2.3HttpServletRequeset对象
    1)tomcat服务器把http请求信息封装到HttpServletRequest对象中。
    2)开发者通过HttpServletRequest对象得到http请求信息。
    请求行:
        request.getMethod(); 请求方式
        request.getRequestURI()  请求资源
        request.getRequestURL()
        request.getProtocol()   协议版本
    请求头:
        request.getHeader("name"): 根据请求头获取请求值   
        request.getHeaderNames(): 获取所有请求头名称
    实体内容:
        request.getInputStream();
    
    2.4请求参数的获取
     Get方式的参数跟在URI的后面
    Post方式的参数放在实体内容中
    获取参数方式:
        GET:request.getQueryString();
        POST:request.getInputStream();
    通用获取参数方式:(不分Post和Get)
        request.getParameter(name) : 根据参数名获取参数值(获取一个参数值)
        request.getParameterValues(name): 根据参数名获取参数值(获取多个参数值)
        request.getParameterNames()  获取所有参数名称
        request.getParameterMap():  获取所有参数  
    
    2.5请求参数中文乱码问题
    POST方式:
        request.setCharacetEncoding(“utf-8”)
    GET方式: 
        1)重新解码(推荐使用)
    if("GET".equals(request.getMethod())){
    //重新解码
        hobit = new String(hobit.getBytes("iso-8859-1"),"utf-8");
    }
    
    2)修改tomcat的server.xml文件
    <Connector port="8080" protocol="HTTP/1.1" 
                connectionTimeout="20000" 
                redirectPort="8443" URIEncoding="utf-8"/>
    
    3.Http响应
    HTTP/1.1 200 OK             --响应行
    Server: Apache-Coyote/1.1    --多个响应头
    Content-Length: 51
    Date: Sun, 28 Dec 2014 01:51:16 GMT
                                    --一个空行
    this is first servlet!!Sun Dec 28 09:51:16 CST 2014    --实体内容(用户直接看到的内容)
    
    3.1响应行
    3.1响应行
    HTTP/1.1 200 OK
    #http协议版本
    #状态码
    状态码:服务器对于请求处理的结果
    常见的状态码:
    200:  表示请求处理完成。
    302:  表示请求需要进一步细化。通常该状态码和location响应头结合使用。
    404 : 表示客户端错误,找不到资源。
    500:  表示服务器错误。
    3.2 多个响应头       
    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  --定时刷新或每隔n秒跳转页面
    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:保持连接。
    Date: Tue, 11 Jul 2000 18:23:51 GMT  --响应发送的时间
    

    #######3.2 HttpServletResponse对象

    HttpServletResponse对象用于设置响应信息。
    常用方法:
    响应行:
    response.setStatus();  设置状态码
    响应头:
    response.setHeader(name,value);  设置响应头
    实体内容
    response.getWriter().writer()    以字符格式发送实体内容
    response.getOutputStream().writer()  以字节格式发送实体内容
    

    相关文章

      网友评论

          本文标题:1.http的概念

          本文链接:https://www.haomeiwen.com/subject/kswqlxtx.html