HTTP--Request详解

请求消息数据格式

请求行

python 复制代码
请求方式 请求url 请求协议/版本
GET /login.html    HTTP/1.1

请求头

客户端浏览器告诉服务器一些信息

请求头名称: 请求头值

常见的请求头:

User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息

可以在服务器端获取该头的信息,解决浏览器的兼容性问题

Referer:http://localhost/login.html

告诉服务器,我(当前请求)从哪里来?

作用:

防盗链:

统计工作:

请求空行

空行,就是用于分割POST请求的请求头,和请求体的。

请求体(正文)

封装POST请求消息的请求参数的

字符串格式:

python 复制代码
POST /login.html    HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
 
username=zhangsan    

获取请求消息数据

获取请求行数据

GET /day14/demo1?name=zhangsan HTTP/1.1

方法:

获取请求方式 :GET

String getMethod()

(*)获取虚拟目录:/day14

String getContextPath()

获取Servlet路径: /demo1

String getServletPath()

获取get方式请求参数:name=zhangsan

String getQueryString()

(*)获取请求URI:/day14/demo1

String getRequestURI(): /day14/demo1

StringBuffer getRequestURL() :http://localhost/day14/demo1

URL:统一资源定位符 : http://localhost/day14/demo1

URI:统一资源标识符 : /day14/demo1

获取协议及版本:HTTP/1.1

String getProtocol()

获取客户机的IP地址:

String getRemoteAddr()

获取请求头数据

方法:

(*)String getHeader(String name):通过请求头的名称获取请求头的值

Enumeration getHeaderNames():获取所有的请求头名称

获取请求体数据:

请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数

步骤:

获取流对象

BufferedReader getReader():获取字符输入流,只能操作字符数据

ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据

再从流对象中拿数据

获取请求参数通用方式

不论get还是post请求方式都可以使用下列方法来获取请求参数

String getParameter(String name):根据参数名称获取参数值 username=zs&password=123

String[] getParameterValues(String name):根据参数名称获取参数值的数组 hobby=xx&hobby=game

Enumeration getParameterNames():获取所有请求的参数名称

Map<String,String[]> getParameterMap():获取所有参数的map集合

请求转发

一种在服务器内部的资源跳转方式

步骤:

通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)

使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)

特点:

浏览器地址栏路径不发生变化

只能转发到当前服务器内部资源中。

转发是一次请求

共享数据

域对象:一个有作用范围的对象,可以在范围内共享数据

request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据

方法:

void setAttribute(String name,Object obj):存储数据

Object getAttitude(String name):通过键获取值

void removeAttribute(String name):通过键移除键值对

获取ServletContext

ServletContext getServletContext()

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末领取】


【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图+全套资料】


一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

相关推荐
23zhgjx-zgx1 小时前
OSPF:虚链路
网络·tcp/ip·华为·智能路由器·ensp
咩咩觉主1 小时前
Unity网络开发基础 (2) 网络协议基础
网络·unity·c#
C182981825752 小时前
tcp udp区别
网络协议·tcp/ip·udp
嵌入式悦翔园3 小时前
嵌入式设备的功能安全和信息安全?
网络·安全·php
喝养乐多长不高4 小时前
HTTPS加密原理详解
网络·网络协议·http·https·证书·非对称加密·对称加密
D-river5 小时前
【Academy】HTTP 请求走私 ------ HTTP request smuggling
网络·网络协议·安全·web安全·http·网络安全
只做开心事7 小时前
Linux网络之数据链路层协议
linux·服务器·网络
AI学IT7 小时前
(安全防御)旁挂组网双机热备负载分担实验
运维·服务器·网络
挣扎与觉醒中的技术人7 小时前
【技术干货】三大常见网络攻击类型详解:DDoS/XSS/中间人攻击,原理、危害及防御方案
前端·网络·ddos·xss
Lin桐8 小时前
②Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网
linux·网络协议·tcp/ip·网络安全·缓存·信息与通信·信号处理