關於獲取表單資料

2021-04-20 20:05:58 字數 1457 閱讀 8623

今天有個同事做二次開發的時候遇到一些表單資料的小問題,可是這些小問題卻也難倒我了。因為之前一直在用struts處理表單資料,好久沒直接處理過了。所以完全忘記了,溫故知新一下。

獲取jsp表單資料,通常的方法是request.getparameter。此方法對於post提交方式來說,用來獲得客戶端傳送給伺服器請求中的訊息體資訊,對於get來說是獲取url後面的引數值。無論哪一種方式,引數都是一樣的,只是乙個顯示在訊息體中,另外乙個在url上。該引數是由name指定的。

之前一直有個誤區,以為request.getparameter只能獲取url上面的引數,正正忽略了還可以拿訊息體裡面的東西。因為一直以來都用formbean的關係吧。這些都不大理會了。

如果request.getparameter獲取不了值的話,原因會有三個。

1.獲取的request.getparameter的引數值不存在於表單中。即沒有乙個標籤裡面的name是跟獲取的引數所對應的。注意是name而不是id。

2.form表單設定了enctype="multipart/form-data"屬性。這個需要上傳檔案的時候會用到。

3.獲取的引數標籤裡面存在disabled="disabled"

對於第二種情況,想要獲取引數值比較麻煩。因為表單資料都封裝成meta二進位制格式傳輸了。好像可以通過common-fileupload元件來解決。具體沒測試,搜下應該有的。或者有更多其他辦法解決。

中文問題:

表單提交的時候,資料流預設為iso-8859-1。所以獲取的值的時候,中文的話可能會出現亂碼情況,這時候只用通過轉碼就可以了。

string str=request.getparameter("username");

byte  b=str.getbytes("iso-8859-1");

str=new string(b);

另外說一下 request.getattribute

這個方法通常伺服器端使用setattribute,用來封裝bean放回給檢視層進行進一步的操作。此時檢視層就使用getattribute進行獲取資料了。另外setattribute方式不一定是request,參照scope吧。可選訪問更廣闊。

url是有長度限制的,一般不超過255bytes..實際不同的瀏覽器會有不同長度準則。

所以表單提交的時候選擇method時還必須考慮資料量的問題。大資料和不想資料顯示在url上的話,選擇post比較好。

get方法的時候需要注意url快取機制,因為瀏覽器為提供效能,如果通過get方法投遞的兩次url都相同的話,第二次會啟動快取機制。所以常常需要通過傳送乙個虛擬的值來區分,為了避免第二次獲取了一次快取值。

而對於post,因為訊息體瀏覽器並不知道它內容,不能判斷是否兩次投遞的資訊是否一樣。所以不會啟動快取機制。

對於post和get兩種請求方式,post方法也相對的安全那麼一點。

總結一點,在普通情況下,能用post就用post吧。但是get方法又可以在很多的情況下給與我們帶來很多的便利,也是不可缺少的。

關於form表單資料的獲取

1 關於乙個頁面兩個表單提交資料到資料庫 只需要把提交資料的按鈕設定為不同的class屬性或者id屬性 進行分別的提交,分別寫js 一點也不影響資料的提交 2 核取方塊的資訊的錄入mysql資料庫 給所有的input框設定一樣的class屬性 然後在ajax資料請求的時候 輸入下面的 divclas...

php獲取表單資料

1.html 2.php test.php username post username password post password if username wang password 123456 else 3.php 第二種寫法 test.php require once dbtest.php...

6 獲取表單資料

1 雙向資料繫結獲取表單資料 雙向資料繫結即mvvm,vue就是乙個mvvm的框架。m代表model,v代表view。mvvm表示model改變會影響view,view改變反過來會影響model。雙向資料繫結必須在表單裡面使用。v model 指令用來在 input select textarea ...