日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JAVA 客户端跳转与服务器端跳转 get与post

發(fā)布時(shí)間:2024/4/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA 客户端跳转与服务器端跳转 get与post 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

雖然說(shuō)get?與post?問(wèn)題很老套了,但是作為web?開(kāi)發(fā)人員來(lái)說(shuō)對(duì)于這個(gè)的理解確實(shí)很有必要,其實(shí)說(shuō)到get?和post,還可以有doGet?與doPost?和客戶(hù)端跳轉(zhuǎn)與服務(wù)端跳轉(zhuǎn)的區(qū)別;

?

GET?與POST?的區(qū)別:

?

???????一、Get?是從服務(wù)器上獲取?數(shù)據(jù),Post?則是向服務(wù)器傳送?數(shù)據(jù);

?

???????二、Get?將表單中數(shù)據(jù)的按照variable=value?的形式,添加到action?所指向的URL?地址的后面?,并且兩者用“?”?連接,而各個(gè)變量之間使用“&”?連接。Post?是將表單中的數(shù)據(jù)放在form?的數(shù)據(jù)體中(?或者說(shuō)把內(nèi)容放在了http消息體里)?,按照變量和值相對(duì)應(yīng)的方式,傳遞到action?所指向URL?;

?

???????所以從上第二點(diǎn)也可以得到另外兩個(gè)結(jié)論:

?

????????????? 1?、Get?傳送的數(shù)據(jù)量較小?,不能大于2KB?,這主要是因?yàn)槭躑RL?長(zhǎng)度限制。

?

? ? ? ? ? ? ? ? ? ?Post?傳送的數(shù)據(jù)量較大?,所以在上傳文件只能使用Post(?注意在文件上傳時(shí)還要加上enctype="multipart/form-data"?作為上傳文件的標(biāo)識(shí))?。一般被默認(rèn)為不受限制。但理論上,IIS4?中最大量為80KB?,IIS5?中為100KB?;

?

????????????? 2?、Get?安全性非常低?(因?yàn)橛脩?hù)可以通過(guò)URL?看到)

?

? ? ? ? ? ? ? ? ???Post?安全性較高?(其所有操作對(duì)用戶(hù)來(lái)說(shuō)都是不可見(jiàn)的)。但是執(zhí)行效率卻比Post?方法要高點(diǎn)(優(yōu)點(diǎn)造就了?其缺點(diǎn));

?

??????????????總結(jié):

?

???????????????????? ?a?、如果是包含機(jī)密信息的話(huà),建議用Post?數(shù)據(jù)提交方式;

?

??????????????????????b?、當(dāng)數(shù)據(jù)處理不改變數(shù)據(jù)模型的狀態(tài)則推薦使用Get?方式,例如在做數(shù)據(jù)查詢(xún)。而操作改變了數(shù)據(jù)模型的狀態(tài)時(shí),則建議使用Post?方式,例如數(shù)據(jù)添加、修改或刪除,送電子郵件等;

?

???????三、Get?限制Form?表單的數(shù)據(jù)集的值必須為ASCII?字符;而Post?支持整個(gè)ISO10646?字符集,所以說(shuō)在出現(xiàn)一些亂碼時(shí)有時(shí)候可以將Get?請(qǐng)求換為Post?請(qǐng)求;

?

???????四、Get?是Form?的默認(rèn)方法;

?

???????五、Get?方式提交來(lái)的數(shù)據(jù)在服務(wù)器端用Request.QueryString()?來(lái)獲取,用Post?方式提交的數(shù)據(jù)用Request.Form()?來(lái)獲取;

?

?

?

服務(wù)器端跳轉(zhuǎn)與客戶(hù)端跳轉(zhuǎn):

?

???????首先我們需要理解什么是服務(wù)器端跳轉(zhuǎn),什么是客戶(hù)端的跳轉(zhuǎn)。簡(jiǎn)單理解所謂服務(wù)器端跳轉(zhuǎn)就是指地址欄內(nèi)容不變(客戶(hù)端瀏覽器的地址欄不會(huì)顯示目標(biāo)地址的URL?),而客戶(hù)端跳轉(zhuǎn)是指地址欄內(nèi)容發(fā)生改變(客戶(hù)端向服務(wù)器發(fā)請(qǐng)求偶,然后服務(wù)器再給客戶(hù)端一個(gè)響應(yīng),然后客戶(hù)端再根據(jù)服務(wù)器端給的響應(yīng)中的URL?再向服務(wù)器發(fā)送請(qǐng)求,所以是兩次請(qǐng)求,因此地址欄改變了顯示最后一次請(qǐng)求地址);

?

Java?中服務(wù)器端跳轉(zhuǎn):

?

?????? 1?、request.getRequestDispatcher("success.jsp").forward(request,response)?,它是只要執(zhí)行到此語(yǔ)句之后則立刻進(jìn)行跳轉(zhuǎn),可以傳遞request?屬性?;

?

???? 2?、<jsp:forward>,?這種跳轉(zhuǎn)屬于無(wú)條件跳轉(zhuǎn),它只能在棧內(nèi)轉(zhuǎn),而sendREdirect?中則可以任意轉(zhuǎn),甚至可以輸入baidu?;

?

客戶(hù)端跳轉(zhuǎn):

?

1?、response.sendRedirect("fail.jsp")?,所有頁(yè)面執(zhí)行完之后再進(jìn)行跳轉(zhuǎn),?不能傳遞request?范圍的屬性?,但是可以通過(guò)地址重寫(xiě)的方式向跳轉(zhuǎn)頁(yè)傳遞參數(shù),因?yàn)樵摲椒▓?zhí)行完之后就相當(dāng)于一次http request?的結(jié)束,這是服務(wù)器會(huì)向客戶(hù)端發(fā)送302?狀態(tài)碼和新的url?,告訴客戶(hù)端重新發(fā)送request?請(qǐng)求到新的url?,然后客戶(hù)端照此執(zhí)行,執(zhí)行即新的請(qǐng)求響應(yīng)流程開(kāi)始,服務(wù)器再重新創(chuàng)建HttpServletRequest?對(duì)象和HttpServletResponse?對(duì)象,此時(shí)兩個(gè)請(qǐng)求已經(jīng)不在一個(gè)線(xiàn)程了,所以request?和response?對(duì)象都不是開(kāi)始的那個(gè)了;

?

?????? 2?、response.setHeader("refresh","2;URL=index.jsp"),2?秒后跳轉(zhuǎn)到其他頁(yè)面;

?

?????? 3?、<a href="http://www.baidu.com">?百度</a>?,超鏈接;

?

?????? 4?、表單提交;

?

通過(guò)以上可以得知,如果現(xiàn)在一個(gè)頁(yè)面中使用了JDBC?,則應(yīng)該在forward?跳轉(zhuǎn)之前關(guān)閉數(shù)據(jù)庫(kù)鏈接,而使用respose則可以在任意的位置處關(guān)閉;

?

注意:

?

?????? 1?、客戶(hù)端跳轉(zhuǎn)“/?”代表服務(wù)器路徑webapps?,即服務(wù)器根路徑,服務(wù)器端跳轉(zhuǎn)“/?”代表站點(diǎn)根路徑,即應(yīng)用程序根路徑;

?

? ? ? ?2?、盡量使用response.sendRedirect("fail.jsp")?而不去使用forward?,因?yàn)楫?dāng)服務(wù)器崩潰了,那么sendRedirect?則就會(huì)起很大的好處了。

超強(qiáng)干貨來(lái)襲 云風(fēng)專(zhuān)訪(fǎng):近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的JAVA 客户端跳转与服务器端跳转 get与post的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。