SpringMVC如何接收参数各种场景

目录
  • 表单提交
  • 表单提交二
    • 后台代码接收方式一
    • 后台代码接收方式二

表单提交

此处的表单时 -使用JSON.stringify()函数将数组转换成json类型提交后台,后台使用@RequestBody User user接受处理

页面js

//新增提交按钮
$("#buildsubmit").click(function() {
   var param = $(".form").serializeJson();
   $.ajax({
    type: 'post',
    url: path + "/web/member/save.do",
    contentType: "application/json",
    dataType: 'json',
    data: JSON.stringify(param),
    success: function(data) {

    },
   });
  }
 });

后端代码

@RequestMapping(value = "/save", method = RequestMethod.POST)
public GeneralResponse save(@RequestBody @Valid MemberInsertDetail member, BindingResult bindingResult)
   throws JsonProcessingException {
  if (bindingResult.hasErrors()) {
   throw new ErrParamException();
  }
  boolean flag = false;
  flag = memberService.save(member);
}

表单提交二

使用.serialize()方法 提交表单内容;

1、可以后台使用 request.getParamter("对应字段的name")获取参数;

2、也可以使用 Model mdel 的POJO接受。(name要一一对应起来)

  • 格式:var data = $("#formID").serialize();
  • 功能:将表单内容序列化成一个以&拼接的字符串,键值对的形式,name1=val1&name2=val2&,空格以%20替换。

页面JS

function sub(){
 $.ajax({
  type:"post",
  url:"/restaurant/addEmployees.do",
  data:$("#form").serialize(),
  dataType :"json",
  success:function(data){
   if(!data.success){
  }
 });
}

页面html代码:

<form action="" id="staff_form">
<div class="addInfor">
<input type="" name="phone" id="phone" value="" placeholder="请输入手机号"/>
<input type="" name="password" id="password" value="" placeholder="请输入密码"/>
<input type="" name="username" id="username" value="" placeholder="请输入姓名"/>

<input name="checkbox" value="chief_store_member" type="checkbox" >
<label class="grey-font" >多店管理</label>
<input name="checkbox" value="branch_store_member" type="checkbox">
<label class="grey-font" >单店管理</label>
</div>
<button type="button" class="mui-btn orange-btn" οnclick="sub();">确认</button>
</form>

后台代码接收方式一

含有单个的checkbox参数接收

@RequestMapping("/addEmployees")
@ResponseBody
public Result<Integer> addEmployees(HttpServletRequest request) {
  String phone = request.getParameter("phone");
  String password = request.getParameter("password");
  String username = request.getParameter("username");
  身份单checkbox接收。如果是复选框多个checkbox,则用数组String[] 接收。
  String checkbox = request.getParameter("checkbox");
}

后台代码接收方式二

@RequestMapping(value="/addCustomer",method=RequestMethod.POST)
@ResponseBody
public LogisticsResult addCustomer(@Valid CustomerInfo customer,BindingResult result ){
        如果是复选框多个checkbox,则在pojo中 用与checkbox的name一样的 数组接收。
        如: String[] checkbox;
}

接收List<String>集合参数:

1、页面js代码:

var idList = new Array();
idList.push(“1”);
idList.push(“2”);
idList.push(“3”);
var isBatch = false;
$.ajax({
    type: "POST",
    url: "<%=path%>/catalog.do?fn=deleteCatalogSchemes",
    dataType: 'json',
    data: {"idList":idList,"isBatch":isBatch},
    success: function(data){
        …
    },
    error: function(res){
        …
    }
});

2、Controller方法:

@Controller
@RequestMapping("/catalog.do")
public class CatalogController {
    @RequestMapping(params = "fn=deleteCatalogSchemes")
    @ResponseBody
    public AjaxJson deleteCatalogSchemes(@RequestParam("idList[]") List<String> idList,Boolean isBatch) {
            …
    }
}  

接收List<User>、User[]集合参数:

1、User实体类:

public class User {
        private String name;
    private String pwd;
    //省略getter/setter
}

2、页面js代码:

var userList = new Array();
userList.push({name: "李四",pwd: "123"});
userList.push({name: "张三",pwd: "332"});
$.ajax({
    type: "POST",
    url: "<%=path%>/catalog.do?fn=saveUsers",
    data: JSON.stringify(userList),//将对象序列化成JSON字符串
    dataType:"json",
    contentType : 'application/json;charset=utf-8', //设置请求头信息
    success: function(data){
        …
    },
    error: function(res){
        …
    }
});  

3、Controller方法:

@Controller
@RequestMapping("/catalog.do")
public class CatalogController {
    @RequestMapping(params = "fn=saveUsers")
    @ResponseBody
    public AjaxJson saveUsers(@RequestBody List<User> userList) {
        …
    }
}  

如果想要接收User[]数组,只需要把saveUsers的参数类型改为@RequestBody User[] userArray就行了。

接收List<Map<String,Object>>集合参数:

1、页面js代码(不需要User对象了):

var userList = new Array();
userList.push({name: "李四",pwd: "123"});
userList.push({name: "张三",pwd: "332"});
$.ajax({
    type: "POST",
    url: "<%=path%>/catalog.do?fn=saveUsers",
    data: JSON.stringify(userList),//将对象序列化成JSON字符串
    dataType:"json",
    contentType : 'application/json;charset=utf-8', //设置请求头信息
    success: function(data){
        …
    },
    error: function(res){
        …
    }
});  

2、Controller方法:

@Controller
@RequestMapping("/catalog.do")
public class CatalogController {  

    @RequestMapping(params = "fn=saveUsers")
    @ResponseBody
    public AjaxJson saveUsers(@RequestBody List<Map<String,Object>> listMap) {
        …
    }
}  

接收User(bean里面包含List)集合参数:

1、User实体类:

public class User {
    private String name;
    private String pwd;
    private List<User> customers;//属于用户的客户群
    //省略getter/setter
}  

2、页面js代码:

var customerArray = new Array();
customerArray.push({name: "李四",pwd: "123"});
customerArray.push({name: "张三",pwd: "332"});
var user = {};
user.name = "李刚";
user.pwd = "888";
user. customers = customerArray;
$.ajax({
    type: "POST",
    url: "<%=path%>/catalog.do?fn=saveUsers",
    data: JSON.stringify(user),//将对象序列化成JSON字符串
    dataType:"json",
    contentType : 'application/json;charset=utf-8', //设置请求头信息
    success: function(data){
        …
    },
    error: function(res){
        …
    }
});  

3、Controller方法:

@Controller
@RequestMapping("/catalog.do")
public class CatalogController {
    @RequestMapping(params = "fn=saveUsers")
    @ResponseBody
    public AjaxJson saveUsers(@RequestBody User user) {
        List<User> customers = user.getCustomers();
        …
    }
}  

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • SpringMvc接收参数方法总结(必看篇)

    接收参数的方式: 1.HttpServletRequest方式接收 public ModelAndView test1(HttpServletRequest req){ String userName = req.getParameter("userName"); String password = req.getParameter("password"); System.out.println(userName); System.out.println(passw

  • Spring MVC请求参数接收的全面总结教程

    前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentResolver,此接口有众多子类,分别处理不同(注解类型)的参数,下面只列举几个子类: RequestParamMethodArgumentResolver:解析处理使用了@RequestParam注解的参数.MultipartFile类型参数和Simple类型(如long.int)参数. Reques

  • SpringMVC接收复杂集合对象(参数)代码示例

    SpringMVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype(MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则SpringMVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合.以下列举接收List<String>.List<User>.List<Map<String,Object>>.

  • SpringMVC如何接收参数各种场景

    目录 表单提交 表单提交二 后台代码接收方式一 后台代码接收方式二 表单提交 此处的表单时 -使用JSON.stringify()函数将数组转换成json类型提交后台,后台使用@RequestBody User user接受处理 页面js //新增提交按钮 $("#buildsubmit").click(function() { var param = $(".form").serializeJson(); $.ajax({ type: 'post', url: p

  • springmvc接口接收参数与请求参数格式的整理

    目录 springmvc接口接收参数与请求参数格式 一.首先我们需要认识下http请求中的Content-Type 二.注解@RequestParam(value="id") 三.注解@RequestBody springmvc接口接受前端传递参数数据类型总结 一.springMVC中controller参数是自动注入 二. 接受前端传递的对象 三.小结一下 springmvc接口接收参数与请求参数格式 前言: 相信大家在刚开始接触接口定义与调用时遇到过接口接收不到请求参数的问题,本人

  • 解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题

    新配置一个spring的MVC项目,发现对Get请求的中文参数出现了乱码: 查看了SpingMVC中关于编码的配置(在web.xml中),如下: <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param>

  • springmvc接收参数为日期类型详解

    这篇文章主要介绍了springmvc接收参数为日期类型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用单个Date类型接收日期类型时,会出现报错,加上initBinder的方法 意思是将所有传入的参数都通过此方法,如果过是日期通过日期格式化器进行格式化 如果是接收类型为对象内的属性为Date类型时 直接在属性双加上注解,就可以进行转化日期格式 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们.

  • springmvc如何使用map接收参数

    目录 springmvc 使用map接收参数 第一种情况:请求参数有多组 第二种情况:所有的参数不分组 用map接收参数的几个注意的问题 1.接受map的参数不能写value 2.对于多个同名字段 springmvc 使用map接收参数 开发过程中有时候我们并不知道前端都会传递哪些参数给到后端. 为方便扩展接口功能, 在请求参数不改变的情况下兼容前端新增的入参的需求, 我们会考虑使用map接受参数. 这样无论前端加减参数, controller的入参是不需要变动的. 第一种情况:请求参数有多组

  • 解决angular的post请求后SpringMVC后台接收不到参数值问题的方法

    这是我后台SpringMVC控制器接收isform参数的方法,只是简单的打出它的值: @RequestMapping(method = RequestMethod.POST) @ResponseBody public Map<String, Object> save( @RequestParam(value = "isform", required = false) String isform) { System.out.println("isform value

  • 详解SpringMVC @RequestBody接收Json对象字符串

    页面提交请求参数有两种,一种是form格式提交,一种json格式提交 通常情况下我们使用的都是form格式提交的数据,数据格式:k=v&k=v,这个时候用springMVC接收参数没有问题,但有时候前端会通过json向后端传递数据,就会出现springMVC获取不到参数值的情况 注意:jQuery的$.post方法虽然也可以传递json格式数据,但实际上是用的form格式提交,jquery会帮你把json转成form格式提交后台 所以其实可以通过$.post,$.get来提交json格式,让jq

  • 解决SpringMvc后台接收json数据中文乱码问题的几种方法

    1.使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码(问号???). 之前在网上找了各种解决方案,都行不通,最后发现是tomcat服务器接收数据的问题 解决方案: 方式一:在controller接收参数时,对参数进行转码 @ResponseBody @RequestMapping(value="/getJsonDataByCityName",produces="application/json") public String get

  • 基于SpringMVC接受JSON参数详解及常见错误总结

    最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前台全部改成Ajax了,跳转再使用SpringMVC控制转发.对于传输JSON数据这边有了更深的一些理解,分享出来,请大家指正. 在SpringMVC中我们可以选择数种接受JSON的方式,在说SpringMVC如何接受JSON之前,我们先聊聊什么是JSON.具体的定义我也不赘述了,在JavaScript中我们经常这样定义JSON 对象 var jsonO

随机推荐