JAVAEE_Servlet_11_GetAndPost
Get请求和Post请求
* Get请求 和 Post请求各方面分析
- 什么情况下浏览器发送的是Get请求?
1. 通过浏览器的地址栏输入地址,所访问的URL都是get请求,如果以post定义,那么由于请求与实现的不一致,会返回405错误。
2. 点击链接
3. 表单默认的提交方式
- 什么情况下浏览器发送的是Post请求?
1.只有将“《form action="" method="Post"> </form》”标签的,method属性设置为Post的时候,才是浏览器发送的才是post请求,剩下所有的浏览器请求都是Get请求。
- 什么时候使用Get请求?
1. 请求是为了查找资源,HTML表单数据仅用来帮助搜索。
2. 请求结果无持续性的副作用。
3. 收集的数据以及HTML表单内的输入字段名称的总长不超过1024个字符。
- 什么时候使用Post请求?
1. POST用于创建资源,资源的内容会被编入HTTP请示体的内容中。例如,处理订货表单、在数据库中加入新数据行等。
2. GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长度的限制,此时使用Post
3. 要传送的数据不是采用7位的ASCII编码。
- Get请求的特点?
1. 请求参数会添加到请求资源路劲的后面,只能添加少量参数(因为请求行只有一行,大约只能存放2K左右的数据)
2. 请求参数会显示在浏览器地址栏,路由器会记录请求地址
- Post请求的特点?
1. 请求参数添加到请求体内容里面,可以添加大量的参数(也解释了为什么浏览器地址栏不能发送post请求,在地址栏里我们只能填写URL,并不能进入到Http包的实体当中)
2. 相对安全,但是,post请求也不会对请求参数进行加密处理(可以使用https协议来保证数据安全)
- Get请求和POST请求的区别?
1. get:
- get请求在请求行上提交数据. 格式:uri? name=value&name=value
- get请求提交方式最终会显示在浏览器地址栏上
- get请求在请求行上提交数据,所以提交的数据有长度限制
- get请求只能提交字符串类型数据。
- get请求的最终结果会被浏览器缓存Cache进行收纳,而post不会
2.post:
- Post请求在请求体中提交数据,相对安全,格式:name=value&name=value
- post请求提交方式最终不会再地址栏中显示
- Post请求在请求体中提交数据,所以提交的数据没有长度限制
- post请求可以提交各种类型数据,包括 视频, 音乐,图片,所以文件上传必须使用post请求
- Post请求不使用缓存机制 no-cache,不会被浏览器缓存收纳。
- Get请求和POST请求如何选择使用?
- 传送数据内容包括敏感数据,必须使用post
- 传送数据格式不是字符串类型数据,必须使用post
- 传送数据很多必须使用post
- 为了修改服务器端资源的时候使用post
- 剩下情况都要使用get。
- get请求一般是从服务器端读取资源,读取的这个资源在短时间内是不会发生变化的,所以get请求最终的结果被浏览器缓存起来了。
- post请求一般是修改服务器端的资源,而每次修改的结果都是不同的,所以没必要将post缓存。
- 浏览器缓存
1. 浏览器将数据缓存之后,缓存的资源是和某个特定的路径缓存在一起的,只要浏览器再发送相同的请求路径,这是时候回去缓存中获取资源,不再访问服务器,利用这种方式降低服务器的压力,提高用户的体验。
2. 但是有时候我们不希望所请求得资源走缓存,希望它走服务器,可以在请求路径后面添加时间戳
例如: http://localhost:8080/prj-servlet-09/loginServlet?timestamp=123456
- 需要保证前端请求方式和后台程序处理方式一致
1.前端的页面发送的请求方式应该和服务器端需要的请求方式一致。
2.服务器端需要get请求,前端就应该发送get请求,服务器端需要post请求,前端就应该发送pst请求。若不一致应该提示错误信息。
JAVAEE_Servlet_11_GetAndPost的更多相关文章
随机推荐
- 1.代码规范之 if 语句编写
最近在看项目代码的时候, 看到需要判断的地方,出现了if的多重嵌套, 甚至是出现了十几层的嵌套, 代码的阅读性非常之差. 简单的举个例子(这里只是两层的嵌套): public class demo ...
- springboot对数据库密码加密
第一步:maven引jar包 <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifa ...
- 从零开始使用 webpack5 搭建 react 项目
本文的示例项目源码可以点击 这里 获取 一.前言 webpack5 也已经发布一段时间了,其模块联邦.bundle 缓存等新特性值得在项目中进行使用.经过笔者在公司实际项目中的升级结果来看,其提升效果 ...
- Linux磁盘分区格式化和扩容
Note:根据各系统上磁盘的类型不同,磁盘命名规则也会不同:例如/dev/xvd,/dev/sd,/dev/vd,/dev/hd 目录 磁盘格式化 MBR格式 GPT分区 磁盘扩容 MBR格式扩容 G ...
- 《Linux学习笔记:文本编辑最佳实践》
[Linux文本编辑的四种方法] 例如,要想test.txt文件添加内容"I am a boy",test.txt在当前目录中 方法一:vi编辑法 [推荐] 打开终端,输入vi t ...
- 剑指 Offer 56 - I. 数组中数字出现的次数 + 分组异或
剑指 Offer 56 - I. 数组中数字出现的次数 Offer_56_1 题目描述 解题思路 java代码 /** * 方法一:数位方法 */ class Offer_56_1_2 { publi ...
- POJ-1459(最大流+EK算法)
Power Network POJ-1459 这题值得思索的就是特殊的输入,如何输入一连串字符.这里采用的方法是根据输入已知的输入格式,事先预定好要接受的数据类型. 这里套用的板子也是最大流的模板,但 ...
- 聊一聊和Nacos 2.0.0对接那些事
前言 nacos 2.0.0 已经发布了 alpha1, alpha2 和 beta 三个版本了,部分测试报告也已经出来了. Nacos2.0.0-ALPHA2 服务发现性能测试报告 Nacos 2. ...
- External Libraries中没有Maven的jar包的原因(已解决)
**深坑!** ## External Libraries中没有Maven的jar包的原因(已解决) 2021年3月1日 --- 搭建一个新项目 IDEA 从 Git 上拉 拉去Maven项目然后 m ...
- Ubuntu pip版本的安装,卸载,查看,更新
pip版本的安装: sudo apt-get install python3-pip pip版本的查看: pip3 --version pip3 -V pip更新: sudo pip3 install ...