• http协议


    目录

    什么是http?

    http请求

    GET方式

    POST方式

    请求

    获取请求头请求行数据

    http响应


    什么是http?

    • 超文本传输协议 (HyperText Transfer Protocol)服务器传输超文本到本地浏览器的传送协议,是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程。

    • http是一个基于tcp/ip通信协议来传递数据

    • http是一个属于应用层的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统

    http请求

    客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个http请求

    一个http请求包括三个部分:请求行,请求头,请求体

    请求行:包含http请求方式,请求资源名称,http版本

    请求头:包含主机地址,以及客户端的一些环境信息,以键值对的形式传递.

    请求体:代表着浏览器在post请求方式中传递给服务器的参数,请求体中参数以 键值形式传递, 多个用&链接,服务器接收到后再解析.

    想要看到这些消息,我们可以在网页上按键盘中的Fn+F12打开调试器,然后点击网络再随便点击一个name便可在Headers中看到以上所有信息

     

    GET方式

    主要用于从服务器端获取数据,可以传输少量的数据,数据在地址中,会在地址栏中显示,相对不安全,传输的数据量有限

    • 超链接访问,默认为get方式

    • form提交,如果不指定method,默认为get方式

    POST方式

    主要用于向服务器端发送数据,数据在请求中,不会显示在地址栏中,相对安全,长度是没有限制的

    • form提交,指定method="POST"

    请求

    请求和响应是web交互最基本的模式,在Servlet中,用HttpServletRequest 来表示请求

    HttpServletRequest :封装了请求的信息,可以从中获取任何请求信息

    • getParameter(name) --- String 通过name获得值

    • getParameterValues --- String[ ] 通过name获得多值

    • 处理中文乱码

      post

      setCharacterEncoding(编码格式)

    获取请求头请求行数据

        System.out.println(req.getRequestURL()); // 请求地址
        System.out.println(req.getRemotePort());// 客户端端口
        System.out.println(req.getProtocol());// 请求协议
        System.out.println(req.getScheme());// 请求方法
        System.out.println(req.getContentLength());//请求内容长度
        System.out.println(req.getServerPort()); // 服务器端口
        System.out.println(req.getServerName()); // 主机名
        System.out.println(req.getRemoteAddr());// 远端客户端ip
        System.out.println(req.getMethod()); // 请求方式
    ​

    http响应

    一个http响应代表服务器向客户端回送的数据,它包括:响应行,响应头,响应体。

    响应行里包含了http协议版本,以及用于描述服务器对请求的处理结果。

    HTTP/1.1 (协议版本) 200(状态吗) OK(状态码描述)

    状态码:服务器和浏览器用于确定状态的固定数字号码

    200:请求成功

    302:请求重定向

    400:语义有误,当前请求无法被服务器理解或请求参数有误

    404:请求资源不存在,通常是路径写错了或者服务器资源删除了

    500:服务内部错误(代码异常)

    • Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个代表响应的HttpServletResponse对象

    • HttpServletResponse对象代表响应。

    • 用getWriter()获得一个PrintWriter字符输出流输出数据response会默认以ISO8859-1将需要输出到浏览器的字符进行解码,如果输出的字符在ISO8859-1中不存在,就会导致乱码问题

    • response.setContetnType("text/html;charset=utf-8");方法可以同时设定response所使用的字符集编码和浏览器打开所用的字符集编码

     

  • 相关阅读:
    编码踩坑——记一次fastjson引发的空指针问题、引用标识$ref
    第三十八章 持久对象和SQL - 持久类的特殊选项
    深入理解Linux网络技术内 幕(四)——通知链
    Java面试宝典.exe程序成功运行,经典 Java 万字笔记,查漏补缺,备战跳槽面试
    网络流探索:解决网络最大流问题的算法集锦
    一文详解DevExpress的HTML & CSS模板如何实现集合渲染
    知识点 | Revit族库插件哪家强?
    SCI常用经典词和常用句型(一)
    Unity-自定义事件派发器的两次尝试
    envs.yaml与requirements.txt
  • 原文地址:https://blog.csdn.net/weixin_51971817/article/details/126378251