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ù)量一般不能超過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è)角度上來講不安全。而post方法因?yàn)槭侵v請(qǐng)求放在消息體中,不會(huì)直接在URL中顯示所以從這個(gè)角度來說數(shù)據(jù)會(huì)比較安全。
3:書簽建立
get請(qǐng)求可以建立書簽;post請(qǐng)求則不能。例如:假設(shè)你有一個(gè)頁面允許用戶指定搜索規(guī)則。用戶可能一個(gè)星期之后才回來,想要得到原來的數(shù)據(jù),但此時(shí)服務(wù)器上已經(jīng)有新的數(shù)據(jù)了。
4:方法的使用
get用于得到某些東西,只是簡單的獲取,不會(huì)對(duì)服務(wù)器做任何的改變。post則用戶發(fā)送數(shù)據(jù)來進(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è)角度上來看的話要慎重使用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ù)是通過另外的流傳遞的,不通過url,所以可以很大,也可以傳遞二進(jìn)制數(shù)據(jù),如文件的上傳。
什么時(shí)候使用doGet和doPost方法 :
1.通過表單提交到的servlet,看form的method是get還是post
2.通過鏈接<a href…>訪問的servlet,doGet
3.直接在ie地址欄中鍵入的servlet地址,doGet
相關(guān)文章
FastJson對(duì)于JSON格式字符串、JSON對(duì)象及JavaBean之間的相互轉(zhuǎn)換操作
這篇文章主要介紹了FastJson對(duì)于JSON格式字符串、JSON對(duì)象及JavaBean之間的相互轉(zhuǎn)換,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11springboot集成mybatis?plus和dynamic-datasource注意事項(xiàng)說明
這篇文章主要介紹了springboot集成mybatis?plus和dynamic-datasource注意事項(xiàng)說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01SpringSecurity中的UserDetails和UserDetailsService接口詳解
這篇文章主要介紹了SpringSecurity中的UserDetails和UserDetailsService接口詳解,UserDetailsService 在 Spring Security 中主要承擔(dān)查詢系統(tǒng)內(nèi)用戶、驗(yàn)證密碼、封裝用戶信息和角色權(quán)限,需要的朋友可以參考下2023-11-11MyBatis Plus更新對(duì)象無法設(shè)空值解決方案
這篇文章主要介紹了MyBatis Plus更新對(duì)象無法設(shè)空值解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11java web用servlet監(jiān)聽器實(shí)現(xiàn)顯示在線人數(shù)
這篇文章主要為大家詳細(xì)介紹了java web用servlet監(jiān)聽器實(shí)現(xiàn)顯示在線人數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03SpringBoot+websocket實(shí)現(xiàn)消息對(duì)話功能
WebSocket是一種在Web應(yīng)用程序中實(shí)現(xiàn)實(shí)時(shí)雙向通信的技術(shù),它可以用于在線游戲、在線聊天、推送通知、實(shí)時(shí)監(jiān)控等,并且比傳統(tǒng)的輪詢技術(shù)更加高效和可靠,本文就給大家介紹基于SpringBoot+websocket實(shí)現(xiàn)消息對(duì)話功能,感興趣的小伙伴可以自己動(dòng)手試一試2023-09-09