对Request的理解

介绍

HttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息都属于客户端发送过来的信息,service()方法中形参接收的是HttpServletRequest接口的实例化对象,表示该对象主要应用在HTTP协议上,该对象是由Tomcat封装好传递过来的。
HttpServletRequest是ServletRequest的子接口,ServletRequest只有一个子接口,就是HttpServletRequest。既然只有一个子接口为什么不将两个接口合并为一个呢?
从长远上讲,现在主要用的协议是HTTP协议,但以后可能会出现更多新的协议。若以后想要支持这种新协议,只需要直接继承ServletRequest接口就好了。
在HttpServletRequest接口中,定义的方法很多,但都是围绕接收客户端参数的。但是怎么拿到该对象呢?不需要,直接在Service()方法中由容器传入过来,而我们需要做的就是取出对象中的数据,进行分析、处理。

常用方法 (原文链接:https://blog.csdn.net/Mr_Bumble/article/details/112446072)

getRequestURL() 获取客户端发出请求时的完整URL。
 getRequestURI() 获取请求行中的资源名称部分(项目名称开始)
getQueryString() 获取请求行中的参数部分
getMethod() 获取客户端请求方式

 getProtocol() 获取HTTP版本号
getContextPath() 获取webapp名字
 getParameter(“参数名”)。返回的是一个字符串 获取某个请求地址中参数的值

		//获取客户端请求的完整URL(从http开始,到?前面结束)
        String url = req.getRequestURL().toString();
        System.out.println("获取客户端请求的完整URL "+url);
        
        //获取客户端请求的部分URL (从站点名开始,到?前面结束)
        String uri = req.getRequestURI();
        System.out.println("获取客户端请求的部分URL "+ uri);
        
        //获取请求行中的参数部分
        String queryString = req.getQueryString();
        System.out.println("获取请求行中的参数部分 "+queryString);
        
        //获取客户端的请求方式
        String method = req.getMethod();
        System.out.println("获取客户端的请求方式 "+method);
        
        //获取HTTP版本号
        String protocol = req.getProtocol();
        System.out.println("获取HTTP版本号 "+protocol);
        
        //获取webapp名字(站点名)

json模块 

data = {"name":"musen","id":18,"msg":None}
json_data = '{"name":"musen","id":18,"msg":null}'

# 正确操作
import json
# 将json字符串转为python类型,会自动将null转为None
res = json.loads(json_data) # {"name":"musen","id":18,"msg":None}-->json
# 将python类型转为json字符串,
res = json.dumps(json) # {"name":"musen","id":18,"msg":null} -->str

#错误操作1. 不能使用dict将json字符串转成字典
# res = dict(json_data)

#错误操作2. 不能使用过eval将json字符串转为字典,json中的null在python中无法识别,会当成变量
# res = eval(json_data

获取响应数据

  • res.text:自动识别文本中的编码格式进行解码,有时候不准确,出现乱码( html,xml,json均可 ),获取的是字符串类型

  • res.content.decode("utf8"):需要指定解码方式,获取的是字符串类型

  • res.json():获取返回内容中的json数据(只能在返回数据是json的情况下使用),可以将json字符串转成对应的python类型的数据

  • res.headers : 响应头

  • res.status_code : 响应码

(4)获取cookies: 类字典形式

  • 例如: <Cookies JSESSIONID = 22222222222222> 取JSESSIONID :res.cookies['JSESSIONID']

(5)获取请求头: res.request.headers

(6)请求需要登录才能访问的接口

  • http请求时无状态的,不会记录上次的请求数据

  • 使用requests发送请求,不会记录上次请求的cookie信息,需要使用session对象来发送请求

(7)session对象发送请求

  • session对象可以自动传递cookie信息(下一次请求会自动携带上次请求的cookie)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值