JSP之get方法和post方法的區別

來源:互聯網
上載者:User

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傳值,所以沒有限制。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.