表單POST和GET的區別


項目中前台中文提交到后台就亂碼了,和學長找了N久都沒發現原因,最后發現是在頁面中雖然在form表單出寫上了method=“POST” 但是在網頁腳本那里設定按照GET發送請求,導致最后頁面的請求是以GET進行請求的.

既然解決了問題,那么順便來學一學POST請求與GET請求的區別.

我這里只羅列了三點

以下部分見解為網上復制,另外有一些自己的實際操作試驗.

 

1,GET顧名思義為獲取,POST就為郵遞發送的意思.但實際上GET也能傳送數據,只不過GET能傳送的數據量非常小,其要小於2048字節,也就是2KB。post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為 100KB。

這也就是我們項目中出錯的原因.

下面附上亂碼的例子,亂碼的同學可以找找是不是這個錯誤:

 

頁面:簡單的form表單,然后輸出值棧中的name.

<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'MyJsp.jsp' starting page</title>
  </head>
  <body>
    <form action="test.action" method="POST">  <!--注意這里先用POST-->
        <input type="text" name="name">
        <input type="submit" value="提交">
    </form>
    <s:property value="name"/>
  </body>
</html>

網頁演示:

在其中輸入  “不斷堅持”  之后點擊提交顯示網頁:
 
 
如果我們將頁面form表單中的method改成GET之后,再輸入 “不斷堅持”
頁面就會出現亂碼:
 
2. get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
還是以上面的例子來測試一下:
當為GET請求,在頁面輸入“Jim”,然后點擊提交.我們看到地址欄中:http://localhost/webTest/test.action?name=hehe
當為POST請求,在頁面輸入“Jim”,然后點擊提交.我們看到地址欄中:http://localhost/webTest/test.action
 
3. get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。
這個我還沒有仔細去了解為何如此.
 
 
不斷堅持!
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM