springmvc ajax封装复杂请求对象2

读懂本文,你可能需要具备对JSON格式对象的理解,以及SpringMVC中Controller的作用

这边我统一以SpringMVC框架为例进行讲解参数封装方法,我只介绍最常用的几种请求方式(因为其他请求方式不经常使用,所以不作为本文重点).如果文中介绍到的内容有不明白的,敬请留言评论.

java web工作常用技能篇(三)-封装复杂请求对象2

java

大多数情况,我们都是通过ajax方式进行提交复杂对象进行插入或更新操作,下面我们举个例子接着上一篇继续介绍封装复杂参数的其他方式

我们的需求是 : 在一个请求中将某一个学生信息,该学生的语数外三门成绩以及该学生的老师信息同时传入后台.

学生类如下:(学生包含多个成绩)

java web工作常用技能篇(三)-封装复杂请求对象2

学生类

成绩类如下:

java web工作常用技能篇(三)-封装复杂请求对象2

成绩类

教师类如下:

java web工作常用技能篇(三)-封装复杂请求对象2

教师类

接受请求参数的Controller方法如下:

java web工作常用技能篇(三)-封装复杂请求对象2

Controller方法

ajax方式封装复杂对象(一)

在测试页面中直接编写一个ajax请求,将请求参数封装成我们需要的格式,如下:

java web工作常用技能篇(三)-封装复杂请求对象2

ajax封装复杂参数

我们测试效果如下:

java web工作常用技能篇(三)-封装复杂请求对象2

断点查看效果

总结:

  1. ajax方式封装参数使用Json数据格式,List使用[obj1,obj2],任意对象使用{key1:value2,key2:value2},对象可以嵌套对象

  2. 需要使用JSON.stringify()方法将json对象转换成json字符串

  3. ajax的contentType属性必须是'application/json;charset=utf-8'

  4. 在接收参数前面需要加上SpringMVC的@RequestBody注解


ajax方式封装复杂对象(二)

如果我们并没有一个合适的对象来接受我们的参数时,我们可能需要封装到Map中,那么我们需要修改接收请求的Controller方法,如下图:

java web工作常用技能篇(三)-封装复杂请求对象2

参数封装成一个大Map

前台ajax参数封装格式一致,无需变更,如下图:

java web工作常用技能篇(三)-封装复杂请求对象2

ajax参数封装到map中

我们测试效果如下(正确封装了一个复杂的Map对象):

java web工作常用技能篇(三)-封装复杂请求对象2

断点查看map中参数

总结:(其实Map与我们自定义的类是一样的道理)

  1. ajax方式封装参数使用Json数据格式,List使用[obj1,obj2],任意对象使用{key1:value2,key2:value2},对象可以嵌套对象

  2. 需要使用JSON.stringify()方法将json对象转换成json字符串

  3. ajax的contentType属性必须是'application/json;charset=utf-8'

  4. 在接收参数前面需要加上SpringMVC的@RequestBody注解

  5. 与封装到自定义类的区别:Map取值通过我们约定好的key来取,而类通过自己的属性名来取


ajax方式封装复杂对象(三)

同样,如果我们并没有一个合适的对象来接受我们的参数时,我们也不想使用Map时,那么我们还可以使用字符串来接受复杂的JSON字符串,那么我们需要修改接收请求的Controller方法,如下图:

java web工作常用技能篇(三)-封装复杂请求对象2

定义字符串接受json对象字符串

(注意:上图中,我们还用到了Gson这个对象,它是用来处理json字符串与具体的java对象互相转换问题的)

同时我们需要修改jsp中发送请求的ajax方法,如下图:

java web工作常用技能篇(三)-封装复杂请求对象2

ajax请求参数封装方法三

总结:

  1. ajax方式封装参数使用Json数据格式,List使用[obj1,obj2],任意对象使用{key1:value2,key2:value2},对象可以嵌套对象

  2. 需要使用JSON.stringify()方法将json对象转换成json字符串,并将该负责的json字符串作为value形成新的json格式的参数对象,如上图中{stuJsonStr:负责json字符串}

  3. Java后台中,需要将接收到的json字符串使用Gson(或者JSONObject等)第三方类转换成我们需要的具体对象.


阅读更多

没有更多推荐了,返回首页