//创建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 ="提交" onclick="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();
}
}