52,797
社区成员
发帖
与我相关
我的任务
分享
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sending an XML Request</title>
<script type="text/javascript" language="javascript">
var xmlHttp;
function createXMLHttpRequest(){
if(window.XMLHttpRequest){ //Mozilla
xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject){
try{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
alert("创建XMLHttpRequest对象失败");
}
}
}
}
function createXML() {
createXMLHttpRequest()
var xml = "<pets>";
var options = document.getElementById("petTypes").childNodes;
var option = null;
for(var i = 0; i < options.length; i++) {
option = options[i];
if(option.selected) {
xml = xml + "<type>" + option.value + "<\/type>";
}
}
xml = xml + "<\/pets>";
return xml;
}
function sendPetTypes() {
var xml = createXML();
var url = "servlet/PostingXMLExample?timeStamp=" + new Date().getTime();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = processResponse;//指定响应函数
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(xml);
}
function processResponse(){
if(xmlHttp.readyState == 4){
if(xmlHttp.Status == 200){
parseResults();
//document.all.name.value = xmlHttp.responseText;
}
else{
window.alert("你所请求的页面有异常");
alert(xmlHttp.status);
}
}
}
function parseResults(){
var responseDiv = document.getElementById("serverResponse");
if(responseDiv.hasChildNodes()) {
responseDiv.removeChild(responseDiv.childNodes[0]);
}
var responseText = document.createTextNode(xmlHttp.responseText);
responseDiv.appendChild(responseText);
}
</script>
</head>
<body>
<h1>
Select the types of pets in your home:
</h1>
<form action="#">
<select id="petTypes" size="6" multiple="true">
<option value="cats">
Cats
</option>
<option value="dogs">
Dogs
</option>
<option value="fish">
Fish
</option>
<option value="birds">
Birds
</option>
<option value="hamsters">
Hamsters
</option>
<option value="rabbits">
Rabbits
</option>
</select>
<br />
<br />
<input type="button" value="Submit Pets" onclick="sendPetTypes()" />
</form>
<h2>
Server Response:
</h2>
<div id="serverResponse"></div>
</body>
</html>
PostingXMLExample.java
package org.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.xml.sax.SAXException;
import org.w3c.dom.*;
public class PostingXMLExample extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String xml = readXMLFromRequestBody(request);
Document xmlDoc = null;
try {
xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().
parse(new ByteArrayInputStream(xml.getBytes()));
} catch (SAXException e) {
System.out.println("SAXException: " + e);
} catch (ParserConfigurationException e) {
System.out.println("ParserConfigurationException: " + e);
}
NodeList selectedPetTypes = xmlDoc.getElementsByTagName("type");
String type = null;
String responseText = "Selected Pets: ";
for(int i = 0; i < selectedPetTypes.getLength(); i++)
{
type = selectedPetTypes.item(i).getFirstChild().getNodeValue();
responseText = responseText + " " + type;
}
// System.out.println(type);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print(responseText);
}
private String readXMLFromRequestBody(HttpServletRequest request) {
StringBuffer xml = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while((line = reader.readLine())!=null)
{
xml.append(line);
}
} catch (IOException e) {
System.out.println("Error reading XML: " + e.toString());
}
//System.out.println(xml.toString());
return xml.toString();
}
}