//创建xmlrequest对象
function newxmlreq(){ var xmlreq=false; if(window.XMLHttpRequest){ xmlreq=new XMLHttpRequest(); }else if(window.ActrveXObject){ try { xmlreq=new ActrveXObject("Msxml.XMLHTTP"); }catch(e1){ try{ xmlreq=new ActrveXObject("Microsoft.XMLHTTP") }catch (e2){ xmlreq=false; } } } return xmlreq; }
//前台代码 把xml转换成字符串传到后台
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>往后台发送xml</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form> 收件人:<input type="text" id="name" name="name"/><br/> 地址:<input type="text" id="ad"/><br/> 邮编:<input type="text" id="yb"><br/> <input type="button" value ="提交" οnclick="xmltoh()"/><br/> <span id="sd"></span> </form> <script type="text/javascript" src="js/newXmlReq.js"></script> <script type="text/javascript"> function toxml(){ var name=document.getElementById("name").value; var ad=document.getElementById("ad").value; var yb=document.getElementById("yb").value; var xml=null; if(name!=""&&ad!=""&&yb!=""){ var xml="<file>"+"<name>"+name+"</name>"+"<ad>"+ad+"</ad>"+"<yb>"+yb+"</yb>"+"</file>"; }else{ alert("输入值不能为空"); } return xml; } function xmltoh(){ var xml=toxml(); var xmlreq=newxmlreq(); xmlreq.onreadystatechange=function (){ if(xmlreq.readyState==4){ if (xmlreq.status==200){ var text=xmlreq.responseText; var sd=document.getElementById("sd"); sd.innerHTML=text; } } } xmlreq.open("post","XmlTOHServlet",true); xmlreq.setRequestHeader("Content-Type","text/xml"); xmlreq.send(xml); } </script> </body> </html>
//主要通过流来读取出数据 通过dom工厂创建dom对象 来解析xml字符串
package com.ajax.servlet; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.xml.sax.SAXException; public class XmlTOHServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); StringBuffer bxml = new StringBuffer(); String line = null; //从获得请求中的数据流 try { BufferedReader reader = request.getReader(); while((line = reader.readLine()) != null) { bxml.append(line); } } catch(Exception e) { System.out.println(e.toString()); } String xml =bxml.toString(); Document xmlDoc = null; try { xmlDoc = DocumentBuilderFactory.newInstance() .newDocumentBuilder() .parse(new ByteArrayInputStream(xml.getBytes())); } catch(ParserConfigurationException e) { System.out.println(e.getStackTrace()); } catch(SAXException e) { System.out.println( e); } String uname = xmlDoc.getElementsByTagName("name").item(0).getFirstChild().getNodeValue(); String city = xmlDoc.getElementsByTagName("ad").item(0).getFirstChild().getNodeValue(); String street = xmlDoc.getElementsByTagName("yb").item(0).getFirstChild().getNodeValue(); String responseText = "您发送给"+uname+"地址是"+city+"邮编是"+street+"邮件,还需要一天到达目的地!"; response.setContentType("text/xml; charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.println(responseText); out.close(); } }
ajax中如何读取前台传到后台的xml
最新推荐文章于 2021-02-24 15:50:33 发布