ajax post 请求 ,java端使用 request.getParameter 获取不到数据问题

js端

$.ajax({
    type:‘POST‘,
    data:{a:1},
    url:_this.apiUrl+url,
    dataType:‘json‘,//使用jsonp方式请求
    contentType:"application/json; charset=utf-8",
    json:"callback",//jsonp名
    success:function(re){

    }});
@PostMapping(value = "/queryProduct")
    public Map<String,Object> queryProduct(HttpServletRequest request, HttpServletResponse response){

        String tmPlantId = request.getParameter("a");

    }

结果发现  request.getParamter("a"); 无法获取a 的值 。

但是java 中换成

@PostMapping(value = "/queryProduct")
    public Map<String,Object> queryProduct(@RequestBody String a, HttpServletResponse response){

       System.out.println(a);
    }

此时a 的值是可以获取到的。

或者把ajax 的

contentType:"application/json; charset=utf-8", 换成  contentType:"application/x-www-form-urlencoded; charset=UTF-8", 通过request.getParamater("a") 也是可以获取到值的。

  

1. 看来问题在于contentType  application/json 和 application/x-www.form-urlencoded 的区别

  参考 http://blog.csdn.net/mhmyqn/article/details/25561535

  普通情况下 ,java 是没有对请求参数做处理的, 所有参数都是放到输入流中的,即inputstream

但是tomcat 对 content-type  =  application/x-www.form-urlencoded  和 multipart/form-data 的 请求流做了处理,也就是我们常见的HttpServletRequest 对象。

  这两种请求方式是标准的表单请求 ,也就是键值对的方式。尤其其他方式的请求参数的不固定性,所以只对这两个做了处理。

  即: 对输入流处理,把参数按照键值对存放map 中,可以通过request.getParameter获取

时间: 2024-07-31 09:56:42

ajax post 请求 ,java端使用 request.getParameter 获取不到数据问题的相关文章

过滤器中处理multipart/form-data头部的post请求request.getParameter(&quot;)获取不到参数问题

如果不是文件类型请求,我们使用request.getParameter("");方法是可以获取到参数内容的,如果是文件类型的请求即请求的头部信息为"multipart/form-data",时,需要如下处理: HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; String contentTy

java编程——servlet和Ajax异步请求的接口编程(没有调用数据库的数据)

编程应用背景: 使用HttpServlet接口来编写一个动态登录的接口(需要在Tomcat容器发布) 登录的 LoginSample 类代码: 1 package com.zhang.java; 2 3 public class LoginSample { 4 public LoginSample() { //构造方法 5 // System.out.println("构造方法被调用!"); 6 } 7 8 public boolean login(String ln, String

java编程(2)——servlet和Ajax异步请求的接口编程(有调用数据库的数据)

第一步: 1.为项目配置 Tomcat 为 server: 2.导入 mysql的jar包 到项目目录中: 第二步:编码 1.数据库连接类ConnectMysql.java代码: 1 package com.testing.mysql; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 6 public class ConnectMysql { 7 //设置连接的成员变量 8 public Connection

request.getParameter获取中文是乱码的解决方法?

解决方法1: 直接设置编码格式:request.getParameter("").getBytes("iso-8859-1","gb2312"); 解决方法2: 设置tomcat/conf/server.xm中,在Connector中加入:URIEncoding="UTF-8" <Connector port="8080" protocol="HTTP/1.1" connectio

java调用windows的wmi获取设备性能数据

java调用windows的wmi获取监控数据(100%纯java调用windows的wmi获取监控数据) 转:http://my.oschina.net/noahxiao/blog/73163 纯java主要体现在可以跨平台调用com.所用的是j-Interop,它是100%纯java实现的com的调用 1.环境准备 a.windows要开启Remote Registry与Windows Management Instrumentation服务 b.修改安全策略 我系统是英文的,如果是中文系统

js中,for循环里面放ajax,ajax访问不到变量以及每次循环获取不到数据问题总结

首先晒下自己代码 for ( var i = 0; i < rows.length; i++) { $.ajax({ type:'POST', url:'${ctx }/admin/store_item/findStoreItemsByType?typeid=' +flag+'&id='+rows[i].id,//请求的url地址 async: false,//设置成同步 dataType:'json', success:function(data){ if(flag==1){ $('#ch

request.getParameterMap获取不到数据问题

最近在做javaweb项目的过程中发现使用request.getParameterMap( )方法获取jsp页面中的表单数据的时候发现获取不到,检查了好长时间最后发现问题是在jsp页面中. request.getParameterMap( )只能获取表单中添加name属性的input文本框中的内容,而无法获取id属性的文本框内容.在这里容易忘记添加name属性 可以获取name属性 <input type="text" name="name" placehol

request.getParameter()不能获得值

在调试汇付接口的过程中,接收返回的参数用request.getParameter()获取参数的时候,获得的值为null. 搜索资料说这种情况跟form表单的属性 enctype有关系.当form表单内容采用enctype=multipart/form-data编码时, 调用request.getParameter()获取不到数据.可以通过request.getInputStream()获得数据,并把 “UsrCustId=6000060003271506, BgRetUrl=http%3A%2F

ajax post请求request.getParameter(&quot;&quot;)取值为null

今天在写提交一个json数据到后台,然后后台返回一个json数据类型.但是发现后台通过request.getParamter("")取到的值为null. 于是写一个简单的ajax 请求,来排查问题 前台代码: $(document).ready(function(){ $("#ajax").click(function(){ var depart="depart"; $.ajax({ url :path+ "/AjaxReponse&q