转载

U01_Servlet3请求响应

概念:

  • request 叫请求:从客户端发到服务端的叫请求,请求的方式有很多种,而你最常用的无非就是 getpost 这两种。
  • response 叫响应:从服务端给回客户端的叫响应。
U01_Servlet3请求响应
服务端可以接收客户端的请求,然后向客户端返回一些结果的流程图

文字描述:客户端可以通过浏览器请求一个资源(可能是一个页面,一个图片,一个PDF文档等),服务器接收到客户端的这个请求之后按照请求中的路径来查找这个资源,如果找到了,创建一个对应该请求的响应,把找到的内容放到响应中,格式化响应后,返回这个响应(包括响应头和响应体),如果没找到,直接返回错误代码404,浏览器接到响应后,解析HTML然后展示给用户,所有浏览器都知道该如何处理HTML。

2.1 get请求

概念:

  • get 请求是最简单的HTTP请求,它的主要任务就是要从服务器拿些东西回来。
  • 一个 get 请求大概长这个样子: http://127.0.0.1:8080/my_project/html/index.html?a=1&b=2
    • http:// :告诉服务器使用什么通信协议。
    • 127.0.0.1 :物理服务器的IP地址,这里也可以使用服务器名。
    • 8080 :端口是可选的,一个服务器支持多个端口,默认为80。
    • my_project/html/ :所请求的资源在服务器上的路径。
    • index.html :所请求的资源名,可以是一个HTML页面、一个Servlet、一个图片等任何资源,大部分服务器会默认寻找index.html。
    • ?a=1&b=2get 请求可以在路径末尾添加一个查询串(KV对),以 ? 开头,以 & 分割,这里长度有限制。

理解:

  • 客户端:"嘿!服务器,给我拿(get)一下这个主机上面的一个页面,地址是/html/index.html,哦对了,这有一些给你的参数a=1和b=2,还有就是请快点!"

  • 服务端:"好的,我会去拿(get)那个页面,也谢谢你提供的参数,不过有一点要说明,咱俩的HTTP协议中,可没有包含 '快一点' 这一项!"

2.2 使用开发者模式观察get请求

概念:

  • 当浏览器发送一个 get 请求的时候,我们可以通过浏览器的开发者模式观察到这次请求的常规信息、响应信息以及请求头内容等,如果你的 get 请求末尾伴有查询串的话,会在开发者模式中看到 Query String Parameters 表格,里面就是请求中携带的参数。
  • 开发者模式查看步骤:
    • 发送请求 - F12 - Network - 请求路径 - Headers
  • Headers 右边的 Response 是响应体,响应体中就是返回的具体资源。
  • get 方式没有请求体。
U01_Servlet3请求响应

常规信息表:General

属性 描述
RequestURL 本次请求的详细地址,如果伴随参数查询串,则会拼接在URL末尾
RequestMethod 本次请求的方式
Status Code 状态码,常见200和404

响应信息表:ResponseHeaders

属性 描述
Content-Length 本次响应的字节大小
Content-Type 本次响应的数据类型
Date 本次响应发生的时间
Content-Type 本次响应的数据类型

请求头信息表:Request Headers

属性 描述
Accept 可以解析的MIME类型,如果将来给我的响应内容是这些类型中的,我可以解析,如果不是这些,我将无法正确解析它们
User-Agent 此次请求的浏览器信息

2.3 post请求

概念:

  • post 请求是一种更强大的请求,是 get 请求的一种拓展版,利用 post 请求可以请求某个资源,于此同时还可以向服务器发送一些表单数据,这些数据被放置在请求体中。
  • post 请求和 get 请求主要有三点区别:
    get
    post
    post
    

理解:

  • 客户端: "嘿!服务器,请把这个请求提交(post)给一个资源,这个资源所在的地址是 /servlet/testServlet.do ,不要忘了看我的请求体,那里面有我发送的一些重要数据!"
  • 服务端 :"好的,我会去寻找那个地址上的资源,等我找到了,我会把你在请求体中发送的数据交给它!"

2.4 使用开发者模式观察post请求

概念:当浏览器发送给一个 post 请求的时候,我们可以通过浏览器的开发者模式观察到这次请求的请求头内容,查找方式和get一样,除了常规信息、请求头和响应头外,还可以看到请求体 Form Data 的内容,如图2-4-1。

U01_Servlet3请求响应
图2-4-1
原文  https://juejin.im/post/5e9e925de51d4546f940d138
正文到此结束
Loading...