JSP、Servlet中g(shù)et請(qǐng)求和post請(qǐng)求的區(qū)別總結(jié)
在學(xué)習(xí)JavaWeb最初的開始階段,大家都會(huì)遇到HttpServlet中的doGet和doPost方法。前兩天看《Head First Servlets & JSP》看到其中講關(guān)于Servlet中g(shù)et請(qǐng)求和post請(qǐng)求的區(qū)別,現(xiàn)總結(jié)如下:
1:請(qǐng)求數(shù)據(jù)的大小不同。
因?yàn)間et請(qǐng)求的數(shù)據(jù)是要追加到URL中,而URL的數(shù)據(jù)量一般不能超過(guò)2K,所以用get請(qǐng)求的方法對(duì)數(shù)據(jù)的大小有限制。而post請(qǐng)求方法是把數(shù)據(jù)放在消息體中,所以理論上對(duì)數(shù)據(jù)量沒有限制。(但是實(shí)際操作中也不能能太大)
2:安全性不一樣
因?yàn)間et請(qǐng)求的數(shù)據(jù)是追加在URL中,外部用戶能很方便的看到,從這個(gè)角度上來(lái)講不安全。而post方法因?yàn)槭侵v請(qǐng)求放在消息體中,不會(huì)直接在URL中顯示所以從這個(gè)角度來(lái)說(shuō)數(shù)據(jù)會(huì)比較安全。
3:書簽建立
get請(qǐng)求可以建立書簽;post請(qǐng)求則不能。例如:假設(shè)你有一個(gè)頁(yè)面允許用戶指定搜索規(guī)則。用戶可能一個(gè)星期之后才回來(lái),想要得到原來(lái)的數(shù)據(jù),但此時(shí)服務(wù)器上已經(jīng)有新的數(shù)據(jù)了。
4:方法的使用
get用于得到某些東西,只是簡(jiǎn)單的獲取,不會(huì)對(duì)服務(wù)器做任何的改變。post則用戶發(fā)送數(shù)據(jù)來(lái)進(jìn)行處理,可以修改服務(wù)器上的數(shù)據(jù)。
5:請(qǐng)求是否冪等
get請(qǐng)求是冪等的,它只是要得到一些東西,不會(huì)修改服務(wù)器上的內(nèi)容。它能執(zhí)行多次,而且不會(huì)產(chǎn)生任何不好的副作用。而post不是冪等的,post體中的提交的數(shù)據(jù)可能用于不可逆轉(zhuǎn)的事務(wù)。所以從這個(gè)角度上來(lái)看的話要慎重使用doPost()功能。
若表單中未指出method=“POST”,就會(huì)默認(rèn)為HTTPGET請(qǐng)求。即缺省狀態(tài)是調(diào)用get請(qǐng)求。
在學(xué)習(xí)JavaWeb最初的開始階段,大家都會(huì)遇到HttpServlet中的doGet和doPost方法。
(1)doGet方法:主要是處理Http中的Get請(qǐng)求
(2)doPost方法:主要是處理Http中的Post請(qǐng)求
那么Get請(qǐng)求和Post請(qǐng)求到底有什么樣的區(qū)別
(1)get只有一個(gè)流,參數(shù)附加在url后,大小個(gè)數(shù)有嚴(yán)格限制且只能是字符串
例如,http://localhost:8888/javaweb/getServlet?name=123
(2)post的參數(shù)是通過(guò)另外的流傳遞的,不通過(guò)url,所以可以很大,也可以傳遞二進(jìn)制數(shù)據(jù),如文件的上傳。
什么時(shí)候使用doGet和doPost方法 :
1.通過(guò)表單提交到的servlet,看form的method是get還是post
2.通過(guò)鏈接<a href…>訪問(wèn)的servlet,doGet
3.直接在ie地址欄中鍵入的servlet地址,doGet
相關(guān)文章
springboot使用redisTemplate操作lua腳本
本文主要介紹了springboot使用redisTemplate操作lua腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
SpringBoot整合RabbitMQ實(shí)現(xiàn)流量消峰
RabbitMQ 即一個(gè)消息隊(duì)列,主要是用來(lái)實(shí)現(xiàn)應(yīng)用程序的異步和解耦,同時(shí)也能起到消息緩沖,消息分發(fā)的作用,消息中間件在互聯(lián)網(wǎng)公司的使用中越來(lái)越多,本文給大家介紹了SpringBoot整合RabbitMQ實(shí)現(xiàn)流量消峰,需要的朋友可以參考下2024-12-12
servlet下載文件實(shí)現(xiàn)代碼詳解(五)
這篇文章主要為大家詳細(xì)介紹了servlet下載文件的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
springBoot動(dòng)態(tài)加載jar及如何將類注冊(cè)到IOC
在SpringBoot項(xiàng)目中動(dòng)態(tài)加載jar文件并將其類注冊(cè)到IOC容器是一種高級(jí)應(yīng)用方式,,這種方法為SpringBoot項(xiàng)目提供了更靈活的擴(kuò)展能力,使得項(xiàng)目可以在不修改原有代碼的基礎(chǔ)上增加新的功能模塊,感興趣的朋友一起看看吧2024-11-11
SpringMVC @ResponseBody 415錯(cuò)誤處理方式
這篇文章主要介紹了SpringMVC @ResponseBody 415錯(cuò)誤處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
詳解如何將springboot項(xiàng)目導(dǎo)出成war包
這篇文章主要介紹了詳解如何將springboot項(xiàng)目導(dǎo)出成war包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
使用Springboot+Vue實(shí)現(xiàn)文件上傳和下載功能
本文介紹了如何使用Springboot結(jié)合Vue進(jìn)行圖書信息管理系統(tǒng)開發(fā),包括數(shù)據(jù)庫(kù)表的創(chuàng)建,實(shí)體類、Dao層、Service層和Controller層的編寫,重點(diǎn)講解了文件上傳和下載功能的實(shí)現(xiàn),感興趣的朋友跟隨小編一起看看吧2024-09-09

