本節書摘來自異步社群《servlet、jsp和spring mvc初學指南》一書中的第1章,第1.10節,作者:【加】budi kurniawan(克尼亞萬) , 【美】paul deck著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
一個web應用程式中幾乎總會包含一個或者多個html表單,供使用者輸入值。你可以輕松地将一個html表單從一個servlet發送到浏覽器。當使用者送出表單時,在表單元素中輸入的值就會被當作請求參數發送到伺服器。
html輸入域(文本域、隐藏域或者密碼域)或者文本區的值,會被當作字元串發送到伺服器。空的輸入域或者文本區會發送空的字元串。是以,有輸入域名稱的,<code>servletrequest.getparameter</code>絕對不會傳回null。
html的select元素也向header發送了一個字元串。如果select元素中沒有任何選項被選中,那麼就會發出所顯示的這個選項值。
包含多個值的select元素(允許選擇多個選項并且用<code><select multiple></code>表示的select元素)發出一個字元串數組,并且必須通過<code>selectrequest.getparametervalues</code>進行處理。
複選框比較奇特。核查過的複選框會發送字元串“on”到伺服器。未經核查的複選框則不向伺服器發送任何内容,servletrequest.getparameter(fieldname)傳回null。
單選框将被選中按鈕的值發送到伺服器。如果沒有選擇任何按鈕,将沒有任何内容被發送到伺服器,并且servletrequest.getparameter(fieldname)傳回null。
如果一個表單中包含多個輸入同名的元素,那麼所有值都會被送出,并且必須利用servletrequest.getparametervalues來擷取它們。servletrequest.getparameter将隻傳回最後一個值。
清單1.4中的formservlet類示範了如何處理html表單。它的doget方法将一個order表單發送到浏覽器。它的dopost方法擷取到所輸入的值,并将它們輸出。這個servlet就是app01b應用程式的一部分。
清單1.4 formservlet類
利用下面的url,可以調用formservlet:
<code>http://localhost:8080/app01b/form</code>
被調用的doget方法會被這個html表單發送給浏覽器:
表單的方法設為post,確定當使用者送出表單時,使用http post方法。它的action屬性預設,表示該表單會被送出給請求它時用的相同的url。
圖1.6展示了一個空的order表單。

圖1.6 一個空的order表單
現在,填寫表單,并單擊submit按鈕。在表單中輸入的值,将利用http post方法被發送給伺服器,這樣就會調用servlet的dopost方法。是以,将會看到圖1.7所示的那些值。
圖1.7 在order表單中輸入的值