(該資料是樓主復習時所用,很淺顯,如果有哪些地方不正確,歡迎大家留言指出)
提交表單的時候,一個表單可能會有多個參數,為了將這些參數傳到后台,有兩種方法:
(1)通過表單id一個一個地將表單輸入欄的value值取出,然后通過key:value的形式傳到后台,在后台用requeset.getparameter(key),
當表單參數很多時,傳入的過程很麻煩,傳到后台后,對相應對象賦值也極為麻煩
(2)將表單整個序列化,打包成一個擁有多個key:value的集合,在后台用request.getparametermap()獲取map集合
當表單參數過多時,使用表單序列化更為方便。
表單序列化的代碼如下:
//通過表單的id用id選擇器將表單序列化,並經由ajax傳至后台
1 var formData = $("#registerForm").serialize(); 2 $.post("/userServlet?methodName=register", formData, function (result) { 3 alert("大帥哥") 4 console.log(result) 5 6 }, "json")
后台取出參數,並對相應對象進行賦值,代碼如下:
//用map集合接收前台傳遞的參數 Map<String, String[]> map = request.getParameterMap(); //獲取表單中特定的參數也可以根據表單中對應輸入框的id進行取值 String check = request.getParameter("check");
User user =new User();
ResultInfo resultInfo =new ResultInfo(); try { //用beanutils.utils直接對相應對象進行賦值,會有報錯,try catch或者throw掉 BeanUtils.populate(user, map); } catch (Exception e) { resultInfo.setFlag(false); resultInfo.setErrorMsg("注冊失敗,請刷新頁面后重試"); }