关于前端传参数,后台接收的问题

1、通过ajax,示例:

传给后台的数据通过json封装起来,再用ajax将json传到后台,ajax是用到Jquery的ajax,在jsp先加入Jquery的引用



<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>



js传值的方法如下



function testAjax() {

var users=[{

name:‘张三‘,

age:‘21‘,

birth:‘1994-12-12‘

},

{

name:‘李四‘,

age:‘20‘,

birth:‘1995-12-11‘

},

{

name:‘wangwu‘,

age:‘20‘,

birth:‘1995-12-11‘

}];

$.ajax({

type:‘POST‘,

data:JSON.stringify(users),

contentType :‘application/json‘,

dataType:‘json‘,

url :‘user/saveJsonUser.do‘,

success :function(data) {

alert("OK");

},

error :function(e) {

alert("error");

}})

}



后台处理:用到springmvc这里参数中要加上@RequestBody,@RequestBody将HTTP请求正文转换为适合的HttpMessageConverter对象。



@RequestMapping(value="/saveJsonUser.do",method=RequestMethod.POST)

public Map saveJsonUser(@RequestBody User[]users){

for(Useru:users){

System.out.println(u.getName()+"  "+u.getAge()+"  "+u.getBirth());

}

Map result=newHashMap();

result.put("success","123");

return result;

}



2、在action中请求后台的方法。但是如果数值在传给后台之前需要校验,可以在form中的onsubmit调用js方法进行校验,js方法的返回值为true时,触发action,返回false时,action不起作用。

3、通过dom获取标签,触发标签的submit方法,直接提交数据到后台



function query() {

var inputs = document.getElementsByName("sex");//对象是单选选项

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

if(inputs[i].checked) {//是否选中

var sex = inputs[i].value;

document.getElementById("query").action = projectName+"/query.do?currentPage=1&stsex="+ sex;

break;

}else{

document.getElementById("query").action = projectName+"/query.do?currentPage=1";

}

}

document.getElementById("query").submit();//提交到后台

}



ps:整理下工作中遇到的,欢迎大佬提出意见

1-后台接参

   如果javabean里的属性是大写字母开头则会出现这种问题,请求的时候,json字符串是大写开头,MVC在接收的时候,根据对象的setter,getter属性认为字段都是小写的,所以没办法绑定。规范代码,属性也应该是小定字母开头

2-前端传参

   不传参数,后台接收是null, 传了不赋值,后台接是空串 所以,建议StringUtils.isNotBlank()判断

ps:null和""的区别

   null表示一个字符串对象的引用为空,String a=null;  声明了一个字符串变量a,变量a的引用为空。所以a没有指向任何的内存空间,在堆中也没有开辟任何的空间

  空字符串表示一个字符串对象引用的值为空,String a =“”  声明了一个字符串变量a,变量a的值为空。而a指向了空字符串的内存空间

原文地址:https://www.cnblogs.com/cooljavac/p/11676815.html

时间: 2024-10-11 16:21:24

关于前端传参数,后台接收的问题的相关文章

WinForm POST上传与后台接收

前端 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.IO;using System.Collections.Specialized;

批量删除前端参数传递及后台接收

批量删除,前台参数传递及后台参数接收 后台采用数组接收 例子情景:模拟批量删除用户 思路:删除用户,每一个复选框的Value值都代表一个用户的ID,获取每一个选中的复选框的值,放入数组,然后直接 传递给后台,在不知道一共有多少个复选框的时候,使用jQuery来实现 var userIdList = new Array();//存放相应的用户Id //给每一个选中的标签都绑定一个方法 $("input:checked").each(function(){ //将标签的值放入数组中 use

关于mui前端传值,springboot后台接收值的问题

最近做app,使用mui的ajax给后台传参,后台一直接收不到值,表示很蛋疼.这里通过网上搜索加上个人实践,总结归纳了三种前端传值和后台接收的方式. 第一种: 前端: data: JSON.stringify({username: 'username',password: 'password'}),       headers: {'Content-Type': 'application/json'} 后台: public String test1(@RequestBody Map<String

实现TCP断点上传,后台C#服务实现接收

实现TCP断点上传,后台C#服务实现接收 终端实现大文件上传一直都是比较难的技术,其中涉及到后端与前端的交互,稳定性和流量大小,而且实现原理每个人都有自己的想法,后端主流用的比较多的是Http来实现,因为大多实现过断点下载.但稳定性不能保证,一旦断开,无法续传.所以得采用另一种流行的做法,TCP上传大文件. 网上查找了一些资料,大多数是断点下载,然后就是单独的C#端的上传接收,或是HTTP的,或是只有android端的,由于任务紧所以之前找的首选方案当然是Http先来实现文件上传,终端采用Pos

js数组作为参数用ajax向后台传参数

1 /*前台往后台传参数时,可以这样写*/ 2 var chessId = "123"; 3 var i=0; 4 5 var data = []; 6 7 /*添加单个参数*/ 8 data.push({name:"type",value:"分配"}); 9 data.push({name:"id",value:chessId}); 10 11 /*循环添加集合参数对象*/ 12 data.push({name:"

springmvc 传参和接收参数

对于springmvc接收参数有那些方式,下面我写了几个. 先创建项目,导入jar包配置web.xml ,springmvc-servlet.xml上面有过介绍,在本章最下面配置信息也写了出来. 通过HttpServletRequest 获取参数 @RequestMapping(value="par1.do") public ModelAndView par1(HttpServletRequest request){ // 接收前台传来的参数 String userName = req

关于后台接收参数为null的问题之ajax--contentType

今天小编遇到一个关于后台接收参数为null的问题之ajax--contentType ? 答: ajax方法中的参数: contentType:发送至服务器时内容的编码类型,一般默认:application/x-www-form-urlencoded(适应大多数的场合) dataType:预期服务器返回的数据类型 有时候前台ajax向后台传数据的时候,能够进到后台,但是后台显示接受的参数为null,如果ajax没有问题,这个时候就要考虑后台在接收参数的时候使用的是什么注解.(@RequestPa

springmvc后台接前端的参数,数组,集合,复杂对象等

springmvc后台接前端的参数,数组,集合,复杂对象等 参考地址:https://blog.csdn.net/feicongcong/article/details/54705933 常用的几种方式如下: (1)数组: 后台 @ResponseBody @RequestMapping(value = "/ajaxsortPriority") public ResultDo ajaxsortPriority(@RequestParam("ids[]") Long[

Mvc后台接收 参数

@Html.TextAreaFor(m => m.Emps, new { @class = "easyui-validatebox", @style = "height:60px;width:300px;", @readonly = "readonly" }) @readonly = "readonly"这个只读属性 不能设置为其它 否则在后台接收不到 Mvc后台接收 参数