天天看點

servet的doget和post請求,以及getparameter方法

 url="http://host/path?user=Marty+Hall&origin=bwi&dest=lax”。這個URL中位于問号後面的部分,即“user=Marty+Hall&origin=bwi&dest=lax”,就是表單資料,這是将Web頁面資料發送給伺服器程式的最常用方法。對于GET請求,表單資料附加到URL的問号後面(如上例所示);對于POST請求,表單資料用一個單獨的行發送給伺服器。 

   以前,從這種形式的資料提取出所需要的表單變量是CGI程式設計中最麻煩的事情之一。首先,GET請求和POST請求的資料提取方法不同:對于GET請求,通常要通過QUERY_STRING環境變量提取資料;對于POST請求,則一般通過标準輸入提取資料。第二,程式員必須負責在“&”符号處截斷變量名字-變量值對,再分離出變量名字(等号左邊)和變量值(等号右邊)。第三,必須對變量值進行URL反編碼操作。因為發送資料的時候,字母和數字以原來的形式發送,但空格被轉換成加号,其他字元被轉換成“%XX”形式,其中XX是十六進制表示的字元ASCII(或者ISO Latin-1)編碼值。例如,如果HTML表單中名為“users”的域值為“~hall, ~gates, and ~mcnealy”,則實際向伺服器發送的資料為“users=%7Ehall%2C+%7Egates%2C+and+%7Emcnealy”。最後,即第四個導緻解析表單資料非常困難的原因在于,變量值既可能被省略(如“param1=val1&param2=&param3=val3”),也有可能一個變量擁有一個以上的值,即同一個變量可能出現一次以上(如“param1=val1&param2=val2&param1=val3”)。 

   Java Servlet的好處之一就在于所有上述解析操作都能夠自動完成。隻需要簡單地調用一下HttpServletRequest的getParameter方法、在調用參數中提供表單變量的名字(大小寫敏感)即可,而且GET請求和POST請求的處理方法完全相同。 

   getParameter方法的傳回值是一個字元串,它是參數中指定的變量名字第一次出現所對應的值經反編碼得到得字元串(可以直接使用)。如果指定的表單變量存在,但沒有值,getParameter傳回空字元串;如果指定的表單變量不存在,則傳回null。如果表單變量可能對應多個值,可以用getParameterValues來取代getParameter。getParameterValues能夠傳回一個字元串數組。