1:提交 表單的方法不同
使用get方法提交表單,請求的參數在請求的頭部,可以通過request.getQueryString()方法擷取請求參數,
且request.getContentLength()方法傳回值為-1;使用post方法提交表單,請求的參數存放在請求體裡,所
request.getQueryString方法擷取不到請求參數,request.getContentLength()可以獲得請求體的長度。
通過get方法提交表單,因為請求表單存放在請求的頭部,所以會在瀏覽器地址欄顯示;而通過post方法提
交則不會在地址欄顯示,相對安全些。並且由於不同瀏覽器對地址欄的長度各有不同的限制,故採取get方法
提交,則請求參數的長度也會受到限制,而用post方法提交的請求請求參數放在請求體裡,請求體長度沒有限制,則請求參數長度也沒有限制。
get方法提交表單是用字元方式提交,而post提交表單字元和位元組方式都行。
通過執行個體瞭解post和get的http請求過程
通過上面的分析,已經對GET和POST有所瞭解,也能感覺到他倆有著本質上的區別就是一個是拿來,一個是要更新修改。
下面就通過HTTPLOOK軟體來看看他們是怎樣進行HTPP請求的,它們到底是怎樣進行傳輸的。
首先建立兩個jsp頁面用來測試:
第一個頁面是post_get_jsp(代碼如下):
代碼如下 |
複製代碼 |
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head>
<body> <form name="aaForm" action="http://localhost:8080/post_get/test.jsp" method="get"> <input type="text" id="text1" name="text1" value="dadfdf"> <input type="submit" id="submit1" name="submit2" value="提交"> </form> </body> </html> |
第二個頁面是test.jsp(代碼如下):
代碼如下 |
複製代碼 |
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <% String a=request.getParameter("text1"); out.println(a); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body>
<h1>ddfdgdg</h1> </body> </html> |
簡單說一下http請求:
<request line>
<headers>
<blank line>
<request-body>
在HTTP請求中,第一行必須是一個請求行(request line),用來說明請求類型、要訪問的資源以及使用的HTTP版本。緊接著是一個首部(header)小節,用來說明伺服器要使用的附加資訊。在首部之後是一個空行,再此之後可以添加任意的其他資料。
開始測試post提交
http請求如下:
開始測試get提交
http請求如下:
POST與GET區別
①. GET一般用於擷取/查詢資源資訊,而POST一般用於更新資源資訊。
②. 從上面的http請求中就能看出,GET提交是將請求的資料附加到URL之後,用?分割、參數用&串連。並且字串已經被加密。而post的提交是放到了http包中。從這點看來GET請求的地址欄會改變,RUL附加上了請求的資料,而POST地址欄不會改變,UTL沒有變化。更加深一層看GET的安全性不高,很容易暴露資訊。
③. 另外雖然http協議沒有對傳輸資料大小進行限制也沒有對url長度進行限制,但是實際情況中瀏覽器對url進行限制,這樣GET的傳輸資料大小隨著URL長度被限制而受到限制。反觀POST由於不是通過URL傳值,所以沒有限制。