当前位置:   article > 正文

请求与响应Request、Response_计算机的请求和响应英文

计算机的请求和响应英文

参考自 https://www.cnblogs.com/niceyoo/p/10614349.html
https://blog.csdn.net/fanbaodan/article/details/84846872
https://www.cnblogs.com/whgk/p/6399262.html

Web服务器,浏览器,代理服务器

我们在输入 URL 后,我们的浏览器给Web服务器发送了一个 Request, Web 服务器接到Request 后进行处理,生成相应的 Response,然后发送给浏览器, 浏览器解析 Response 中的 HTML,这样我们就看到了网页。
Tomcat(Tomcat 是Web应用服务器,是一个Servlet/JSP容器) 收到客户端的 http 请求,并把请求传送给Servlet,会针对每一次请求,分别创建一个代表请求的 request 对象、和代表响应的 response 对象。

在这里插入图片描述

在这里插入图片描述

Http请求格式

HTTP协议规定,HTTP请求由3个部分构成,分别是:

  • 请求方法、URI和HTTP协议的版本
  • 请求头(Request Header)
  • 请求正文(Request Content)

请求方式:GET、POST

HTTP响应格式

HTTP协议规定,HTTP响应由3个部分构成,分别是:

  • HTTP协议的版本、状态代码和描述
  • 响应头(Response Header)
  • 响应正文(Response Content)

http响应头信息详解

在这里插入图片描述

响应头信息

     1). Server :该响应头是服务器告诉浏览器,当前响应的服务类型和版本。

     2). Content-Type响应头:服务器告诉浏览器响应内容是什么类型,以及采用的是什么字符编码。
     该响应头的值现在为:text/html;charset=utf-8。说明响应信息的类型是文本类型中的html,使用的字符编码是utf-8。
     HttpServletResponse提供了一个专用的方法setContentType。

     3). Content-Length响应头:服务器告诉浏览器,Content-Length响应头表明了响应实体的大小,该响应内容的长度现在是312个字节。

     4). Date响应头:表示是服务器是在什么时候响应回浏览器,注意这里的时间是按照美国时间来计算。
     
     5). Accept-Ranges: bytes - 该响应头表明服务器支持Range请求,以及服务器所支持的单位是字节(这也是唯一可用的单位).
     我们还能知道:服务器支持断点续传,以及支持同时下载文件的多个部分,也就是说下载工具可以利用范围请求加速下载该文件.
     Accept-Ranges: none 响应头表示服务器不支持范围请求.

     6). Last-Modified:服务器上文件的最后修改时间
     
     7).Location: 表示客户应当到哪里去提取文档。
     Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。

 常用HTTP状态码:
 1). 200-请求成功
 2). 301-资源(网页等)被永久转移到其他URL
 3).404-请求的资源(网页)不存在
 4).500-内部服务器错误
 HTTP状态码分类:
 1**:信息,服务器收到请求,需要请求者继续执行操作
 2**:成功,操作被成功接收并处理
 3**:重定向,需要进一步的操作以完成请求
 4**:客户端错误,请求包含语法错误或无法完成请求
 5**:服务器错误,服务器在处理请求的时候发生错误
转自  https://www.runoob.com/http/http-status-codes.html
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Request和Response来由

  • 在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。
  • service方法中的response的类型是ServletResponse,而doGet/doPost方法的response的类型是HttpServletResponse,HttpServletResponse是ServletResponse的子接口,功能和方法更加强大。
  • service方法就是将ServletResponse类型的response和ServletRequest类型的request强行转化为HttpServlet…类型。
    在这里插入图片描述

HttpServletResponse常用方法

https://blog.csdn.net/durenniu/article/details/81082177

1、与 HTTP 协议相关的一些方法

addHeader(String name, String value):向HTTP响应头中加入一项内容。
sendError(int sc):向客户端发送一个代表特定错误的HTTP响应状态代码。
sendError(int sc, String msg):向客户端发送一个代表特定错误的HTTP响应状态代码,并且发送具体的错误消息。
setHeader(String name, String value):设置HTTP响应头中的一项内容。
如果在响应头中已经存在这项内容,那么原先所做的设置将被覆盖。
【设置每隔3秒就自动刷新一次, response.setHeader("Refresh",3);】
setStatus(int sc):设置HTTP响应的状态代码。
addCookie(Cookie cookie):向HTTP响应中加入一个Cookie。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2. 实现向用户输出数据的方法

getOutputStream 和 getWriter方法。这两种方法相互排斥,不能同时用。如果是字符输出,后者其实更方便;如果是文件流,用前者更好。在开发过程中,如果希望服务器输出什么浏览器就能看到什么,那么在服务器端都要以字符串的形式进行输出。
(1)、在用getOutputStream时,要先用setHeader(“content-type”, “text/html;charset=UTF-8”)控制浏览器的编码显示,然后还要通过byte[] dataByteArr = data.getBytes(“UTF-8”);将字符转换成字节数组,指定以UTF-8编码进行。
(2)、在获取PrintWriter输出流之前首先使用"response.setCharacterEncoding(charset)"设置字符以什么样的编码输出到浏览器,如:response.setCharacterEncoding(“UTF-8”);

3. 资源重定位

重定向指的是一个web资源收到客户端请求后,web服务器通知客户端去访问另外一个web资源,这称之为请求重定向。实现方式是调用response.sendRedirect()方法。实现的原理就是给客户端返回了302状态码和location头。

 void sendRedirect(String location) 
//Sends a temporary redirect response to the client using the specified redirect location URL and clears the buffer. 
//资源重定位,这里可以直接定位到其它站点的网址,但是缺点是不能在域内共享数据。
  • 1
  • 2
  • 3

HttpServletRequest常用方法

https://www.cnblogs.com/shenhaha520/p/8572044.html

最常用的方法就是获得请求中的参数

  1. Cookie[] getCookies():返回一个数组,包含客户端发送该请求的所有的 Cookie 对象。
  2. getAttribute(String name): 返回name指定的属性值
  3. getAttributeNames(): 返回当前请求的所有属性的名字集合
  4. getsession() : 返回和客户端相关的session,如果没有给客户端分配session,则返回null
  5. getsession(boolean create): 返回和客户端相关的session,如果没有给客户端分配session,则创建一个session并返回
  6. getParameter(String name) :获取请求中的参数,该参数是由name指定的
  7. getParameterNames(): 获取请求中所有参数的名字
  8. getParameterValues(String name):返回请求中的参数值,该参数值是由name指定的
  9. getContentLength(): 返回请求体的有效长度
  10. getServerName(): 返回接受请求的服务器的名字
  11. getServerPath(): 获取请求的文件的路径

getParameter和getAttribute的不同

getParameter(String name):获得客户端传送给服务器的参数值,该参数是由 name 指定的,通常是表单中的参数。而且参数只能是字符串形式的键值对。

getAttribute(String name):返回有name 指定的属性值,如果指定的属性值不存在,则会返回一个null值。这里存放的也是一个键值对,不同的是,这里的值可以是任意的类型。

请求转发

 /**请求转发:一种在服务器内部的资源跳转方式**/
 RequestDispatcher getRequestDispatcher(String path)//通过request对象获取请求转发器对象
 forward(ServletRequest request, ServletResponse response)// forward(ServletRequest request, ServletResponse response) 
 //只能在服务器内部转发。可以获取共享域中的数据。
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/900945
推荐阅读
相关标签
  

闽ICP备14008679号