spring mvc 前后端数据交互方式(整理)

Form表单提交

基本数据类型

@requestMapping(method.do(请求路径名))

Public void test(int count){}

 

 

表单中的name值必须和controller的参数变量名保持一致。

如果不一致可以使用@RequestParam()注解绑定请求参数

如果页面传递的参数为“”或者null会报错,

 

包装类型

 

 

 

 

 

和基本类型使用方法相同。

如果前台的传递的值为null或者“”则controller中对应的变量值为null

 

 

自定义复合对象类型

 

 

 

 

 

 

 

 

 

 

所需信息封装成一个自定义的对象,变量名需要和表单中的name名称相同,

 

User对象中有ContactInfo属性,在表单代码中,需要使用“属性名(对象类型的属性).属性名”来命名inputname

 

 

list绑定

 

 

Controller方法中不能直接使用list参数。不能像下面这么写,会报错。Could not instantiate bean class [java.util.List]: Specified class is an interface

使用list传递参数的时候,

 

 

缺点:那么名称易错。当需要单独传递一个list的时候很麻烦

 

set绑定

Setlist一样需要绑定到对象上才能够传递。

而且,在对象中必须要添加相应数量的模型对象。传多少个就要添加多少个user对象。

 

 

 

接受数据方式:

 

 

缺点;比list更麻烦。

map绑定

Map比较灵活,它也需要绑定在对象上,而不能直接写在Controller方法的参数中。

 

绑定对象:

 

 

 

接收数据:

 

 

 

提醒

 

 

添加Required=false 表示如果参数a为空或者null,不抛出异常。

 

使用pojo方式接收参数,前台属性的name值,需要和javabean中的属性名一致。Model 用来向前天发送数据。

 

 

 

 

多选框传值:

如果前台有相同name值的数据传递则要使用数组来接收,相同名称的可能是有这样的数值但更多的是多选框,所以我们要使用数组来接收这样的值

 

@RequestMapping(value="select.do")

public Stringhello(String []username,Model model){

 

    System.out.println(username.length)

    Stringname1=username[0];

    Stringname2=username[1];

    model.addAttribute("helloworld", "hello"+name1+name2);

    return"welcome";

 

}

 

httpservletRequest获取前台传递的参数:

 

@RequestMapping(value="/hello.do")

publicString hello(HttpServletRequest request,Model model){

  String name=request.getParameter("name");

  System.out.println(name);

model.addAttribute("helloworld","hello"+name);

return"welcome";

}

 

向前台发送参数:

传递对象:

 

 

传递list集合:

 

 

 

modelandview对象中添加数据:

 

 

 

使用map。跟model方法类似。

 

 

 

 

 

异步传参方法:

前台发送:

  $.ajax({

           url:"selectinfo.do",

           type:"post",

           data:{name:"name1",age:2},

           dataType:"json",

           success:function(data){

                  arr=eval(data);

                  alert("长度"+arr.length);

                  alert(arr);

                  for(var i=0;i<arr.length;i++){

                    alert("内容"+arr[i].title);

             }

            }

            });

 

接收方式:

使用request接收

 

 

直接用变量参数接收

 

 

javabean对象接收

 

 

 

 

 

 

 

 

posted @ 2017-08-03 17:25  张开开  阅读(12282)  评论(0编辑  收藏  举报