postingXML.html
例子来源:《Ajax 基础教程》 金灵 等译 这本书非常不错postingXML.html
<html><head><title></title><script type="text/javascript">var xmlHttp;function createXMLHttpRequest() {if (window.ActiveXObject) {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}else if (window.XMLHttpRequest) {xmlHttp = new XMLHttpRequest();}}function createXML() {var xml = "<pets>";var options = document.getElementById("petTypes").childNodes;var option = null;for(var i = 0; i < options.length; i++) {option = options;if(option.selected) {xml = xml + "<type>" + option.value + "<\/type>";}}xml = xml + "<\/pets>";return xml;}function sendPetTypes() {createXMLHttpRequest();var xml = createXML();var url = "PostingXMLExample?timeStamp=" + new Date().getTime();xmlHttp.open("POST", url, true);xmlHttp.onreadystatechange = handleStateChange;xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");xmlHttp.send(xml);}function handleStateChange() {if(xmlHttp.readyState == 4) {if(xmlHttp.status == 200) {parseResults();}}}function parseResults() {var responseDiv = document.getElementById("serverResponse");if (responseDiv.hasChildNodes()) {responseDiv.removeChild(responseDiv.childNodes);}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"/><h2>Server Response:</h2><div id="serverResponse"></div></form></body></html>
PostingXMLExample.java
package ajaxbook.chap3;import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.IOException;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.w3c.dom.NodeList;import org.xml.sax.SAXException;public class PostingXMLExample extends HttpServlet {protected 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(ParserConfigurationException e) {System.out.println("ParserConfigurationException: " + e);}catch(SAXException e) {System.out.println("SAXException: " + 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;}response.setContentType("text/xml");response.getWriter().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(Exception e) {System.out.println("Error reading XML: " + e.toString());}return xml.toString();}}
页:
[1]