您的位置:首页 > 其它

ajax中如何读取前台传到后台的xml

2012-10-27 09:43 543 查看
//创建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();
}

}















                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: