客戶單通過創建html的form表單來與servlet交互的
<FORM ACTION="....">.....</FORM>,其中action對應的就是處理表單數據的servlet的url。
<INPUT TYPE="TEXT" NAME="....">,servlet通過request.getParameter(NAME)來讀取表單中的數據。其中TYPE是html輸入的類型。
<INPUT TYPE="SUBMIT"> 按下這個按鈕,瀏覽器會調用表單的ACTION指定的URL。
在servlet中讀取表單數據的函數。
單值讀取,request.getParameter("NAME")注意參數名是大小寫敏感的。
多值讀取,request.getParameterValues("NAME")返回的是字符串數組。對于不存在的參數名,返回值為null,如果只有單一的值,則返回只有一個元素的數組。
參數名查找,一般情況下servlet并不知道參數名,
Enumeration e = request.getParameterNames();
while(e.hasmoreElements()){
String s = (String)e.nextElement();
String[] paraValues = request.getParameterValues(s);
}
getParameterMap是getParameterNames()的代替方案,這個方法返回的是一個Map:
(參數名,getParameterNames())。
getReader用了讀取定制的客戶的數據。
getInputStream讀取<INPUT TYPE="FILE" .....>
多字符集輸入的讀取
默認情況下,request.getParameter使用的是服務器當前的字符集解釋輸入的,如果要改變默認行為,就要使用request.setCharacterEncoding來設置字符集。
但是要是輸入中使用了多個字符集,這種做法就行不通了。
可以用getBytes來提取原始的字節數據,然后用String的構造函數進行編碼。
String s = request.getParameter("firstname");
String s = new String(s.getBytes(), “GBK”);