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的更多相关文章
随机推荐
- ATP - UI 自动化测试用例管理平台搭建
用到的工具:python3 + django2 + mysql + RabbitMQ + celery + selenium python3和selenium这个网上很多教程,我不在这一一说明: ...
- vscode好用插件总结
做个记录:https://blog.csdn.net/xishining/article/details/90819481 1.Auto Rename Tag --自动重命名成对的HTML标记.假如你 ...
- Python爬虫系统化学习(2)
Python爬虫系统学习(2) 动态网页爬取 当网页使用Javascript时候,很多内容不会出现在HTML源代码中,所以爬取静态页面的技术可能无法使用.因此我们需要用动态网页抓取的两种技术:通过浏览 ...
- lambda表达式在python和c++中的异同
Lambda表达式是干么的?.lambda表达式首先是一个表达式,是一个函数对象一个匿名函数,但不是函数.现在流行语言例如:JS.PHP都支持一种和面向过程.面向对象并列的函数式编程,lambda就是 ...
- CentOS rpm常用功能记录
CentOS7主要有rpm和yum这两种包软件的管理.两者有功能上的区别,其中主要区别是:yum使用简单但需要联网,yum会去网上包源去获取所需要的软件包.而rpm的需要做的事情就更细一些,比如我们需 ...
- mysql从一个表提取数据更新另外一个表(修复表数据的不一致)
目前碰到一个数据不一致的情况,有两张表,一张项目表,一张项目成员表,项目表有个字段是项目工作时间,是项目成员的工作时间汇总.是由于该了逻辑,所以要把数据改成一致. 项目表的大致结构如下. 表名:pro ...
- django Form 效验
Django 登入效验 .py from django import forms from student import models from django.core.exceptions impo ...
- 用实战玩转pandas数据分析(一)——用户消费行为分析(python)
CD商品订单数据的分析总结.根据订单数据(用户的消费记录),从时间维度和用户维度,分析该网站用户的消费行为.通过此案例,总结订单数据的一些共性,能通过用户的消费记录挖掘出对业务有用的信息.对其他产 ...
- 关于HDFS存储元数据的NameNode持久化存储
NameNode持久化场景引入: 问题:NameNode宕机,导致内存中的文件元数据丢失怎么办?我们知道元数据是存储来内存中的,所以一旦宕机,内存数据是会丢失的,因此为了避免数据丢失,HDFS中出现了 ...
- unittest系列(三)unittest用例如何执行
在前面的分享中,我们分别讲了unittest的相关流程以及相关断言,那么很多人,都会问了unittest的用例,应该如何执行呢,这次,我们就来看看,unittest用例如何执行.首先,我们可以使用py ...