Http协议(Hyper Text Transfer Protocol)

news2025/1/22 12:56:01

Http协议(Hyper Text Transfer Protocol)

这是一种超文本传输协议,规定了浏览器与服务器中间数据传输的规则

特点:

  1. 基于TCP协议:面向连接,安全
  2. 基于请求-响应模型:一次请求对应一次响应
  3. http协议是无状态的协议,对于事物处理没有记忆能力。每次请求响应都是独立的
  • 缺点:多次请求间不能共享数据
  • 优点:速度快

历史版本:

1.0(无状态连接)

1.1(复用连接)

请求:

数据格式

Request:

request对象和response对象原理:

request和response对象是由服务器创建的,我们来使用

request对象是获取请求消息,response对象是设置响应消息

  1. request对象继承的体系结构:

servletRequest ----接口

|继承|

httpSetvletRequest---接口

|实现|

org.apache.catalina.connector.RequestFacade  类(tomcat编写)

  1. request功能:

获取请求消息数据

获取请求行

GET /day10/demo?name=zhaojing HTTP/1.1

方法:

获取请求方式:GET        String getMethod()
**获取虚拟目录    /day014        String getContextPath()
获取Servlet路径: /demo            String getSetvletPath()
获取get方式的请求参数:name=zhaojing                  String getQueryString()
**获取请求的URI:  /day10/demo                String getRequestURI
获取请求的URL:http://localhost/day10/demo        String getRequsetURL
获取协议及版本号:HTTP 1.1                String getProtocol()
获取客户机的ip地址                    String getRemoteAddr()

获取请求头

方法:

String     getHeader(String name) :通过请求头的名称获得请求头的值
Enumeration<E>     getHeadNames()
获取请求体

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

步骤:
  1. 获取流对象
    1. BufferedReader getReader() :只能操作字符数据
    2. ServletInputStream getInputStream() :获取字节输入流,可以操作所有类型的数据
  2. 再从流对象拿数据
其他功能

1.获取请求参数通用方法:

String getParameter(String name):根据参数名称获取参数值
String[] getParameterValues(String name):根据参数名称获取参数值
Enumeration<String>  getParameterNames():获取所有请求的参数
Map<String,String>  getParameterMap()    :获取所有参数map集合

2.请求转发:一种在服务器内部的资源跳转方式

  1. 步骤:
    1. 通过request对象获取请求转发对象:RequestDispatcher getRequestDispatcher(String path)
    2. 使用RequestDispatcher对象进行转发,forward(ServletRequest request,ServletResponse response)
  2. 特点
    1. 浏览器路径栏不发生变化
    2. 只能转发到当前服务器内部资源
    3. 转发是一次请求
      1. 共享数据
        1. 域对象:一个有作用范围的对象,可以在范围内共享数据
        2. request域:代表一次请求的范围。一般用于请求转发的多个资源共享数据
        3. 方法:
          1. void setAttribute(String name,Object obj):存储数据
          2. Object getAttribute(String name): 通过键获取值
          3. void removeAttribute(String name): 通过键移除键值对
      2. 获取ServletContext
        1. ServletContext getServletContext()

注意:

  1. ***getParameter()取值为null,可能只设置了id属性,而取值用的是name属性
  2. 因为流是不能往回读的,如果我在之前先用request.getInputStream()读取完了请求体,这时候我再来用request.getParameter("name");获取name的值,得到的是个空。或者我先调用了request.getParameter();再来request.getInputStream();尝试获取请求体内容还是空。
  3. 中文乱码问题

*get方式:Tomcat8已经解决乱码问题。

*post方式:会乱码,

解决: 设置流的编码:req.setCharacterEncoding("UTF-8");

(后续连载。。。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1268654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MYSQL】表的基本查询

目录 前言 一、Create&#xff08;增&#xff09; 1.单行数据 全列插入 2.多行数据 指定列插入 3.插入否则更新 4.替换 二、Retrieve&#xff08;查&#xff09; 1.select列 1.1全列查询 1.2指定列查询 1.3查询字段为表达式 1.4为查询结果指定别名 1.5结果去重 …

班主任每日工作流程

以下是班主任的每日工作流程&#xff0c;虽然每天的工作都很繁琐&#xff0c;但是为了学生的成长和发展&#xff0c;班主任们必须认真履行职责&#xff0c;用自己的爱心和责任心去呵护每一个学生。 早晨7&#xff1a;30到校&#xff0c;组织学生打扫卫生&#xff0c;检查学生作…

python基础练习题库实验7

文章目录 题目1代码实验结果题目2代码实验结果题目3代码实验结果题目总结题目1 编写代码创建一个名为Staff的类和方法__init__,以按顺序初始化以下实例属性: -staff_number -first_name -last_name -email 代码 class Staff:def __init__(self, staff_number, first_name,…

【java】图书管理系统

完整代码链接&#xff1a;https://gitee.com/zeng-xuehui/Java_repository/tree/master/test_11_27_1/src我们在写这个系统时&#xff0c;首先需要搭建框架&#xff0c;再实现业务逻辑&#xff1b;图书管理系统是用户通过各种功能对图书进行操作的一个系统&#xff1b;我们需要…

配电网重构单时段+多时段(附带matlab代码)

配电网重构单时段多时段 对于《主动配电网最优潮流研究及其应用实例》的基本复现 简介&#xff1a;最优潮流研究在配电网规划运行中不可或缺&#xff0c;且在大量分布式能源接入的主动配电网环境下尤为重要。传统的启发式算法在全局最优解和求解速度上均无法满足主动配电网运行…

基于字面的文本相似度计算和匹配搜索

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

处理跨域问题

这里只讨论后端对跨域支持,前端的跨域支持一般都是在测试阶段用用的,跨域还是要后端解决 跨域问题的产生:浏览器的一种安全机制-->同源策略限制 同源策略:URL中包括协议&#xff0c;域名&#xff0c;IP&#xff0c;端口都要完全相同&#xff0c;如果有一项不同&#xff0c;浏…

【Vulnhub靶机】lampiao--DirtyCow

文章目录 漏洞介绍简介原因类型版本危害 信息收集主机扫描端口扫描 漏洞探测漏洞利用权限提升nc文件传输编译 参考 靶机地址&#xff1a;lampiao 下载地址&#xff1a;Lampio: 1 漏洞介绍 简介 脏牛&#xff08;Dirty Cow&#xff09;是Linux内核的一个提权漏洞&#xff0c;…

【Python】SqlmapAPI调用实现自动化SQL注入安全检测

文章目录 简单使用优化 应用案例&#xff1a;前期通过信息收集拿到大量的URL地址&#xff0c;这个时候可以配置sqlmapAP接口进行批量的SQL注入检测 &#xff08;SRC挖掘&#xff09; 查看sqlmapapi使用方法 python sqlmapapi.py -h启动sqlmapapi 的web服务&#xff1a; 任务流…

Linux常用命令——rm 命令

文章目录 Linux系统中的rm命令是一个非常强大且危险的工具&#xff0c;用于删除文件和目录。由于其具有不可逆的特性&#xff0c;了解其参数和正确使用非常重要。 1. 基本用法 rm命令的基本格式是rm [选项] 文件或目录。不带任何选项时&#xff0c;rm命令仅删除文件。 示例&a…

计算机图形学:直线的扫描转换算法解析与实现

直线的扫描转换&#xff1a; DDA算法&#xff1a; 推理&#xff1a; 在计算机显示图形时&#xff0c;由于显示计算机的分辨率是有限的所以我们在绘制图形时需要将图形从连续量转换成离散量才能完成图形的绘制&#xff0c;直线的扫描转换就是将连续量转换为离散量的过程。 对…

【计算机网络】虚拟路由冗余(VRRP)协议原理与配置

目录 1、VRRP虚拟路由器冗余协议 1.1、协议作用 1.2、名词解释 1.3、简介 1.4、工作原理 1.5、应用实例 2、 VRRP配置 2.1、配置命令 1、VRRP虚拟路由器冗余协议 1.1、协议作用 虚拟路由冗余协议(Virtual Router Redundancy Protocol&#xff0c;简称VRRP)是由IETF…

iMazing是什么软件?2024最新版本如何下载

iMazing是一款功能强大的iOS设备管理软件&#xff0c;它可以帮助用户备份和管理他们的iPhone、iPad或iPod Touch上的数据。除此之外&#xff0c;它还可以将备份数据转移到新的设备中、管理应用程序、导入和导出媒体文件等。本文将详细介绍iMazing的功能和安全性&#xff0c;并教…

【上海大学数字逻辑实验报告】二、组合电路(一)

一、 实验目的 熟悉TTL异或门构成逻辑电路的基本方式&#xff1b;熟悉组合电路的分析方法&#xff0c;测试组合逻辑电路的功能&#xff1b;掌握构造半加器和全加器的逻辑测试&#xff1b;学习使用可编程逻辑器件的开发工具 Quartus II设计电路。 二、 实验原理 异或门是数字…

Python-pip配置国内镜像源,快速下载包

文章目录 国内镜像源临时使用永久配置添加环境变量Path测试关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 国内…

Java数据结构之《栈实现括号匹配的检验》问题

一、前言&#xff1a; 这是怀化学院的&#xff1a;Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究&#xff0c;问题基本解决&#xff0c;若有bug欢迎下方评论提出意见&#xff0c;我会第一时间改进代码&#xff0c;谢谢&#xff01;) 后面其他编程题只要我写完…

黑马头条登陆功能详述

基于session的短信登陆&#xff1a; 发送验证码、短信验证码登陆、注册在后端&#xff0c;校验登陆在springmvc的连接器中&#xff0c;根据请求携带cookie来确定找到session 短信验证登陆与注册新用户&#xff1a; /*** 发送验证码*/Overridepublic Result sendCode(String ph…

Spark on yarn 模式的安装与部署

任务描述 本关任务&#xff1a; Spark on YARN 模式的安装与部署。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; Spark 部署模式的种类&#xff1b;Spark on YARN 模式的安装。 Spark 部署模式 Spark 部署模式主要分为以下几种&#xff0c;Spark Stand…

基于LangChain实现的知识库问答工具Langchain-Chatchat

基于embeddingLangChainChatGLM2-6B 构建行业知识库 Langchain-Chatchat LangChain 中文文档 langchain 本文使用的Langchain-Chatchat版本是0.2.7 一、构建垂类行业知识库的两种方案 方案一&#xff1a;使用开源LLM本地部署和微调 优点&#xff1a;数据最安全&#xff0c…

Java第二十章总结

一、线程简介 1.什么是进程&#xff1a; 进程是程序的运行过程&#xff0c;是系统进行资源分配和调度的一个独立单位。通俗来讲&#xff0c;进程就是在操作系统中运行的程序&#xff0c;例如&#xff1a;电脑中运行的微信、eclipse、idea等。 2.什么是线程 线程是操作系统能…