关与servlet接受ajax传递消息的问题

这是一开始的代码

if(request){ 
				request.onreadystatechange = onReadyStateChange;	
				request.open(HttpMethod,url,true);//这里HttpMethod是一个POST	
				request.send(params);//params是 username = 123
		}

 这个是我在Servlet端得到的代码

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("parameters=====>"+req.getParameter("username"));
    }

得到结果就是一个 NULL ,之后看了别人的博客才知道

这里没有设置"Content-Type" 后台是无法用req.getParameter()方法获取数据的。那么之后就再里面加上content-type

request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

果然成功了。但是问题又出现了,我把方法换成get 在URL后面加上QueryString。没有设置Content-Type.但居然成功了这是为什么?看代码

if(request){ // if request is not null
                request.onreadystatechange = onReadyStateChange;    
                request.open("get","check.do?username=123",true);
                request.send(null);
        }

为什么POST需要设置Content-type而对于GET则是不设置也能得到呢?

此时我们就必须要了解"x-www-form-urlencoded"是干什么的?application/x-www-form-urlencoded: 数据被编码为名称/值对(也就是键值对)而且相邻键值对以&符号分割开,这个和Query是不是一样?所以这就是为什么GET方法不要设置Content-type的原因

原文地址:https://www.cnblogs.com/yy199110/p/2787576.html