表单序列化以及后台表单数据参数的提取

时间:2021-10-18 05:51:22

(该资料是楼主复习时所用,很浅显,如果有哪些地方不正确,欢迎大家留言指出)

提交表单的时候,一个表单可能会有多个参数,为了将这些参数传到后台,有两种方法:

(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("注册失败,请刷新页面后重试"); }