面试题常问的Get与Post区别

简介: 面试题常问的Get与Post区别

1、两者的地址状态栏和请求实体对比:


(1)Get方式:

36.png37.png

2,总结Get和Post的区别:



1,区别:

(1)Get请求的数据(参数)会显示在地址栏,而Post不会,所以,Post比Get更加安全。

(2)Post请求的参数存放到了请求实体中而Get没有请求实体,Get是存储在请求行中。

(3)数据传输Post有优势:Get方式请求的数据不能超过2k,而Post 没有上限

(4)浏览缓存Get有优势:Get具有数据缓存,而Post没有。

从优势角度看,数据传输使用Post,数据浏览查询使用Get。即查询时使用Get,其他时候使用Post。表单全部使用Post提交。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2,Get方式:

1,直接在浏览器地址栏敲回车

2,表单中,method="get"

3,超链接

 

3,注意点:

注意点:只有表单中使用method=post,才是Post方式,不写默认是Get。

 

form表单get方式提交时,action中带参数传递不了

□ 举例:    <form action="/shoppingcart?cmd=save" method="get">

□ 结果: 参数save无法传递过去,在shoppingcartServlet 中 获取cmd参数结果是null

□ 解决:方式一:将请求方式改为:post   

   方式二:通过隐藏的input标签来携带参数  <input name="cmd" type="hidden" value="save">

分析一下action携带参数为啥get请求传递不过去(需要使用工具----firebug工具,然后分析请求行、请求实体等等)


38.png39.png

 

 

 

 

补充一下:Servlet请求的浏览:


40.png41.png


 

❀ 文字描述:

42.png

43.png



目录
相关文章
|
26天前
|
Java
【Java集合类面试二十八】、说一说TreeSet和HashSet的区别
HashSet基于哈希表实现,无序且可以有一个null元素;TreeSet基于红黑树实现,支持排序,不允许null元素。
|
26天前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
26天前
|
存储 Java 索引
【Java集合类面试二十四】、ArrayList和LinkedList有什么区别?
ArrayList基于动态数组实现,支持快速随机访问;LinkedList基于双向链表实现,插入和删除操作更高效,但占用更多内存。
|
26天前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
【多线程面试题十】、说一说notify()、notifyAll()的区别
notify()唤醒单个等待对象锁的线程,而notifyAll()唤醒所有等待该对象锁的线程,使它们进入就绪队列竞争锁。
|
26天前
|
安全 Java
【Java集合类面试十六】、HashMap与ConcurrentHashMap有什么区别?
HashMap是非线程安全的,而ConcurrentHashMap通过减少锁粒度来提高并发性能,检索操作无需锁,从而提供更好的线程安全性和性能。
|
25天前
|
算法 Java
【多线程面试题十八】、说一说Java中乐观锁和悲观锁的区别
这篇文章讨论了Java中的乐观锁和悲观锁的区别,其中悲观锁假设最坏情况并在访问数据时上锁,如通过`synchronized`或`Lock`接口实现;而乐观锁则在更新数据时检查是否被其他线程修改,适用于多读场景,并常通过CAS操作实现,如Java并发包`java.util.concurrent`中的类。
|
25天前
|
Java
【多线程面试题十三】、说一说synchronized与Lock的区别
这篇文章讨论了Java中`synchronized`和`Lock`接口在多线程编程中的区别,包括它们在实现、使用、锁的释放、超时设置、锁状态查询以及锁的属性等方面的不同点。
【多线程面试题九】、说一说sleep()和wait()的区别
sleep()和wait()的主要区别在于sleep()是Thread类的静态方法,可以在任何地方使用且不会释放锁;而wait()是Object类的方法,只能在同步方法或同步代码块中使用,并会释放锁直到相应线程通过notify()/notifyAll()重新获取锁。
【多线程面试题 三】、 run()和start()有什么区别?
run()方法定义线程执行的任务,而start()方法启动线程,使得run()在新的线程中异步执行;直接调用run()方法只会同步执行run()中的代码,不会创建新线程。