• 关与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的原因

  • 相关阅读:
    用Struts2框架报错:The Struts dispatcher cannot be found
    Struts2.0笔记二
    [转]使用Struts 2防止表单重复提交
    Struts配置文件报错"元素类型为 "package" 的内容必须匹配"
    Java基础知识
    Struts笔记二:栈值的内存区域及标签和拦截器
    [转]迭代器
    Struts笔记一
    账户注册激活邮件及登入和注销
    EL表达式获取对象属性的原理
  • 原文地址:https://www.cnblogs.com/yy199110/p/2787576.html
Copyright © 2020-2023  润新知