欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > HTTP协议讲解

HTTP协议讲解

2025/4/8 5:56:54 来源:https://blog.csdn.net/2401_87092242/article/details/146883648  浏览:    关键词:HTTP协议讲解

概念: Hyper Text Transfer Protocol 超文本传输协议,规定了浏览器和服务器之间的数据传输规则
在这里插入图片描述
特点

  • 基于TCP协议,面向连接,安全
  • 基于请求-响应模型的,一次请求对应一次响应
  • 无状态的,对于事物没有记忆能力,每次请求-响应都是独立的
    • 缺点:多次请求间不能共享数据
    • 优点: 响应速度快

请求协议
常见请求字段

在这里插入图片描述

  • Get方式:请求参数在请求行中,没有请求体,请求大小在浏览器中是有限制的。
  • Post方式:请求参数在请求体中,请求大小没有限制。

请求数据获取

  • web服务器(Tomcat)对http协议的请求数据进行了解析,并进行了封装(HttpServeletRequest),在调用controller方法的时候自动传递给了该方法,因此我们不必直接对原始协议进行操作。

在这里插入图片描述
代码示例:

package com.huohuo;import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RequestController {@RequestMapping(value = "/request")public String request(HttpServletRequest request) {// 获取请求方式String method = request.getMethod();// 获取请求路径String requestURL = request.getRequestURL().toString();String requestURI = request.getRequestURI(); // 是资源访问路径// 获取请求协议String protocol = request.getProtocol();// 获取请求参数 - name, ageString name = request.getParameter("name");String age = request.getParameter("age");// 获取请求头 - AcceptString accept = request.getHeader("Accept");return "OK<br/>" +"method:" + method + "<br/>" +"requestURL:" + requestURL + "<br/>" +"requestURI:" + requestURI + "<br/>" +"protocol:" + protocol + "<br/>" +"name:" + name + "<br/>" +"age:" + age + "<br/>" +"accept:" + accept + "<br/>";}
}

启动后访问localhost:8080/request?name=huohuo&age=18

在这里插入图片描述
响应协议
以下是常见的响应状态码:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
web服务器对http协议的响应数据进行了封装(HttpServeletResponse),并在调用Controller方法的时候传递了该方法,这就使得程序员不必对协议直接进行操作,让web开发更加便捷。

使用response或spring对象进行响应

    @RequestMapping("/response")// 第一种方式,响应体是字符串,会自动设置响应头 Content-Type: text/plain;charset=UTF-8public void Response(HttpServletResponse response) throws IOException {// 设置响应状态码response.setStatus(HttpServletResponse.SC_OK); // 200// 设置响应头response.setHeader("name", "huohuo");// 设置响应体// 会抛出 IOException, 因为 response.getWriter() 获取的流,是和 response 关联的,response.getWriter().write("<h1> hello response </h1>");}
// 使用spring中提供的方式,封装对象返回
@RequestMapping("/response2")
// 这是第二种方式,返回 ResponseEntity 对象,会自动设置响应头 Content-Type: text/plain;charset=UTF-8,也可以手动设置
public ResponseEntity<String> response2(HttpServletRequest request) {return ResponseEntity.status(200).header("name2", "huohuo2").body("<h1> hello response2 </h1>");
}

注:响应头和响应状态码如果没有特殊要求的话,通常不手动设定,服务器会根据请求处理的逻辑自动设置状态码和头

致谢:本文参考黑马程序员的视频。
https://www.bilibili.com/video/BV1yGydYEE3H/?vd_source=1b8f9bfb1d0891faf1c70d7678ae56db

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词