首页 > 其他分享 >Request

Request

时间:2023-04-29 16:34:42浏览次数:22  
标签:HTTP 请求 Request request 获取 数据

Request的作用:获取请求数据
获取过程:
1.浏览器会发送HTTP请求到后台服务器[Tomcat]
2.HTTP的请求中会包含很多请求数据[请求行+请求头+请求体]
3.后台服务器[Tomcat]会对HTTP请求中的数据进行解析并把解析结果存入到一个对象中
4.所存入的对象即为request对象,所以我们可以从request对象中获取请求的相关参数
5.获取到数据后就可以继续后续的业务,比如获取用户名和密码就可以实现登录操作的相关业务

Request对象
作用:是用来封装请求数据的对象

Request获取请求数据
HTTP请求数据总共分为三部分内容,分别是请求行、请求头、请求体,可用Request获取这三部分内容。
获取请求行数据
请求行包含三块内容,分别是请求方式、请求资源路径、HTTP协议及版本。
GET/request-demo/req1?username=zsHTTP/1.1
GET:请求方式
request-demo/req1?username=zs:请求资源路径
HTTP/1.1:HTTP协议版本
获取这三部分内容的方法
1.获取请求方式:GET
String getMethod();
2.获取虚拟目录(项目访问路径): /request-demo
String getContextPath();
3.获取URL(统一资源定位符): http://localhost:8080/request-demo/req1
StringBuffer getRequestURL();
4.获取URI(统一资源标识符): /request-demo/req1
String getRequestURI();
5.获取请求参数(GET方式): username=zhangsan&password=123
String getQueryString();

获取请求头数据
对于请求头的数据,格式为key: value如下:
User-Agent:Mozilla/5.0 Chrome/91.0.4472.106
根据请求头名称获取对应值的方法为:
String getHeader(String name);

获取请求体数据
浏览器在发送GET请求的时候是没有请求体的,所以需要把请求方式变更为POST,请求体中的数据格式如下:
username=zs&password=123
对于请求体中的数据,Request对象提供了如下两种方式来获取其中的数据
1.获取字节输入流,如果前端发送的是字节数据,比如传递的是文件数据,则使用该方法
ServletInputStream getInputStream();
2.获取字符输入流,如果前端发送的是纯文本数据,则使用该方法
BufferedReader getReader();

小结:
HTTP请求数据中包含了请求行、请求头和请求体,针对这三部分内容,Request对象都提供了对应的API方法来获取对应的值:
1.请求行
* getMethod()获取请求方式
* getContextPath()获取项目访问路径
* getRequestURL()获取请求URL
* getRequestURI()获取请求URI
* getQueryString()获取GET请求方式的请求参数
2.请求头
* getHeader(String name)根据请求头名称获取其对应的值
3.请求体
* 注意: 浏览器发送的POST请求才有请求体
* 如果是纯文本数据:getReader()
* 如果是字节数据如文件数据:getInputStream()

Request请求转发
什么是请求转发:一种在服务器内部的资源跳转方式。

请求转发的过程:
* 浏览器发送请求给服务器,服务器中对应的资源A接收到请求
* 资源A处理完请求后将请求发给资源B
* 资源B处理完后将结果响应给浏览器
* 请求从资源A到资源B的过程就叫请求转发
请求转发的实现方式
request.getRequestDispatcher("资源B的路径").forword(request,response);
请求转发的特点:
* 浏览器地址栏路径不发生变化
* 只能转发到当前服务器的内部资源,不能从一个服务器通过转发访问另一台服务器
* 一次请求,可以在转发资源间使用request共享数据,

标签:HTTP,请求,Request,request,获取,数据
From: https://www.cnblogs.com/wzh-Official/p/17364188.html

相关文章

  • 解决报错requests.exceptions.ConnectionError: HTTPSConnectionPool(host=‘xxx’, p
    解决报错requests.exceptions.ConnectionError:HTTPSConnectionPool(host=‘xxx’,port=443):Maxretriesexceededwithurl使用requests时出错解决报错requests.exceptions.ConnectionError:HTTPSConnectionPool(host=‘xxx’,port=443):Maxretriesexceededwithurl......
  • vue3 + ts + vite 封装 request
    npmiaxios目录 request.ts (直接复制可用)importaxiosfrom"axios";import{showMessage}from"./status";//引入状态码文件import{ElMessage}from"element-plus";//引入el提示框,这个项目里用什么组件库这里引什么//设置接口超时时间axios.defa......
  • XMLHttpRequest发请求的步骤
    /*具体来说,AJAX包括以下几个步骤。以下是AJAX发请求的步骤1.创建XMLHttpRequest实例2.发出HTTP请求3.接收服务器传回的数据4.更新网页数据*///实例化一个对象xhrvarxhr=newXMLHttpRequest(),method="GET",url="https://www.baidu......
  • 【解决】axios 下载文件 Failed to read the 'responseText' property from 'XMLHttp
    主要解决以下两个问题问题一:idm一些网站不允许请求同一文件两次故障原因:IDM在发神经因为它检测到浏览器集成插件未安装,所以诱导你安装。实际上,装了插件问题也会出现。改参数都没用。1.很可能是你点击网页的下载链接有问题(换个网页下载试试,就不提示了),Edge浏览器一直会欺......
  • nacos报错:Nacos cluster is running with 1.X mode, can't accept gRPC request tempo
    nacos报错:Nacosclusterisrunningwith1.Xmode,can'tacceptgRPCrequesttemporarilynacos报错如下:Causedby:com.alibaba.nacos.api.exception.NacosException:Requestnacosserverfailed:atcom.alibaba.nacos.client.naming.remote.gprc.NamingGrp......
  • MissingServletRequestParameterException: Required request parameter 'xxx' for me
    关于简单参数传递的一个异常先前情提要一下,在练习一个带分页的员工查询请求功能,接口文档描述如下其中页码跟记录数是必须参数,然后有个按姓名模糊查询,这个参数是可有可无的然后我最初写的代码长这样用@RequestParam注解来获取这个url中携带的简单参数然后测试页面的时候......
  • How to use axios.js instead of request.js to get data as a buffer All In One
    Howtouseaxios.jsinsteadofrequest.jstogetdataasabufferAllInOne如何使用axios.js代替request.js获取数据作为缓冲区questionconstfs=require("fs");varpath=require("path");const{exit}=require("process");//requ......
  • 解决Python中报错RequestsDependencyWarning: urllib3 (1.26.9) or chardet (5.1.0)/c
      在运行requests包时,出现了以下报错信息:RequestsDependencyWarning:urllib3(1.26.9)orchardet(5.1.0)/charset_normalizer(2.0.12)doesn'tmatchasupportedversion!warnings.warn("urllib3({})orchardet({})/charset_normalizer({})doesn'tmatchasu......
  • Django之视图函数层 (必会三板斧 JsonResponse对象 request对象获取文件 FBV与CBV
    目录视图层之必会三板斧用来处理请求的视图函数都必须返回HttpResponse对象情况一:啥也不返回这里会报一个没有返回HttpResponse对象的错误,由此可见必须要返回一个HttpResponse对象情况二:返回HttpResponse对象点击Ctrl键查看源码可见是HttpResponse类,所以会返回一个值情......
  • spring mvc3.2 requestbody json显示原理
    1,publicinterfaceHandlerMethodReturnValueHandler{ /** *Whetherthegiven{@linkplainMethodParametermethodreturntype}is *supportedbythishandler. * *@paramreturnTypethemethodreturntypetocheck *@return{@codetrue}ifthis......