当前位置: 首页 > news >正文

web实操5——http数据详解,request对象功能

http请求数据

现在我们浏览器f12的那些是浏览器给http格式数据整理之后便于我们阅读的。

原始的http格式信息:
就是按照一定格式和符号的字符串:

请求行:格式如下图
请求头:一个个key,value数据,用,分割多个,是客户端想给服务端说的一些话,服务器可以来解析这些信息。key是固定的,值是不一样的。
请求空行:就是一个空行,用来分隔请求头和请求体的作用。
请求体:get方式没有请求体,换成post方式有,就是请求的一些参数数据。
在这里插入图片描述

请求行

在这里插入图片描述

请求头

请求头还有很多,后面学更多才能知道
先解释一下下图的几个常见的请求头:
在这里插入图片描述
在这里插入图片描述
host:请求的主机是localhost
User-Agent:服务器根据浏览器不同做不同的处理
Accept:我这个浏览器可以接收你给我什么样的响应的信息格式,*/*是什么格式都可以
language:我浏览器可以支持的语言环境
encoding:我可以接收的压缩格式
connection:我的连接还活着,活着表示连接可以被复用,http1.1是可以被复用的,1.0的这里应该是断开的值。
**referer:**比较重要,告诉服务器我这个请求从哪来。在早期很有用,那时候版权意识不强,现在用的不多了。
防盗链,统计:
在这里插入图片描述

请求体

get请求没有请求体
在这里插入图片描述

request和response的原理

在这里插入图片描述
在这里插入图片描述

request的继承体系

实现类RequestFacade是由tomcat创建的。
在这里插入图片描述

request的功能

http格式的数据由四部分构成:
请求行
请求头
请求体
request的功能:
在这里插入图片描述

获取请求消息数据

获取请求行数据

在这里插入图片描述
代码演示:

获取请求头数据

在这里插入图片描述
代码演示:
在这里插入图片描述
refer演示:
在这里插入图片描述
response的意思先不解释,先这么写:
在这里插入图片描述

获取请求体数据

字符数据:username=“张三”
字节数据:上传文件,图片,视频
所以获取流对象有两种流,一种是字节流,一种是字符流。
在这里插入图片描述
代码演示字符输入流:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其他功能:

获取请求参数通用方式

上面方法常用的就这三个:其余的都不是很常用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
基于上面那些,又有一些方法更方便使用request对象,这些都很常用:
在这里插入图片描述
代码举例:

中文乱码问题:

举例:
在这里插入图片描述
在这里插入图片描述
乱码了:
在这里插入图片描述
但是使用get方式,就不会乱码了。

说明:
如果是tomcat8及其以上版本,get方式不会乱码了,tomcat内部帮解决完了。
原因:
get方式参数是在url里面的,post方式参数通过request.getParameter(“username”)获取,内部通过是是流来获取的参数的值,所以需要在get获取之前设置一下流的编码:
在这里插入图片描述
页面上是什么编码,这边就改成什么编码:
在这里插入图片描述
总结:不管get,post直接都在第一行写上就行
在这里插入图片描述

请求转发

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

情景:
aservlet里面的功能在bservlet里面实现,所以相当于aservlet里做了一部分后,跳转到bservlet。
就可以使用请求转发完成。
在这里插入图片描述
举例:
在这里插入图片描述
在这里插入图片描述

共享数据

情景:
aservlet期望发送一些数据给bservelt,数据怎么通信。

域:范围的意思
request域:
代表一次请求的这个范围。基本就在转发的时候用,a调用b,就在一次请求的这个范围内。
a在里面用request存储了一些数据(转发之前存储),由于request对象的范围包括b,所以b可以获得这个数据。
在这里插入图片描述

举例:在这里插入图片描述
在这里插入图片描述

获取ServletContext

今天先看怎么获取,不说获取后的功能怎么用。
在这里插入图片描述
举例:
在这里插入图片描述

登录案例

http://www.lryc.cn/news/483543.html

相关文章:

  • C# 如何动态加载程序集
  • 前端基础的讲解-JS(10)
  • JNI整理总结
  • aws中AcmClient.describeCertificate返回值中没有ResourceRecord
  • Spring Task详细讲解
  • C++初阶 --- 类和对象(1)
  • 《TCP/IP网络编程》学习笔记 | Chapter 7:优雅地断开套接字连接
  • Anaconda 和 conda 是什么关系?就像 pip 和 python 一样吗
  • 「数据治理」核心专业术语解释!
  • Mac Nginx 前端打包部署
  • 乳腺癌诊断分析——基于聚类分析实现
  • Ubuntu 22.04 安装配置opencv
  • 【软考】系统架构设计师-计算机系统基础(3):嵌入式系统
  • 实测运行容器化Tomcat服务器
  • 致敬苹果的国产手机,只会失去更多市场,iPhone一骑绝尘!
  • 《MYSQL45讲》kill不掉的线程
  • 单体架构 IM 系统之 Server 节点状态化分析
  • java xml 文本解析
  • Docker占用空间太大磁盘空间不足清理妙招
  • 编程之路,从0开始:字符函数和字符串函数
  • 化工防爆巡检机器人:在挑战中成长,为化工安全保驾护航
  • 音频采样数据格式
  • 【pytorch】常用强化学习算法实现(持续更新)
  • DAY59||并查集理论基础 |寻找存在的路径
  • Mybatis执行自定义SQL并使用PageHelper进行分页
  • OpenCV DNN
  • 什么时候需要复写hashcode()和compartTo方法
  • PostgreSQL 日志文件备份
  • 2023年MathorCup数学建模B题城市轨道交通列车时刻表优化问题解题全过程文档加程序
  • 数字农业产业链整体建设方案