springmvc----json参数绑定

点滴记载,点滴进步,愿自己更上一层楼。

继续上篇参数绑定问题,这次叙述springmvc的json传自动绑定到对应的vo,即不需要在自己去做json的转换,框架帮你实现。

进入正题。


如果要让框架自动绑定将前台传过来的json数据自动给你封装到自己的pojo中去,需要两个jar。

jackson-core-asl-1.9.13.jar

jackson-mapper-asl-1.9.13.jar

springmvc使用jackson包进行json数据的转换。

将对应的依赖添加到pom.xml中去。

 
    
      org.codehaus.jackson
      jackson-core-asl
      1.9.13
    
    
      org.codehaus.jackson
      jackson-mapper-asl
      1.9.13
    
    

其他的配置不需要了,因为用的已经将json要用到的解析器加载了。

1  用jquery的ajax提交json数据。

首先要将jquery相关的js引用到jsp中。注意json串,里面必须是双引号。contentType同样必须要写,因为默认是key/value方式提交。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>

<%@ page isELIgnored="false"%>


    Title
    <%-- 引入jquery库--%>
    
    <%-- 对应的ajax提交请求 --%>
    


    
后台action代码。这里面虽然注释已经写得清楚了,但是还是要再说一下。如果想自动将json串的数据绑定到vo的属性中,

必须要在对应的vo前面写@RequestBody注解,否则无效。@ResponseBody 用于将对应的vo转换成json数据返回前台,不在需要程序员手动转换。

package com.soft.controller;

import com.soft.po.JsonParamVo;
import com.soft.po.ParamVo;
import com.soft.po.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

@Controller
public class TestJsonParamController {

    /**
     * 跳转到json提交页面
     * @return ModelAndView
     */
    @RequestMapping(value="/toJsonParamJsp")
    public ModelAndView toMapJsp(){
        ModelAndView model = new ModelAndView();
        model.setViewName("test/testJsonParam");
        return model;
    }

    /**
     * 1 json数据直接绑定到vo
     *       @RequestBody  springmvc 会将json数据直接绑定到vo对应的属性中
     *       @ResponseBody JsonParamVo springmvc看到@ResponseBody
     *                                   会直接将对应的vo中的数据转换成json串
     * @return ModelAndView
     */
    @RequestMapping(value="/testJsonParam01")
    public @ResponseBody JsonParamVo testJsonParam01(@RequestBody JsonParamVo jsonParamVo){
        return jsonParamVo;
    }
}
json数据对应的vo
package com.soft.po;

/**
 * Created by xuweiwei on 2017/8/19.
 */
public class JsonParamVo {

    private String name;
    private Integer age;
    private String hobby;

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    public String getName() {

        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
开始测试。
springmvc----json参数绑定_第1张图片

点击页面提交按钮将json数据传入后台。

springmvc----json参数绑定_第2张图片

可以看到红框中的数据,显示已经将json中的数据绑定到vo中的属性中了,而代码并没有做什么多余的转化操作,仅仅是加了个@RequestBody注解,springmvc就帮我们自动转化了。而@ResponseBody将vo再次转化为json返回给前台页面。

springmvc----json参数绑定_第3张图片

如红框中显示,已经转换成json串。最后拿到json串中的数据显示到页面。

springmvc----json参数绑定_第4张图片

这里讲的是springmvc自带的功能。省去了程序员的一下工作。但是这样做有些局限,因为程序不可能总是这样的json串。所以真正项目中先通过vo接收前台数据,最后在返回给前台json串,比较常见。

其实具体实现就是后台接收数据的时候不再用json,而用普通的接收方法,只不过最后返回给前台的还是一样的。

具体实现

1 后台测试action

    /**
     * 1 json数据直接绑定到vo
     *       @ResponseBody JsonParamVo springmvc看到@ResponseBody
     *                                   会直接将对应的vo中的数据转换成json串
     * @return ModelAndView
     */
    @RequestMapping(value="/testJsonParam02")
    public @ResponseBody JsonParamVo testJsonParam02(JsonParamVo jsonParamVo){
        return jsonParamVo;
    }
jsp   ajax 请求方法,注意参数部分。参数部分写了两种形式,两种形式都可以使用,看你个人想法了。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>

<%@ page isELIgnored="false"%>


    Title
    <%-- 引入jquery库--%>
    
    <%-- 对应的ajax提交请求 --%>
    


    

开始测试:

springmvc----json参数绑定_第5张图片

点击页面提交按钮,触发ajax请求后台action。

springmvc----json参数绑定_第6张图片

可以看到ajax提交的参数,已经绑定到vo中了。

返回前台结果:

springmvc----json参数绑定_第7张图片

可以看到红框中的数据就是后台返回的springmvc转化的json数据。

将数据显示到页面:

springmvc----json参数绑定_第8张图片

json交互,参数绑定到此告一段落。论可扩展性,第二种扩展性比较好,推荐使用。

接下来要写的是参数校验部分。


点滴记载,点滴进步,愿自己更上一层楼。加油!!!



你可能感兴趣的:(springmvc)