- 浏览: 1335954 次
- 性别:
- 来自: 湖南澧縣
文章分类
最新评论
-
虾米小尹:
不行啊!2.2-0.25=1.9500000000000002 ...
JavaScript浮点数运算 —— 精度问题 -
heluping000000:
引用String a= "abc",首先在 ...
String,到底创建了多少个对象? -
mack:
谢谢分享matcher.appendReplacement(s ...
string.replaceAll()中的特殊字符($ \)与matcher.appendReplacement -
wzt3309:
完全理解,比网上其他资料都要详细
String,到底创建了多少个对象? -
u014771876:
Java中十六进制转换 Integer.toHexString()
如果只是使用一个包含 名/值 对的简单查询串,这可能不够健壮,不足以向服务器传递大量复杂的模型变化。更好的解决方案是将模式的变化作为XML发送到服务器。
请求参数作为XML发送
示例:选择框中的选中的项将作为XML发送到服务器
postingXML.html清单:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Sending an XML Request</title> <script type="text/javascript"> var xmlHttp; function createXMLHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } } //创建XML function createXML() { var xml = "<pets>"; var options = document.getElementById("petTypes").childNodes; var option = null; //下拉框中所有被选中的项添加到XML文档中 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() { createXMLHttpRequest(); var xml = createXML(); //避免读取缓存,加上时间戳 var url = "PostingXMLExample?timeStamp=" + new Date().getTime(); //参数以XML形式发送时,以POST方式发送 xmlHttp.open("POST", url, true); xmlHttp.onreadystatechange = handleStateChange; //以POST发送时需要设置以下HTTP头 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[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>
注:这个例子为什么使用串连接来创建XML,而不是直接创建文档和元素对象呢?遗憾的是,对于从头构建文档对象,目前还没有跨浏览器的技术。IE通过ActiveX对象提供这个功能,Mozilla浏览器则通过本地JavaScript对象来提供,其他浏览器可能根本不支持,也可能通过其他途径来支持这个功能。
PostingXMLExample.java清单:
package ajaxbook.chap3; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; 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); } /* Note how the Java implementation of the W3C DOM has the same methods * as the JavaScript implementation, such as getElementsByTagName and * getNodeValue. */ 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(); } }
运行结果:
发表评论
-
HTML、JS、JSON特殊字符
2010-12-13 23:47 25878JS到HTML特殊字符转换 这几天做项目,发现从服务器端以J ... -
HTML — HTTP URL 中的特殊字符
2009-10-31 18:16 32951. + URL中的+号表示空格 ... -
HTML — CSS选择器
2009-10-25 21:11 2157一个样式规则由两部分组成:选择器和样式声明。选择器表明要为哪一 ... -
部分解决JsUnit无法在firefox3、safari 测试的问题
2009-10-25 07:03 1438在上一篇中出现了一个问题,就是用 jsunit2.2alpha ... -
JsUnit——eclipse插件(四)
2009-10-25 06:59 2446这节我们来看看如何通过JsUnit插件来运行前几节所测试过的测 ... -
10、JavaScript跨浏览器需注意的问题——ajax基础笔记
2009-10-21 22:19 1371向表中追加行 创建表格行时,我们要把创建的 tr 追加到 t ... -
JsUnit详解——Web服务方式(三)
2009-10-21 00:21 2451上两节提到过以Web方式来运行JsUnit,不过不是很详细,这 ... -
JsUnit详解——《ajax基础》笔记(二)
2009-10-20 22:38 2524使用标准/定制查询串 如此说来,测试运行工具是很强大的,但是 ... -
JsUnit详解——《ajax基础》笔记(一)
2009-10-20 19:57 2614JsUnit与JUnit对比 JsUnit也有setUp() ... -
使用Firefox的Web开发插件
2009-10-18 17:53 1475Firefox的Web开发插件为Firefox浏览器增加了大量 ... -
9、访问WEB服务(REST)——ajax基础笔记
2009-10-18 17:24 4023最其名的WEB服务实现是S ... -
8、读取响应头部——ajax基础笔记
2009-10-18 17:20 6753你有时可能需要从服务器获取一些内容,例如,可能想“ping”一 ... -
7、使用JSON向服务器发送数据——ajax基础笔记
2009-10-18 17:20 5214看过前面的例子后(使用XML向服务器发送复杂的数据结构),你可 ... -
4、将使用W3C DOM动态生成页面——ajax基础笔记
2009-10-18 17:19 1433使用W3C DOM动态生成页面 dynamicContent ... -
3、将响应解析为XML——ajax基础笔记
2009-10-18 17:18 1063将响应解析为XML parseXML.xml清单: < ... -
2、使用innerHTML属性创建动态内容——ajax基础笔记
2009-10-18 17:17 1924使用innerHTML属性创建动态内容 如果结合作用HTML ... -
1、使用XMLHttpRequest对象——ajax基础笔记
2009-10-18 17:17 2019XMLHttpRequest最早是在 IE5 中以active ... -
30、JavaScript代码优化
2009-10-16 21:25 1566JavaScript代码的速度被分成两部分:下载时间和执行速度 ... -
JavaScript代码优化(二)
2009-10-16 01:32 1196◆字符串的使用 在IE6和IE7中因字符串级联导致的主要问题 ... -
JavaScript代码优化(一)
2009-10-15 23:47 1260尽可能避免使用全局变量和函数.全局的变量和函数其实等价于 wi ...
相关推荐
在“使用JSON向服务器发送数据——ajax基础笔记”这个主题中,我们首先会了解如何创建一个XMLHttpRequest对象。在JavaScript中,你可以通过`new XMLHttpRequest()`来实例化一个对象,然后利用它的方法如`open()`、`...
// 对于POST请求,send参数为要发送的数据 ``` 4. **监听状态变化**:通过onreadystatechange事件处理函数,当xhr.readyState改变时,会触发该事件。 ```javascript xhr.onreadystatechange = function() { if ...
AJAX(Asynchronous JavaScript and XML)用于异步加载数据,提升用户体验。 4. 前端框架和库: 在实际开发中,常常会使用到前端框架和库,如React、Vue.js和Angular,它们提供了一套完整的开发工具和组件系统,...
《完善后的在线云笔记系统——基于mybatis、javaee、ajax和json的技术实践》 在线云笔记系统在当今数字化时代中扮演着重要角色,它为用户提供了一种方便、快捷的记录、整理和共享信息的方式。本项目是针对一个已有...
在本文中,我们将深入探讨ExtJS中的一个关键概念——如何使用XML作为TreePanel的数据源。ExtJS是一个强大的JavaScript库,用于构建复杂的Web应用程序,而TreePanel则是它的一个组件,用于展示层次结构的数据,通常...
在“老男孩第20周视频教程笔记”中,我们主要关注的是前端开发的一个关键话题——AJAX(异步JavaScript和XML)。AJAX是一种在不重新加载整个网页的情况下,能够更新部分网页的技术,极大地提升了用户体验。它通过...
12. **Ajax**:Asynchronous JavaScript and XML,用于创建异步Web应用,通过后台与服务器交换数据并局部更新页面,提升了用户体验。 13. **JSON(JavaScript Object Notation)**:JSON是轻量级的数据交换格式,常...
本项目——“达内云笔记”,是一个基于SSM(Spring、SpringMVC、MyBatis)框架构建的云笔记应用,旨在帮助开发者理解和掌握企业级Web应用的开发流程和技术栈。该项目不仅提供了完整的源代码,还附带了详尽的注释,为...
在本压缩包中,你将找到关于SSH框架在实际应用中与SQL Server、Oracle数据库以及Ajax和Java基础知识的详细笔记。 1. SSH框架: - Struts:作为MVC框架的一部分,负责处理HTTP请求,并将控制权交给相应的业务逻辑...
【Servlet学习笔记】是关于Java Web开发中一个关键组件——Servlet的详细教程,它主要讲述了前端与后端如何协同工作,实现数据的交互和页面的动态呈现。在Web应用程序开发中,Servlet扮演着服务器端程序的角色,处理...
SSH学习笔记3主要聚焦于三个Java企业级开发框架——STRUTS、SPRING和HIBERNATE的集成与应用。这三个框架是Java后端开发中非常重要的组件,它们各自负责不同的层面,共同构建了一个强大的MVC(Model-View-Controller...
6. **AJAX与JSP**:AJAX(Asynchronous JavaScript and XML)可以与JSP结合使用,实现页面的异步更新,提高用户体验。 在实际开发中,Servlet和JSP通常配合使用,Servlet处理业务逻辑和数据操作,JSP负责展示。这种...
《DWR笔记整理(三)——深入理解与实践》 Direct Web Remoting(DWR)是一种JavaScript库,它使得在浏览器和服务器之间进行双向通信变得简单。本篇笔记将深入探讨DWR的核心概念、功能以及如何在实际项目中应用。...
当需要支持同时上传多个文件时,可以修改Action类中的方法签名,接受类型为`List<File>`或`List<String>`的对象作为参数。 #### Struts2框架中的Ajax开发 **JSON介绍** JSON(JavaScript Object Notation)是一种...
本文档通过一个具体的例子——级联选择框,来演示如何利用Wicket框架结合Ajax技术实现前端界面的动态更新。 #### 环境准备与基本配置 为了确保示例代码能够正常运行,首先需要搭建好开发环境: - **服务器**: ...
6. **Ajax异步通信**:在day13的笔记中,崔老师可能介绍了AJAX(Asynchronous JavaScript and XML),这是一种让网页实现局部刷新的技术,通过JavaScript与服务器进行异步数据交换,提升了用户体验。 7. **源码分析...
- 调用:使用这个远程对象,JavaScript可以直接调用Java方法,DWR会自动处理请求的发送和结果的接收。 - 服务器端:DWR接收到请求后,找到对应的Java方法并执行,然后将结果返回。 - 响应:结果被封装成JSON或XML...
Jetty 7版本引入了一个重要的新特性——支持跨域Ajax请求,打破了传统浏览器对同源策略的限制,使得不同域之间的Web应用能够进行更灵活的数据交互。 Cometd是一种基于Bayeux协议的实时Web通信技术,旨在解决Web应用...
- **Ajax:** 异步JavaScript和XML,提高Web应用交互性。 - **SSH框架(Struts + Spring + Hibernate):** 流行的企业级应用开发框架组合。 #### Java历史与发展 - **Java之父——James Gosling:** - 1990年...