Http协议

作者: 全满 | 来源:发表于2017-10-16 16:56 被阅读33次

    http协议内容

    • 请求端

    请求(浏览器-》服务器)
    GET /day09/hello HTTP/1.1
    Host: localhost:8080
    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

    • 响应端

    响应(服务器-》浏览器)
    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!!!

    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 ----------------(可选)实体内容

    URI>URL 资源定位符

    请求头

    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 -------------- 请求发出的时间

    提交内容

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

    HttpServletRequest对象

    HttpServletRequest对象作用是用于获取请求数据。
    核心的API:
    请求行:
    request.getMethod(); 请求方式
    request.getRequetURI() / request.getRequetURL() 请求资源
    request.getProtocol() 请求http协议版本
    请求头:
    request.getHeader("名称") 根据请求头获取请求值
    request.getHeaderNames() 获取所有的请求头名称
    实体内容:
    request.getInputStream() 获取实体内容数据

    image.png image.png image.png

    HttpServletResponse对象

    • 响应行
    response.setStatus(404);  //修改状态码
    response.sendError(404);  //发送404的状态码+404的错误页面
    
    • 响应头
    response.setHeader("name","value");    //name和value必须是同一个键值对的内容
    
    • 实体内容
    respponse.getWriter().writer("hello world");  //字符内容
    response.getOutPutStream().writer("hello world".getBytes());  //字节内容
    
    • 重定向(请求重定向相当于超链接跳转页面)
    response.setStatus(302);  //发送一个302状态码
    response.setHeader("location","uri/url");  //location的响应头
          **请求重定向的简化书写**
    response.sendRedirect("uri/url");  //发送一个302状态码+location的响应头
    
    • 定时刷新
    response.setHeader("refrech","1");  //间隔一秒定时刷新
    response.setHeader("refrech","3;url/uri");  //间隔3秒跳转到指定的页面(uri/url)
    
    • 编码类型(Content-type)
    //设置响应实体内容编码
    response.setCharacterEncoding("utf-8");
    //服务器发送给浏览器的数据类型和内容编码
    response.setHeader("content-type", "text/html");
          **简化书写**
    response.setContentType("text/html;charset=utf-8") ;  //和上面代码等价。推荐使用此方法
    
    
    • 下载
    //Content-Disposition(以 下载的方式打开)
    response.setHeader("Content-Disposition", "attachment; filename="+file.getName());  
    //filename="+file.getName()是获取图片的名称并且在下载界面显示
    

    相关文章

      网友评论

        本文标题:Http协议

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