@

ajax参数传递与后台接收

Servlet中读取http参数的方法

  • Enumeration getParameterNames() 返回一个 String 对象的枚举,包含在该请求中包含的参数的名称
  • String getParameter(String name) 以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。
  • String getQueryString() 返回包含在路径后的请求 URL 中的查询字符串。
  • String[] getParameterValues(String name) 返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回 null。
  • ServletInputStream getInputStream() 使用 ServletInputStream,以二进制数据形式检索请求的主体。

ajax默认contentType为application/x-www-form-urlencoded

使用默认contentType,参数追加到url后传递

$.ajax({
url: "http://localhost:8082/boot/request/parameter?name=aaa&paraB=bbb",
contentType: "application/x-www-form-urlencoded;charset=utf-8",
success: function(json){
console.log(json);
}
});
//请求中包含的参数的名称
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String s = parameterNames.nextElement();
System.out.println("getParameterNames:" + s);
String paraA = request.getParameter(s);
System.out.println("getParameter:" + paraA);
} // 返回包含在路径后的请求 URL 中的查询字符串
String queryString = request.getQueryString();
System.out.println("getQueryString:" + queryString);

使用默认contentType,参数放到data中传递

$.ajax({
url: "http://localhost:8082/boot/request/parameter",
contentType: "application/x-www-form-urlencoded;charset=utf-8",
data: {name: "aaa", paraB:"bbb"},
success: function(json){
console.log(json);
}
});
//请求中包含的参数的名称
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String s = parameterNames.nextElement();
System.out.println("getParameterNames:" + s);
String paraA = request.getParameter(s);
System.out.println("getParameter:" + paraA);
}

使用默认contentType,data中传递数组

$.ajax({
url: "http://localhost:8082/boot/request/parameter",
type: "post",
contentType: "application/x-www-form-urlencoded;charset=utf-8",
data: {foo: ["bar1", "bar2"]},
success: function (json) {
console.log(json);
}
});
// 返回一个字符串对象的数组
String[] parameterValues = request.getParameterValues("foo[]");
if (parameterValues != null) {
for (String parameterValue : parameterValues) {
System.out.println("getParameterValues:" + parameterValue);
}
}

使用contentType为application/json,在data中传递复杂参数

$.ajax({
url: "http://localhost:8082/boot/request/parameter",
type: "post",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({name: "aaa", foo: ["bar1", "bar2"]}),
success: function (json) {
console.log(json);
}
});
// 以二进制数据形式检索请求的主体
ServletInputStream inputStream = request.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println("getInputStream:" + sb);

使用contentType为application/json,在data中传递复杂参数,并使用springmvc接收

$.ajax({
url: "http://localhost:8082/boot/request2/requestBody",
type: "post",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({id: 111, name: "aaa", foo: ["bar1", "bar2"]}),
success: function (json) {
console.log(json);
}
});
@RequestMapping(value = "/requestBody")
public void RequestBody(@RequestBody User user) throws IOException {
System.out.println(user.toString());
}

url追加参数与data中放json同时使用

$.ajax({
// url: "http://localhost:8082/boot/request/parameter?userName=aaa",
url: "http://localhost:8082/boot/request2/parm?userName=aaa",
type: "post",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({id: 111, name: "aaa", foo: ["bar1", "bar2"]}),
async:false,
success: function (json) {
console.log(json);
}
});
//请求中包含的参数的名称
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String s = parameterNames.nextElement();
System.out.println("getParameterNames:" + s);
String paraA = request.getParameter(s);
System.out.println("getParameter:" + paraA);
}
// 以二进制数据形式检索请求的主体
ServletInputStream inputStream = request.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println("getInputStream:" + sb);

@RequestMapping(value = "/parm")
public void parm(@RequestParam String userName, @RequestBody User user) throws IOException {
System.out.println("userName:" + userName);
System.out.println(user.toString());
}

参考文章:

https://www.w3cschool.cn/servlet/servlet-client-request.html

https://blog.csdn.net/qq_34129814/article/details/72604347

ajax参数传递与后台接收的更多相关文章

  1. ajax传递数组后台接收不到值的问题

    背景: JQGrid需要进行批量删除操作传给后台的是数组,结果后台接收不到值. 后台语言:java 原因: ajax传递参数时,traditional 默认为false,JQuery会深度序列化参数对 ...

  2. ajax 发送json 后台接收 遍历保存进数据库

    前台怎么拿参数的我就不管了我也不会 反正用这个ajax没错 ajax 代码   一定要写明http请求类型  { contentType:"application/x-www-form-ur ...

  3. 原生ajax提交php后台接收不到问题

    var xmlHttp; if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); ...

  4. 【JS】中ajax的URL中包含中文,后台接收乱码

    [问题]ajax提交get请求,url中参数包含中文,后台接收到显示乱码. [解决方案]前台: function getSiteInfoByName(siteName){ var res; $.aja ...

  5. Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法

    之前写过一篇记录文章,写的是将一个比较复杂的数据结构在前台组合起来后传递到后台. 当时并不太了解@RequestBody,也并没有使用js提供的JSON.stringify()方法 所有都是自己写的, ...

  6. ajax 传递数组类型参数后台接收不到的问题

    在做排序功能的时候需要将一个数组的数据传递到后台,(当时怎么没用json,如果用json就没有那么多的事情了),数据提交采用ajax! 先看代码 js: submitbtn: function () ...

  7. SpringMVC后台接收list类型的数据的实现方式

    一.背景 最近在做一些东西的时候,遇到一个需要Springmvc后台接收list类型数据的需求,几经辗转才完美解决了这个问题,今天记下来方便以后使用,也分享给需要的小伙伴们~ 二.实现方式 1.实现方 ...

  8. angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法

    本文地址:http://www.cnblogs.com/jying/p/6733408.html   转载请注明出处: 写此文的背景:在工作学习使用angular的$http.post()提交数据时, ...

  9. ASP.NET前台table通过Ajax获取绑定后台查询的json数据

    上一篇<ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据>写了前台提交数据后台保存到数据库,数据处理以后用户肯定要查询.接下来就写一个前台table通过ajax  J ...

随机推荐

  1. winform 跨线程访问问题

    一.问题描述 进行winform 开发我们在进行数据交换时避免不了使用多线程或异步方法,这样操作也将避免不了跨线程对控件进行操作(赋值.修改属性). 下面通过一个测试说明一下问题 点击一个按钮异步对t ...

  2. 文本三剑客---awk(gawk)基础

    gawk程序是Unix中原始awk程序的GNU版本.gawk程序让流编辑器迈上了一个新的台阶,它提供了一种编程语言而不只是编辑器命令.在gawk编程语言中,可以完成下面的事情: (1)定义变量来保存数 ...

  3. 【土旦】在vue filters中 优雅的使用对象的key、value来替换 if switch多重判断简化流程

    前言 之前写过滤器的时候都是 用 if switch 来进行值的判断 返回对应的值, 在没去百度搜索之前都是都是这样写的 ) { return "支付成功"; } ) { retu ...

  4. Windows有点腻了?不如试试Ubuntu.

    最近在接触Python. 因为担心环境会向Java一样,很容易影响当前的工作电脑. 所以准备搭建一台虚拟机,不过Windows的尺寸是在太大了.所以,选择安装Ubuntu. Ubuntu官方网站地址: ...

  5. wav格式文件、pcm数据

    wav格式文件是常见的录音文件,是声音波形文件格式之一,wav 文件由文件头和数据体两部分组成. 文件头是我们在做录音保存到文件的时候,要存储的文件的说明信息,播放器要通过文件头的相关信息去读取数据播 ...

  6. Android View的重绘过程之Layout

    博客首页:http://www.cnblogs.com/kezhuang/p/ View绘制的三部曲,测量,布局,绘画现在我们分析布局部分测量部分在上篇文章中已经分析过了.不了解的可以去我的博客里找一 ...

  7. java:nextInt()和nextLine()一起使用出错

    今天遇到一个很奇怪的事情,日常刷题中,遇到一个很简单的题: (不想看我多逼逼只想知道为什么会出错看最后) 题目: 题目描述 description 现有有N个学生的数据记录,每个记录包括学号.姓名.三 ...

  8. 利用ZYNQ SOC快速打开算法验证通路(6)——LWIP实现千兆TCP/IP网络传输

    一.前言 之前ZYNQ与PC之间的网络连接依赖于外接硬件协议栈芯片,虽然C驱动非常简单,但网络带宽受限.现采用LWIP+PS端MAC控制器+PHY芯片的通用架构.关于LWIP库,已经有很多现成的资料和 ...

  9. 如何快速搭建一个基于ServiceStack框架的web服务

    ServiceStack是一个高性能的.NET Web Service 平台,能够简化开发高性能的REST (支持JSON,XML,JSV,HTML,MsgPack,ProtoBuf,CSV等消息格式 ...

  10. SpringBoot使用qq邮箱发送邮件

    最近公司要做一个邮箱注册和重置密码的功能,因为之前就做过,但是不是Springboot项目,所以相对来说还是比较容易的,在这里记录一下. 一.引用Maven依赖 这里使用spring自带的邮件jar包 ...