zoukankan      html  css  js  c++  java
  • 关与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的原因

  • 相关阅读:
    Thymeleaf模板引擎语法
    kali更新软件源
    解决kali安装成功后没有声音的问题
    SSO的误区及建议
    关于 target="_blank"漏洞的分析
    好久没来了,平时一些笔记都记在印象笔记,长传一波
    BIOS基础
    CSRF的本质及防御
    linux下stricky
    CSRF与xss的区别
  • 原文地址:https://www.cnblogs.com/yy199110/p/2787576.html
Copyright © 2011-2022 走看看