首页 > 代码库 > springmvc前后端传值总结

springmvc前后端传值总结

 

1      前端向后端传参

1.1    普通方式传参

1.1.1         页面

参数需要解析成json对象;JSON.parse(JSON.stringify(query))

$.getJSON("${serverUrl}/store/brand/getBrand", JSON.parse(JSON.stringify(query)), function(data){});

 

1.1.2         后端

使用普通的参数即可,不需要配置

    @RequestMapping("/getBrand")

    @ResponseBody

    public WebResponse<Page<BrandVo>> getBrand(BrandQuery query, Pageable pageable) {

        WebResponse<Page<BrandVo>> response = new WebResponse<Page<BrandVo>>();

        // set storeid

        query.setStoreid(1L);

        response.setData(brandService.getStoreBrandByCondition(query, pageable));

        return response;

    }

 

1.2    json对象传参

1.2.1        页面

需要定义contentType: "application/json; charset=utf-8";

参数需转换成字符串;data : JSON.stringify(brandSaveInfo)

$.ajax({ 

                url : "${serverUrl}/store/brand/addBrandDetail", 

                type : "POST", 

                datatype:"json", 

                contentType: "application/json; charset=utf-8", 

                data : JSON.stringify(brandSaveInfo),   

                success : function(data, stats) {

                    console.log("保存成功:"+stats);

                }, 

                error : function(data) { 

                } 

}); 

 

 

1.2.2        后端

参数定义前需加上@RequestBody

    @RequestMapping("/addBrandDetail")

    @ResponseBody

    public WebResponse<String> addBrandDetail(@Valid @RequestBody BrandDetailVo brandDetailVo,

            BindingResult bindingResult) {

        if (bindingResult.hasErrors()) {

            throw new NovaIllegalArgumentException(bindingResult);

        }

        WebResponse<String> response = new WebResponse<String>();

        // 从shiro得到uid

        Long storeid = 1L;

        brandService.addBrandDetail(brandDetailVo, storeid);

        response.setData(NovaConstants.APPLICATION_SUCCESS);

        return response;

    }

 

1.3    简单对象、复杂对象

简单对象是指基本类型、基本类型数组、自定义对象;

复杂对象是指自定义对象数组;

复杂对象只能通过json对象传参,简单对象可以使用两种方式传参;

使用普通方式传参还是json方式传参,与get/post请求方式无关,只与参数对象的复杂程度有关(是简单对象还是复杂对象)。

1.4    日期类型参数

前端参数使用字符串

在普通方式传参方式,后台需要设置DateTimeFormat

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")

private Date upperSaleTime;//上架时间or下架时间上限

 

在json对象传参,后台需要设置dateDeSerialize

@JsonDeSerialize(using=DateDeSerializer.class)

private Date saleTime; // 上架或下架时间

 

2      后台返回页面数据

后台返回数据有两种方式:json数据、页面数据

2.1    json数据

使用@responsebody

2.2    页面数据

返回ModelAndView

2.3    日期类型

返回json数据时,日期类型需要设置为dateSerialize

@JsonSerialize(using=DateSerializer.class)

private Date saleTime; // 上架或下架时间