说道说道JSP和HTTP吧

大家都知道的是JSP(Java Server Pages),也知道有个传输协议为HTTP协议,那么他俩到底有啥关系?像是有关系但又有点说不清楚,这里咱们一块捋一捋。

我们说servlet处理客户端请求的方式有2种:get和post。

也知道了http的8种请求方法:get、post、put、delete、options、trace、connect、head。

那http的get、post方法和servlet处理请求的get、post方式有啥关系呢?我们再说servle的时候都说get和post根据表单的method方法的方式来确定是get还是post,那就有个问题了。

我们刚开始打开浏览器还没有提交表单的时候,浏览器怎么知道是用哪种方式呢?是get还是post呢,毕竟我们只在浏览器输入了URL地址,没有提交任何form。

为什么会有以上的疑问?

因为我们上面提到的http协议,在发送报文的时候,报文前面都是包含请求方式的,例如我们对我们自己的网站里面的index.html请求,在浏览器输入http://localhost:8080/index.html,回车之后客户端向服务器端发送请求:

GET /index.html HTTP/1.0
Host: www.gefionsoftware.com
User-Agent: Mozilla/4.5 [en] (WinNT;I)
Accept: image/gif, image/jpeg, image/pjpeg, image/ping,*/*
Accept-Language : en
Accept-Charset : iso-8859-1,*,utf-8

上面的例子里面,第一行是请求行,表明是GET命令,请求的资源是index.html ,协议是HTTP1.0。

那么GET命令是怎么确定的呢?

1、浏览器会发送Get请求的情况

A、直接在浏览器地址栏输入某个地址。

B、点击某个链接。

C、表单默认的提交方式,也就是不指定method方法的时候,默认是Get方式。

通过上面的说明,大家应该就清楚了,直接在浏览器输入地址是get方式发送请求。

2、浏览器会发送post请求的情况

设置表单method = “post”,在这种情况下,请求方式才会是post方式。

3、get请求的特点

请求参数会添加到URL的后面,只能添加少量参数(因为请求行只有一行,大约只能存放2K左右的数据)

请求参数会显示在浏览器地址栏,路由器会记录请求地址

4、post请求的特点

1、 请求参数添加到实体内容里面,可以添加大量的参数(也解释了为什么浏览器地址栏不能发送post请求,在地址栏里我们只能填写URL,并不能进入到Http包的实体当中)

2、 相对安全,但是,post请求不会对请求参数进行加密处理(可以使用https协议来保证数据安全)。

5、http和jsp没有必然联系

今天去讲http报文的默认get方式,其实要表达的内容跟jsp没有关系,但我们在学jsp的时候,我们在服务器端放着的静态或者动态页面,怎么去展示呢?其实就是浏览器端通过http协议或者报文的方式发送请求到服务器端,服务器根据请求内容去进行业务逻辑处理,然后响应到浏览器的页面上。

举个例子:在浏览器输入栏中输入https://blog.csdn.net/luohaitao  我的博客主页就出现在浏览器窗口。这背后是什么在起作用呢?这个就需要弄明白。

使用浏览器从网站获取HTML页面时,实际在使用Hypertext Transfer Protocol (HTTP) HTTP协议规定了信息在Internet上的传输方法,特别规定了浏览器与服务器的交互方法。

从网站获取页面时,浏览器在网站上打开了一个对网络服务器的连接,并发出请求,服务器收到请求后响应,所以HTTP协议被称作“请求和响应”协议。

浏览器可以直接请求某个网址例如:www.baidu.com,域名映射到ip,然后关联到某个welcome.html或者index.html或者welcome.jsp,也或者是通过映射过滤去处理浏览器的请求。

一个典型请求通常包含许多头,称作请求的HTTP头。头提供了关于信息体的附加信息及请求的来源,其中有些头是标准的,有些头和特定的浏览器有关。

一个请求还可能包含信息体。例如信息体可包含HTML表单的内容。在HTML表单上单击Submit按钮时,该表单使用ACTION=“POST”或ACTION=”GET”特征,输入表单的内容都被发送到服务器上,该表单内容就由POST方法或GET方法在请求的信息体中发送。

服务器在收到请求时,返回HTTP响应。响应也有某种结构,每个响应都由状态行开始,可以包含几个头及可能的信息体,称作响应的HTTP头和响应信息体。这些头和信息体由服务器发送给客户的浏览器,信息体就是客户请求的网页运行结果,对于JSP页面,就是网页的静态信息。

6、jsp怎么响应http的请求方法

还记得前面讲的http的8种请求方法:get、post、put、delete、options、trace、connect、head吧,在讲servlet的时候我们重点提到了响应get和post的方法,对应的servlet对象为:HttpServlet,那么我们很自然的要问,http的其他请求方法怎么办?其实吧,HttpServlet里面也都有了,只是我们前面没用到罢了。

doHead():用来处理HTTP客户端的HEAD请求。

doGet():如果HTTP客户端发给服务器的请求是GET方式,这个方法将被service方法调用。

doPost(): 如果HTTP客户端发给服务器的请水是POSI万式,区个方法会被service方法调用。

doDelete():用来处理HTTP客户端的DELETE请求。

doOptions():用来处理HTTP的OPTIONS请求此外,还有doPut()方法和doTrace()

铁子们,是不是都get到了?能理解你们的是不是只有我才能彩透你们想要问什么,这下心里不堵得慌了吧。

参考资料:

https://blog.csdn.net/guanjungao/article/details/36191107

https://blog.csdn.net/m0_67444502/article/details/127979516

https://blog.csdn.net/m0_64892750/article/details/122114632

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

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

相关文章

使用Intellij idea编写Spark应用程序(Scala+Maven)

使用Intellij idea编写Spark应用程序(ScalaMaven) 对Scala代码进行打包编译时,可以采用Maven,也可以采用sbt,相对而言,业界更多使用sbt。这里介绍IntelliJ IDEA和Maven的组合使用方法。IntelliJ IDEA和SBT的组合使用方法&#xf…

FANUC机器人零点标定的基本步骤(出厂数据)

FANUC机器人零点标定的基本步骤(出厂数据) FANUC 零点数据存在问题的机器人通常会出现以下几种报警: (1)SRVO-062报警 - 脉冲编码器数据丢失,机器人完全不能动,具体消除方法可参考以下链接中的内容: FANUC机器人SRVO-062报警原因分析及处理对策 (2)SRVO-075报警 -…

自己动手做一个批量doc转换为docx文件的小工具

前言 最近遇到了一个需求,就是要把大量的doc格式文件转换为docx文件,因此就动手做了一个批量转换的小工具。 背景 doc文件是什么? “doc” 文件是一种常见的文件格式,通常用于存储文本文档。它是 Microsoft Word 文档的文件扩…

探索 Flutter 中的 NavigationRail:使用详解

1. 介绍 在 Flutter 中,NavigationRail 是一个垂直的导航栏组件,用于在应用程序中提供导航功能。它通常用于更大屏幕空间的设备,如平板电脑和桌面应用程序。NavigationRail 提供了一种直观的方式来浏览应用程序的不同部分,并允许…

PyStructureFactor:隧道电离率中分子结构因子的 Python 代码

PyStructureFactor:隧道电离率中分子结构因子的 Python 代码 隧道电离是强场和阿秒科学的核心。在本文中,我们提出了PyStructureFactor——一个通用的Python代码,用于计算强激光场下常见分子的隧道电离率的结构因子。数值实现基于积分表示…

004——内存映射(基于鸿蒙和I.MAX6ULL)

目录 一、 ARM架构内存映射模型 1.1 页表项 1.2 一级页表映射过程 1.3 二级页表映射过程 1.4 cache 和 buffer 二、 鸿蒙内存映射代码学习 三、 为板子编写内存映射代码 3.1 内存地址范围 3.2 设备地址范围 一、 ARM架构内存映射模型 (以前我以为页表机制…

使用插件将swagger文档转html或pdf

github上有maven开源插件swagger2markup将swagger文档转为.adoc格式的文档,另外一个maven开源插件asciidoctorj-pdf则可以将.adoc格式的文档转为html和pdf。由于GitHub访问不稳定,在gitee上有镜像项目。所以我就贴gitee上的项目地址了。 实现从swagger文…

Python下载音乐

今天我就来分享一下我的方法:Python爬虫 在CS dn社区中我浏览了许多关于爬虫代码,可都有各自的缺陷,有的需要ID比较麻烦,这里我编写了一个程序,他只需要输入歌曲名字即可进行搜索爬取并下载 话不多说,下面的程序复制…

局域网内的手机、平板、电脑的文件共享

在日常工作生活中,经常需要将文件在手机、平板、电脑间传输,以下介绍三种较为便捷的方法: 1.LocalSend 该软件是免费开源的,可以在局域网内的任意手机、平板、电脑间传递文件,并且任意一方都可以作为“发送方”和“接…

MapReduce学习问题记录

1、如何跳过对某行数据的处理 第一行数据是字段名不需要处理,我们知道第一行偏移量是0(行记录的时候是从数组首地址开始,到了行标识符进行一次计数,这个计数就是行偏移量,从0开始),我们根据偏移…

线程池的7大参数

线程池的7大参数 一、 corePoolSize 线程池核心线程大小 核心线程永远不会销毁,即使他们处于空闲状态,除非设置了allowCoreThreadTimeOut。任务提交到线程池后,首先会检查当前线程数是否达到了corePoolSize,如果没有达到的话&…

【绘图案例-奇偶填充规则 Objective-C语言】

一、接下来,我们来学习奇偶填充规则 1.就是说,你在填充的时候,实际上,是有一些规则的, 奇偶填充规则:even-odd rule, even:偶数,odd:奇数 2.把之前的copy代码,复制粘题一份,名字改成“07-奇偶填充规则”, 把ppt里的代码复制粘贴过来, 我们来看一下这段儿代码,…

CSS(一)

一、CSS 简介 1.1 HTML 的局限性 说起 HTML&#xff0c;这其实是个非常单纯的家伙&#xff0c;他只关注内容的语义。比如 <h1> 表明这是一个大标题&#xff0c;<p> 表明这是一个段落&#xff0c;<img> 表明这儿有一个图片&#xff0c;<a> 表示此处有链…

每日一题 --- 设计链表[力扣][Go]

设计链表 题目&#xff1a;707. 设计链表 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。 如果是双向链表&#xff0c;则…

(九)任务通知

一、概念 &#xff08;1&#xff09;FreeRTOS从V8.2.0版本开始提供任务通知 &#xff08;2&#xff09;每个任务都有一个32位的通知值 &#xff08;3&#xff09;发送任务通知的几种情况 3.1 发送通知给任务&#xff0c;如果有通知未读&#xff0c;不覆盖通知值 3.2 发送通知给…

pytest之统一接口请求封装

pytest之统一接口请求封装 pytest的requests_util.pyrequests_util.py 接口自动化测试框架的封装yaml文件如何实现接口关联封装yaml文件如何实现动态参数的处理yaml文件如何实现文件上传有参数化时候&#xff0c;怎么实现断言yaml的数据量大怎么处理接口自动化框架的扩展&#…

FFmepg--AVFilter过滤器使用以及yuv视频裁剪

文章目录 AVFilter 流程&#xff1a;api核心代码变量yuv视频裁剪 AVFilter 流程&#xff1a; ⾸先使⽤split滤波器将input流分成两路流&#xff08;main和tmp&#xff09;&#xff0c;然后分别对两路流进⾏处理。对于tmp流&#xff0c;先经过crop滤波器进⾏裁剪处理&#xff0c…

Kotlin零基础入门到进阶实战

教程介绍 Kotlin现在是Google官方认定Android一级开发语言&#xff0c;与Java100%互通&#xff0c;并具备诸多Java尚不支持的新特性&#xff0c;每个Android程序员必备的Kotlin课程&#xff0c;每个Java程序员都需要了解的Kotlin&#xff0c;掌握kotlin可以开发Web前端、Web后…

轻量C++IDE CodeLite的配置和使用

文章目录 下载和安装新建项目测试项目编译的配置单独项目的配置全局项目的配置开启c++11配置第三方库代码补全codelite配置文件路径解决程序中文乱码的问题中文语言支持本人用过的C++环境:Code::Block、Visual Studio、C-Free、Dev-C、QT-Creater、Geany、现在的CodeLite,Cod…

C语言:二叉树基础

一、树 1.1 树的概念 1.树是有n个节点组成的具有层次关系的集合&#xff0c;是一种非线性的结构。 2.树的第一个节点称为根&#xff0c;根没有前驱节点。 3.除了根节点&#xff0c;其余每个节点都只有一个前驱节点&#xff0c;有0个或多个后继节点。 4.节点的度&#x…