ajax通过xml交互数据

页面代码:

script type="text/javascript">
function sendXML(){
			//获取参数
			var name = document.getElementById("nm").value;
			var pwd = document.getElementById("pwd").value;
			var xhr = null;
			if(window.XMLHttpRequest){
				xhr = new XMLHttpRequest();
			}else{
				xhr = new ActiveXObject("Microsoft.XMLHttp");
			}
			
			var url = "<c:url value='/AjaxOneServlet' />";
			xhr.open("POST",url,true);
			
			xhr.onreadystatechange = function(){
				if(xhr.readyState==4){
					if(xhr.status==200){
						//接收后台xml格式数据
						var xmlDomObj = xhr.responseXML;
						var users = xmlDomObj.getElementsByTagName("user");
						for(var i=0;i<users.length;i++){
							var id = users[i].getAttribute("id");
							var name = users[i].childNodes[0].firstChild.data;
							var age = users[i].childNodes[1].firstChild.data;
							alert(id+","+name+","+age);
						}
					}
				}
			}
			//向后台发送xml格式数据
			var xml = "<user><name>"+name+"</name><pwd>"+pwd+"</pwd></user>";
			xhr.setRequestHeader("ContentType","application/x-www-form-urlencoded");
			xhr.send(xml);
		}
	</script>

后台代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		InputStream in = request.getInputStream();
		//注意,转换流要指定编码,否则会出现乱码
		BufferedReader br = new BufferedReader(new InputStreamReader(in,"utf-8"));
		String line = "";
		StringBuilder sb = new StringBuilder();
		while((line=br.readLine())!=null){
			sb.append(line);
		}
		String str = sb.toString();
		System.out.println(str);
		
		SAXReader sax = new SAXReader();
		try {
			Document dom = sax.read(new StringReader(str));
			Element root = dom.getRootElement();
			String name = root.elementText("name");
			String pwd = root.elementText("pwd");
			System.out.println(name+","+pwd);
			List<User>users = new ArrayList<User>();
			users.add(new User("U001","Jack",22));
			users.add(new User("U002","张三",24));
			users.add(new User("U003","李四",27));
			StringBuilder sb2 = new StringBuilder("<users>");
			for(User u:users){
				sb2.append("<user id=\""+u.getId()+"\"><name>"+u.getName()+"</name><age>"+u.getAge()+"</age></user>");
			}
			sb2.append("</users>");
			response.setContentType("text/xml;charset=utf-8");
			PrintWriter pw = response.getWriter();
			pw.println(sb2.toString());
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值