1. 程式人生 > >表單資料提交方式,及後臺獲取資料方式

表單資料提交方式,及後臺獲取資料方式

這個和servlet容器有關係,比如tomcat等。

1.get方式
get方式提交的話,表單項都儲存在http header中,格式是
http://localhost:8080/hello.do?name1=value1&name2=value2這樣的字串。server端通過request.getParameter是可以取到值的。

2.post方式(enctype為預設的application/x-www-form-urlencoded)
表單資料都儲存在http的正文部分,格式類似於下面這樣:用request.getParameter是可以取到資料的

name1=value1&name2=value2

3.post方式(enctype為multipart/form-data,多用於檔案上傳)
表單資料都儲存在http的正文部分,各個表單項之間用boundary隔開。格式類似於下面這樣:用request.getParameter是取不到資料的,這時需要通過request.getInputStream來取資料,不過取到的是個InputStream,所以無法直接獲取指定的表單項(需要自己對取到的流進行解析,才能得到表單項以及上傳的檔案內容等資訊)。這種需求屬於比較共通的功能,所以有很多開源的元件可以直接利用。比如:apache的fileupload元件,smartupload等。通過這些開源的upload元件提供的API,就可以直接從request中取得指定的表單項了。

-----------------------------7d33a816d302b6
Content-Disposition:form-data;
name="userfile1";
filename="C:\my.txt"
Content-Type:application/octet-stream
abbXXXccc
-----------------------------7d33a816d302b6

Content-Disposition: form-data;

name="name1" value1

-----------------------------7d33a816d302b6

Content-Disposition: form-data;

name="name2" value2

-----------------------------7d33a816d302b6

multipart/form-data適用於檔案上傳,對於你這種只想傳value的做法,顯然使用application/json或者text/plain會好很多。可以把資料放到form的header或者body中,在後臺使用相應的方法得到具體值