﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-J2EE社区-随笔分类-Ajax</title><link>http://www.blogjava.net/xcp/category/34949.html</link><description>苟有恒,何必三更起五更眠;&lt;br/&gt;最无益,只怕一日曝十日寒.</description><language>zh-cn</language><lastBuildDate>Fri, 06 May 2016 05:04:57 GMT</lastBuildDate><pubDate>Fri, 06 May 2016 05:04:57 GMT</pubDate><ttl>60</ttl><item><title>解决ajax跨域访问问题</title><link>http://www.blogjava.net/xcp/archive/2016/05/06/430376.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Fri, 06 May 2016 04:39:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2016/05/06/430376.html</guid><description><![CDATA[<div><font style="background-color: #cce8cf">前端js:<br />$.ajax({<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<a href="'http://localhost/njkh/test'">url:'http://localhost/xxxx/test'</a>, //后台处理程序<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;async:true,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;type:'get',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //数据发送方式<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;dataType:'jsonp',&nbsp;&nbsp;&nbsp;&nbsp; //接受数据格式<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的接受 的参数名(默认为callback)<br />&nbsp;&nbsp;&nbsp;&nbsp;/*jsonpCallback:"jsonpCallback",*///可选项，写上表示返回函数的函数名用&#8220; jsonpCallback&#8221;，不写 默认为jQuery自动生成的随机函数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;success:function(result){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;var eTime = new Date(); //结束时间 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;//设置在线人数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;$("#server_count_1").html(result+"人");&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;error:function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;alert("服务器1连接失败");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp;&nbsp;});<br /><br /><br /><br /><br />后端处理类：<br />@Override<br />&nbsp;public String execute() throws Exception {<br />&nbsp;&nbsp;int zxrs = SessionCounter.getRealCount();<br />&nbsp;&nbsp;response.setContentType("text/plain");<br />&nbsp;&nbsp;&nbsp;&nbsp; response.setCharacterEncoding("utf-8");<br />&nbsp;&nbsp;&nbsp;&nbsp; String callbackparam=request.getParameter("callbackparam");<br />&nbsp;&nbsp;&nbsp;&nbsp; //System.out.println("callbackparam:"+callbackparam);<br />&nbsp;&nbsp;&nbsp;&nbsp; PrintWriter writer=response.getWriter();<br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; //如果ajax请求写了 jsonpCallback:"jsonpCallback",<br />&nbsp;&nbsp;&nbsp;&nbsp; //writer.write("jsonpCallback("+zxrs+")");<br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; //如果ajax请求没有写 jsonpCallback:"jsonpCallback",<br />&nbsp;&nbsp;&nbsp;&nbsp; writer.write(callbackparam+"("+zxrs+")");//需要callbackparam参数接收随机函数名<br />&nbsp;&nbsp;return null;<br />&nbsp;}</font></div><img src ="http://www.blogjava.net/xcp/aggbug/430376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2016-05-06 12:39 <a href="http://www.blogjava.net/xcp/archive/2016/05/06/430376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何读取本地磁盘驱动器?</title><link>http://www.blogjava.net/xcp/archive/2011/12/16/366548.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Fri, 16 Dec 2011 09:29:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2011/12/16/366548.html</guid><description><![CDATA[<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;fso;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;drvs;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;drv;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;s;&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fso&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">new</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;ActiveXObject(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">Scripting.FileSystemObject</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drvs&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">new</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;Enumerator(fso.Drives);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">for</span><span style="color: #000000; background-color: #f5f5f5">(;</span><span style="color: #000000; background-color: #f5f5f5">!</span><span style="color: #000000; background-color: #f5f5f5">drvs.atEnd();drvs.moveNext()){&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drv&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;drvs.item();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;s&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;drv.DriveLetter;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;(drv.DriveType&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">==</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">3</span><span style="color: #000000; background-color: #f5f5f5">)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;drv.ShareName;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">else</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;(drv.IsReady)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;drv.VolumeName&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;totalSize:&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;drv.totalSize&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;freeSpace:&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;drv.freeSpace&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;availableSpace:&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;drv.availableSpace;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">else</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">[Drive&nbsp;&nbsp;&nbsp;not&nbsp;&nbsp;&nbsp;ready]&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">\n&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(s);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<p>&nbsp;</p><img src ="http://www.blogjava.net/xcp/aggbug/366548.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2011-12-16 17:29 <a href="http://www.blogjava.net/xcp/archive/2011/12/16/366548.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用js组件网站</title><link>http://www.blogjava.net/xcp/archive/2011/07/06/353791.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Wed, 06 Jul 2011 06:40:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2011/07/06/353791.html</guid><description><![CDATA[<div>
图片切换：<a href="http://www.cosmissy.com/myfocus/demo.html#">http://www.cosmissy.com/myfocus/demo.html#</a>
<br />
<br />
弹出框切换：<a href="http://www.lhgcore.com/">http://www.lhgcore.com/</a>
<br />
<br />
jQuery风格：<a href="http://ligerui.com/">http://ligerui.com/</a>
<br />
<br />
开源社区：<a href="http://www.oschina.net/">http://www.oschina.net/</a>
</div>
<img src ="http://www.blogjava.net/xcp/aggbug/353791.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2011-07-06 14:40 <a href="http://www.blogjava.net/xcp/archive/2011/07/06/353791.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javaScript 获取窗口左右宽高大小　大全 </title><link>http://www.blogjava.net/xcp/archive/2011/06/16/352410.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Thu, 16 Jun 2011 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2011/06/16/352410.html</guid><description><![CDATA[<a href="http://www.360doc.com/content/11/0125/12/5480484_88885141.shtml">http://www.360doc.com/content/11/0125/12/5480484_88885141.shtml</a><br /><br />1、基础知识：<strong>网页的大小</strong>和<strong>浏览器窗口的大小<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;首先，要明确两个基本概念。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一张网页的全部面积，就是它的大小。通常情况下，网页的大小由内容和CSS样式表决定。浏览器窗口的大小，则是指在浏览器窗口中看到的那部分网页面积，又叫做viewport（视口）。很显然，如果网页的内容能够在浏览器窗口中全部显示（也就是不出现滚动条），那么网页的大小和浏览器窗口的大小是相等的。如果不能全部显示，则滚动浏览器窗口，可以显示出网页的各个部分。<br /><br />2、clientLeft,clientTop,clientWidth,clientHeight<br />&nbsp;&nbsp;&nbsp;&nbsp;<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/xcp/clientwidth.gif" width="500" height="312" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（图一 clientHeight和clientWidth属性）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>clientWidth=width+padding<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientHeight=heigt+padding<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function getViewport(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="HTML_TXT">if (document.compatMode == "BackCompat"){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:document.body.clientWidth;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:document.body.clientHeight;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //整个网页的大小<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></font></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:document.documentElement(一个div).clientWidth<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:document.documentElement.clientHeight;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//一个div的大小<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">}</font><br /><br /><br />3、screenLeft,screenTop,screenWidth,screenHeight&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;网页上的每个元素还有scrollHeight和scrollWidth属性，指包含滚动条在内的该元素的视觉面积.那么，document对象的scrollHeight和scrollWidth属性就是网页的大小，意思就是滚动条滚过的所有长度和宽度。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function getViewport(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="HTML_TXT">if (document.compatMode == "BackCompat"){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:document.body.screenWidth;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:document.body.screenHeight&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //整个网页的大小（包括不同见的滚动条大小,如没有滚动条，screenwidth=clientwidth）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></font></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:document.documentElement(一个div).screenWidth<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:document.documentElement.screenHeight&nbsp;;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//一个div的大小&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">}</font><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />4、offsetLeft,offsetTop,offsetWidth,offsetHeight(获取网页元素的绝对位置)<br />&nbsp;&nbsp;&nbsp;&nbsp;网页元素的绝对位置，指该元素的左上角相对于整张网页左上角的坐标。这个绝对位置要通过计算才能得到。<br />&nbsp;&nbsp;&nbsp;&nbsp;首先，每个元素都有offsetTop和offsetLeft属性，表示该元素的左上角与父容器（offsetParent对象）左上角的距离。所以，只需要将这两个值进行累加，就可以得到该元素的绝对坐标.<br />&nbsp;&nbsp;&nbsp;&nbsp;offsetWidth=width+padding+border<br />&nbsp;&nbsp;&nbsp;&nbsp;offsetHeight=height+padding+border<br />&nbsp;&nbsp;&nbsp;<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/xcp/offsetwidth.gif" width="500" height="374" />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（图二 offsetTop和offsetLeft属性）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面两个函数可以用来获取绝对位置的横坐标和纵坐标：<br />&nbsp;&nbsp;&nbsp;&nbsp; function getElementLeft(element){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="HTML_TXT">var actualLeft = element.offsetLeft</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="HTML_TXT">var current = element.offsetParent</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (current !== null){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="HTML_TXT">actualLeft += current.offsetLeft</span>;<br />
<div style="text-indent: -0.5em; padding-left: 1em" id="syn_row283" class="SYN_TXT"><span class="HTML_TXT">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current = current.offsetParent;&nbsp;&nbsp;&nbsp;&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return actualLeft;</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><font color="#0000ff"><span style="color: #000000">}</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp; function getElementTop(element){</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000" class="HTML_TXT">var actualTop = element.offsetTop;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000" class="HTML_TXT">var current = element.offsetParent;</span><br /></span><span style="color: #000000" class="HTML_TXT">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (current !== null){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000" class="HTML_TXT">actualTop += current.offsetTop</span></span><span style="color: #000000" class="HTML_TXT">;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000000" class="HTML_TXT">current = current.offsetParent</span><br /></span><span style="color: #000000" class="HTML_TXT">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br /></span><span style="color: #000000" class="HTML_TXT">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return actualTop;</span>&nbsp;&nbsp;<br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;由于在表格和iframe中，offsetParent对象未必等于父容器，所以上面的函数对于表格和iframe中的元素不适用.</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #000000">5、获取元素位置的快速方法</span><br /><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;除了上面的函数以外，还有一种快速方法，可以立刻获得网页元素的位置.那就是使用</span><strong style="color: #000000">getBoundingClientRect()</strong><span style="color: #000000">方法。它返回一个对象，其中包含了left、right、top、bottom四个属性，分别对应了该元素的左上角和右下角相对于浏览器窗口（view</span><span style="color: #000000">port）左</span>上角的距离。<br />&nbsp;&nbsp;&nbsp;&nbsp;var X= this.getBoundingClientRect().left;<br />&nbsp;&nbsp;&nbsp; var Y =this.getBoundingClientRect().top;<br />&nbsp;&nbsp;&nbsp;&nbsp;再加上滚动距离，就可以得到绝对位置<br />&nbsp;&nbsp;&nbsp;&nbsp;var X= this.getBoundingClientRect().left+document.documentElement.scrollLeft;<br />&nbsp;&nbsp;&nbsp; <span class="HTML_TXT">var Y =this.getBoundingClientRect().top+document.documentElement.scrollTop;</span><br />&nbsp;&nbsp; 目前，IE、Firefox 3.0+、Opera 9.5+都支持该方法，而Firefox 2.x、Safari、Chrome、Konqueror不支持</font></div><img src ="http://www.blogjava.net/xcp/aggbug/352410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2011-06-16 11:17 <a href="http://www.blogjava.net/xcp/archive/2011/06/16/352410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Balsamiq Balsamiq (画界面原型图)</title><link>http://www.blogjava.net/xcp/archive/2011/01/13/342948.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Thu, 13 Jan 2011 10:33:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2011/01/13/342948.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/342948.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2011/01/13/342948.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/342948.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/342948.html</trackback:ping><description><![CDATA[<pre id="best-answer-content">Balsamiq Mockups是互联网产品设计时，设计师绘制线框图和原型的工具。是手绘风格的，最近比较火爆。
免费版需要在你的博客上写一篇关于Balsamiq Mockups的评测或者介绍，然后给作者写邮件索取，可以参考：
<a href="http://www.hanjunxing.com/balsamiq-mockups-one-for-all" target="_blank">http://www.hanjunxing.com/balsamiq-mockups-one-for-all</a></pre>
<img src ="http://www.blogjava.net/xcp/aggbug/342948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2011-01-13 18:33 <a href="http://www.blogjava.net/xcp/archive/2011/01/13/342948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>四种操作xml的方式： SAX, DOM, JDOM , DOM4J的比较 </title><link>http://www.blogjava.net/xcp/archive/2010/02/12/312617.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Fri, 12 Feb 2010 09:44:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2010/02/12/312617.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/312617.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2010/02/12/312617.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/312617.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/312617.html</trackback:ping><description><![CDATA[<div>
<p>1. 介绍</p>
<p>1）DOM(JAXP&nbsp;Crimson解析器) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构，然后才能做任何工作。由于它是基于信息层次的，因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先，由于树在内存中是持久的，因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航，而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。</p>
<p>2）SAX</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAX处理的优点非常类似于流媒体的优点。分析能够立即开始，而不是等待所有的数据被处理。而且，由于应用程序只是在读取数据时检查数据，因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上，应用程序甚至不必解析整个文档；它可以在某个条件得到满足时停止解析。一般来说，SAX还比它的替代者DOM快许多。 <br />
&nbsp;　　选择DOM还是选择SAX？ 对于需要自己编写代码来处理XML文档的开发人员来说，&nbsp; 选择DOM还是SAX解析模型是一个非常重要的设计决策。 DOM采用建立树形结构的方式访问XML文档，而SAX采用的事件模型。 <br />
<br />
　　DOM解析器把XML文档转化为一个包含其内容的树，并可以对树进行遍历。用DOM解析模型的优点是编程容易，开发人员只需要调用建树的指令，然后利用navigation&nbsp;APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档，所以对性能和内存的要求比较高，尤其是遇到很大的XML文件的时候。由于它的遍历能力，DOM解析器常用于XML文档需要频繁的改变的服务中。 <br />
<br />
　　SAX解析器采用了基于事件的模型，它在解析XML文档的时候可以触发一系列的事件，当发现给定的tag的时候，它可以激活一个回调方法，告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低，因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时，SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难，而且很难同时访问同一个文档中的多处不同数据。 </p>
<p>3）JDOM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<a href="http://www.jdom.org/"><font color="#0000ff">http://www.jdom.org/</font></a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDOM的目的是成为Java特定文档模型，它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型，JDOM一直得到大力推广和促进。正在考虑通过&#8220;Java规范请求JSR-102&#8221;将它最终用作&#8220;Java标准扩展&#8221;。从2000年初就已经开始了JDOM开发。 </p>
<p>　　JDOM与DOM主要有两方面不同。首先，JDOM仅使用具体类而不使用接口。这在某些方面简化了API，但是也限制了灵活性。第二，API大量使用了Collections类，简化了那些已经熟悉这些类的Java开发者的使用。 </p>
<p>　　JDOM文档声明其目的是&#8220;使用20%(或更少)的精力解决80%(或更多)Java/XML问题&#8221;(根据学习曲线假定为20%)。JDOM对于大多数Java/XML应用程序来说当然是有用的，并且大多数开发者发现API比DOM容易理解得多。JDOM还包括对程序行为的相当广泛检查以防止用户做任何在XML中无意义的事。然而，它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情况下的错误)。这也许是比学习DOM或JDOM接口都更有意义的工作。 </p>
<p>　　JDOM自身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档(尽管它还可以将以前构造的DOM表示作为输入)。它包含一些转换器以将JDOM表示输出成SAX2事件流、DOM模型或XML文本文档。JDOM是在Apache许可证变体下发布的开放源码。</p>
<p>4）DOM4J&nbsp;http://dom4j.sourceforge.net/&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 虽然DOM4J代表了完全独立的开发结果，但最初，它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能，包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项，它通过DOM4J API和标准DOM接口具有并行访问功能。从2000下半年开始，它就一直处于开发之中。 </p>
<p>　　为支持所有这些功能，DOM4J使用接口和抽象基本类方法。DOM4J大量使用了API中的Collections类，但是在许多情况下，它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是，虽然DOM4J付出了更复杂的API的代价，但是它提供了比JDOM大得多的灵活性。 </p>
<p>　　在添加灵活性、XPath集成和对大文档处理的目标时，DOM4J的目标与JDOM是一样的：针对Java开发者的易用性和直观操作。它还致力于成为比JDOM更完整的解决方案，实现在本质上处理所有Java/XML问题的目标。在完成该目标时，它比JDOM更少强调防止不正确的应用程序行为。 </p>
<p>　　DOM4J是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML，特别值得一提的是连Sun的JAXM也在用DOM4J。 <br />
</p>
<p>2.. 比较</p>
<p>1）DOM4J性能最好，连Sun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4J，例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性，那就采用DOM4J.</p>
<p>2）JDOM和DOM在性能测试时表现不佳，在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM。虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题，但是从性能观点来看，它确实没有值得推荐之处。另外，DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础，因为它正式获得W3C推荐(与基于非标准的Java模型相对)，所以在某些类型的项目中可能也需要它(如在JavaScript中使用DOM)。</p>
<p>3）SAX表现较好，这要依赖于它特定的解析方式－事件驱动。一个SAX检测即将到来的XML流，但并没有载入到内存(当然当XML流被读入时，会有部分文档暂时隐藏在内存中)。</p>
<p>3. 四种xml操作方式的基本使用方法</p>
<p>xml文件：</p>
<p>&lt;?xml version="1.0" encoding="utf-8" ?&gt; <br />
&lt;Result&gt;<br />
&nbsp;&nbsp; &lt;VALUE&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;NO DATE="2005"&gt;A1&lt;/NO&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ADDR&gt;GZ&lt;/ADDR&gt;<br />
&nbsp;&nbsp; &lt;/VALUE&gt;<br />
&nbsp;&nbsp; &lt;VALUE&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;NO DATE="2004"&gt;A2&lt;/NO&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ADDR&gt;XG&lt;/ADDR&gt;<br />
&nbsp; &lt;/VALUE&gt;<br />
&lt;/Result&gt;</p>
<p>1）DOM</p>
<p>import java.io.*;<br />
import java.util.*;<br />
import org.w3c.dom.*;<br />
import javax.xml.parsers.*; </p>
<p>public class MyXMLReader{ <br />
　public static void main(String arge[]){ </p>
<p>　　long lasting =System.currentTimeMillis(); <br />
　　try{&nbsp; <br />
　　　File f=new File("data_10k.xml"); <br />
　　　DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); <br />
　　　DocumentBuilder builder=factory.newDocumentBuilder(); <br />
　　　Document doc = builder.parse(f); <br />
　　　NodeList nl = doc.getElementsByTagName("VALUE"); <br />
　　　for (int i=0;i＜nl.getLength();i++){ <br />
　　　　System.out.print("车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue()); <br />
　　　　System.out.println("车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue()); <br />
　 　} <br />
　　}catch(Exception e){ <br />
　　　e.printStackTrace(); <br />
} </p>
<p>2）SAX</p>
<p>import org.xml.sax.*;<br />
import org.xml.sax.helpers.*;<br />
import javax.xml.parsers.*; </p>
<p>public class MyXMLReader extends DefaultHandler { </p>
<p>　java.util.Stack tags = new java.util.Stack(); <br />
　public MyXMLReader() { <br />
　　super();<br />
&nbsp;&nbsp; } </p>
<p>　public static void main(String args[]) { <br />
　　long lasting = System.currentTimeMillis(); <br />
　　try { <br />
　　　SAXParserFactory sf = SAXParserFactory.newInstance(); <br />
　　　SAXParser sp = sf.newSAXParser(); <br />
　　　MyXMLReader reader = new MyXMLReader(); <br />
　　　sp.parse(new InputSource("data_10k.xml"), reader); <br />
　　} catch (Exception e) { <br />
　　　e.printStackTrace(); <br />
　　} </p>
<p>　　System.out.println("运行时间：" + (System.currentTimeMillis() - lasting) + "毫秒");} <br />
　　public void characters(char ch[], int start, int length) throws SAXException { <br />
　　String tag = (String) tags.peek(); <br />
　　if (tag.equals("NO")) {&nbsp; <br />
　　　System.out.print("车牌号码：" + new String(ch, start, length));<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; if (tag.equals("ADDR")) { <br />
　　System.out.println("地址:" + new String(ch, start, length));<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; } </p>
<p>　　public void startElement(String uri,String localName,String qName,Attributes attrs) { <br />
　　tags.push(qName);}<br />
}&nbsp; </p>
<p>3） JDOM</p>
<p>import java.io.*;<br />
import java.util.*;<br />
import org.jdom.*;<br />
import org.jdom.input.*; </p>
<p>public class MyXMLReader { </p>
<p>　public static void main(String arge[]) { <br />
　　long lasting = System.currentTimeMillis(); <br />
　　try { <br />
　　　SAXBuilder builder = new SAXBuilder();&nbsp; <br />
　　　Document doc = builder.build(new File("data_10k.xml"));&nbsp; <br />
　　　Element foo = doc.getRootElement();&nbsp; <br />
　　　List allChildren = foo.getChildren();&nbsp; <br />
　　　for(int i=0;i＜allChildren.size();i++) {&nbsp; <br />
　　　　System.out.print("车牌号码:" + ((Element)allChildren.get(i)).getChild("NO").getText()); <br />
　　　　System.out.println("车主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText()); <br />
　　　} <br />
　　} catch (Exception e) { <br />
　　　e.printStackTrace(); <br />
} </p>
<p>}</p>
<p>4）DOM4J</p>
<p>import java.io.*;<br />
import java.util.*;<br />
import org.dom4j.*;<br />
import org.dom4j.io.*; </p>
<p>public class MyXMLReader { </p>
<p>　public static void main(String arge[]) { <br />
　　long lasting = System.currentTimeMillis(); <br />
　　try { <br />
　　　File f = new File("data_10k.xml"); <br />
　　　SAXReader reader = new SAXReader(); <br />
　　　Document doc = reader.read(f); <br />
　　　Element root = doc.getRootElement(); <br />
　　　Element foo; <br />
　　　for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) { <br />
　　　　foo = (Element) i.next(); <br />
　　　　System.out.print("车牌号码:" + foo.elementText("NO")); <br />
　　　　System.out.println("车主地址:" + foo.elementText("ADDR")); <br />
　　　} <br />
　　} catch (Exception e) { <br />
　　　e.printStackTrace(); <br />
&nbsp;&nbsp;&nbsp; } <br />
}</p>
</div>
<img src ="http://www.blogjava.net/xcp/aggbug/312617.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2010-02-12 17:44 <a href="http://www.blogjava.net/xcp/archive/2010/02/12/312617.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax-------IE和FIREFOX 脚本的一些区别</title><link>http://www.blogjava.net/xcp/archive/2009/03/03/ajax1.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Tue, 03 Mar 2009 14:28:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2009/03/03/ajax1.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/257665.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2009/03/03/ajax1.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/257665.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/257665.html</trackback:ping><description><![CDATA[<font face="verdana, arial, helvetica" size="2"><span class="javascript" id="text6696983" style="font-size: 12px">转：用AJAX开发 不可避免的要遇到浏览器不同，实现不同的问题，下面是AoiUmi的一些总结。<br />
<br />
1：innerText<br />
IE支持，FIREFOX不支持<br />
解决办法：用innerHTML,2种浏览器都识别innerHTML<br />
<br />
2：document.createElement<br />
document.appendChild<br />
在往表里插入行时<br />
FIREFOX支持，IE不支持<br />
解决办法：把行插入到TBODY中，不要直接插入到表<br />
<br />
3：setAttribute('style','color:red;')<br />
FIREFOX支持(除了IE，现在所有浏览器都支持)，IE不支持<br />
解决办法：不用setAttribute('style','color:red')<br />
而用object.style.cssText = 'color:red;'(这写法也有例外)<br />
最好的办法是上面种方法都用上，万无一失 ^_^<br />
4:class<br />
setAttribute('class','styleClass')<br />
FIREFOX支持，IE不支持(指定属性名为CLASS，IE不会设置元素的CLASS属性，相反只使用SETATTRIBUTE时IE自动识别CLASSNAME属性)<br />
解决办法：<br />
setAttribute('class','styleClass')<br />
setAttribute('className','styleClass')<br />
2种都用上<br />
<br />
5:用setAttribute设置事件<br />
var obj = document.getElementById('objId');<br />
obj.setAttribute('onclick','funcitonname();');<br />
FIREFOX支持，IE不支持<br />
解决办法：<br />
IE中必须用点记法来引用所需的事件处理程序,并且要用赋予匿名函数<br />
如下：<br />
var obj = document.getElementById('objId');<br />
obj.onclick=function(){fucntionname();};<br />
这种方法所有浏览器都支持<br />
<br />
6：建立单选钮<br />
IE以外的浏览器<br />
var rdo = document.createElement('input');<br />
rdo.setAttribute('type','radio');<br />
rdo.setAttribute('name','radiobtn');<br />
rdo.setAttribute('value','checked');<br />
<br />
IE:<br />
var rdo =document.createElement("&lt;input type='radio' name='radiobtn' value='checked'&gt;");<br />
解决办法：<br />
这一点区别和前面的都不一样。这次完全不同，所以找不到共同的办法来解决，那么只有IF-ELSE了<br />
万幸的是，IE可以识别出document的uniqueID属性，别的浏览器都不可以识别出这一属性。问题解决。<br />
<br />
0：共同的一些技巧<br />
在动态建立INPUT型输入元素时，一般是先加入，在设置TYPE。这就有可能出错<br />
<br />
好习惯：var btn = document.createElement('input');<br />
btn.setAttribut('type','button');<br />
document.getElementById('formId').appendChild(btn);</span></font>
<img src ="http://www.blogjava.net/xcp/aggbug/257665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2009-03-03 22:28 <a href="http://www.blogjava.net/xcp/archive/2009/03/03/ajax1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>针对JSON的基于java和js多种操作方法与格式转换方法 </title><link>http://www.blogjava.net/xcp/archive/2008/10/31/json.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Thu, 30 Oct 2008 16:25:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2008/10/31/json.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/237717.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2008/10/31/json.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/237717.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/237717.html</trackback:ping><description><![CDATA[<p>转自:http://blog.csdn.net/yethyeth/archive/2007/04/15/1565844.aspx 感谢作者!<br />
针对JSON的基于java和js多种操作与格式转换方法<br />
org.json包<br />
http://www.json.org/java/index.html <br />
&lt;!--[if !supportLists]--&gt;1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--[endif]--&gt;JSONObject，用一个HashMap来保存一个JSON对象的所有属性。<br />
&lt;!--[if !supportLists]--&gt;2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--[endif]--&gt;JSONArray用ArrayList来保存数据。JSON来自javascript，javascript中Array也是Object，不知这里是如何保存这种关系的。<br />
&lt;!--[if !supportLists]--&gt;3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--[endif]--&gt;一些跟字符串有关的类，以及异常类。<br />
&lt;!--[if !supportLists]--&gt;4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--[endif]--&gt;一些工具类，比如xml和json转换的类，将http头和cookies转换为json的类，<br />
&nbsp;<br />
&nbsp;<br />
基于org.json包的JSON-LIB：bean，map，collection，java array，xml与json间的转换。<br />
<strong>http://json-lib.sourceforge.net/ <br />
http://json-lib.sourceforge.net/usage.html<br />
</strong>&nbsp;<br />
Stringtree JSON:JSON与java对象间的转换<br />
http://www.stringtree.org/stringtree-json.html <br />
三个关键类：<br />
JSONReader.java <br />
JSONWriter.java <br />
JSONValidator.java <br />
JSONValidator用来检查JSON的有效性。<br />
JSONReader将一个正确形式的JSON字符串转换为一个java对象。<br />
JSONWriter将一个java对象转换为一个JSON字符串。<br />
&nbsp;<br />
XSLTJSON：用xslt将xml转换为json<br />
http://www.bramstein.nl/xsltjson/<br />
&nbsp;<br />
JSONT：基于js和自定义规则，转换JSON为任意其他格式<br />
<a href="http://goessner.net/articles/jsont/">http://goessner.net/articles/jsont/</a></p>
<img src ="http://www.blogjava.net/xcp/aggbug/237717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2008-10-31 00:25 <a href="http://www.blogjava.net/xcp/archive/2008/10/31/json.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dom使用指南</title><link>http://www.blogjava.net/xcp/archive/2008/10/03/dom.html</link><dc:creator>xcp</dc:creator><author>xcp</author><pubDate>Fri, 03 Oct 2008 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/xcp/archive/2008/10/03/dom.html</guid><wfw:comment>http://www.blogjava.net/xcp/comments/232213.html</wfw:comment><comments>http://www.blogjava.net/xcp/archive/2008/10/03/dom.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/xcp/comments/commentRss/232213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xcp/services/trackbacks/232213.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: dom使用指南：<br>主要用在javascript，ajax里面用到的dom操作&nbsp;&nbsp;<a href='http://www.blogjava.net/xcp/archive/2008/10/03/dom.html'>阅读全文</a><img src ="http://www.blogjava.net/xcp/aggbug/232213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xcp/" target="_blank">xcp</a> 2008-10-03 15:59 <a href="http://www.blogjava.net/xcp/archive/2008/10/03/dom.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>