﻿<?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>博客园-免费web打印控件-web打印控件-Java Web打印控件 WEB下载控件 WEB文件路径选择控件</title><link>http://www.cnblogs.com/interdrp/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 10 Feb 2010 00:20:24 GMT</lastBuildDate><pubDate>Wed, 10 Feb 2010 00:20:24 GMT</pubDate><ttl>60</ttl><item><title>使用JS+WebBrowser解决Web打印问题（完成事件）</title><link>http://www.cnblogs.com/interdrp/archive/2010/01/05/1639661.html</link><dc:creator>锐洋软件</dc:creator><author>锐洋软件</author><pubDate>Tue, 05 Jan 2010 07:02:00 GMT</pubDate><guid>http://www.cnblogs.com/interdrp/archive/2010/01/05/1639661.html</guid><description><![CDATA[<p>阅读: 217 评论: 0 作者: <a href="http://www.cnblogs.com/interdrp/" target="_blank">锐洋软件</a> 发表于 2010-01-05 15:02 <a href="http://www.cnblogs.com/interdrp/archive/2010/01/05/1639661.html" target="_blank">原文链接</a></p>我主要使用了IE内置的WebBrowser控件，无需用户下载和安装。WebBrowser有很多功能，除打印外的其他功能就不再赘述了，你所能用到的打印功能也几乎全部可以靠它完成，下面的问题就是如何使用它了。先说显示后打印，后面说后台打印。<br />1．首先引入一个WebBrowser在需要打印的页面，可以直接添加： <br />&nbsp;&nbsp;&nbsp;<br />&lt;object id="WebBrowser" classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height="0" width="0"&gt; <br />&lt;/object&gt; <br />到页面，或者使用JavaScript在需要的时候临时添加也可以：<br /><br />document.body.insertAdjacentHTML("beforeEnd",<br />&nbsp;&nbsp;&nbsp; "&lt;object id=\"WebBrowser\" width=0 height=0 \<br />classid=\"clsid:8856F961-340A-11D0-A96B-00C04FD705A2\"&gt;");<br />2 .页面设置和打印预览<br />如下所示，直接调用即可<br /><br />document.all.WebBrowser.ExecWB(6,6) 直接打印<br />document.all.WebBrowser.ExecWB(8,1) 页面设置<br />document.all.WebBrowser.ExecWB(7,1) 打印预览<br />或者：<br />execScript("document.all.WebBrowser.ExecWB 7, 1","VBScript"); <br />3 隐藏不打印的页面元素和分页<br />&nbsp;&nbsp;&nbsp; CSS 有个Media 属性，可以分开设置打印和显示的格式。<br />如 &lt;style media="print" type="text/css"&gt; &#8230;&lt;/style&gt; 中间的格式将只在打印时起作用，不会影响显示界面。<br />所以可以设定<br />&lt;style media="print" type="text/css"&gt; <br />.Noprint{display:none;} <br />.PageNext{page-break-after: always;} <br />&lt;/style&gt; <br />然后给不想打印的页面元素添加： class="Noprint" ，那就不会出现在打印和打印预览中了。<br />想分页的地方添加： &lt;div class="PageNext"&gt;&lt;/div&gt; 就可以了。<br /><br />4．打印页面的特定部分<br />我是通过将需要打印的特定部分另建一个页面，然后装入主页面的一个IFrame中，再调用IFrame的打印方法，只打印IFrame中的内容实现的。<br />如：<br />&lt;iframe style="visibility: visible" name="FrameId" width="100%" height="30%" src="NeedPrintedPage.asp"&gt;&lt;/iframe&gt;<br />下面的pringFrame js函数将只打印Iframe中的内容，可以直接引用使用,如printFrame(FrameId);<br /><br />window.print = printFrame;<br />// main stuff<br />function printFrame(frame, onfinish) {<br />&nbsp;&nbsp;&nbsp; if ( !frame ) frame = window;<br />&nbsp;&nbsp;&nbsp; function execOnFinish() {<br />&nbsp;&nbsp;&nbsp; switch ( typeof(onfinish) ) {<br />&nbsp;&nbsp;&nbsp; case "string": execScript(onfinish); break;<br />&nbsp;&nbsp;&nbsp; case "function": onfinish();<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; if ( focused &amp;&amp; !focused.disabled ) focused.focus();<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; if (( frame.document.readyState !== "complete") &amp;&amp;( !frame.document.confirm("The document to print is not downloaded yet! Continue with printing?") ))<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; execOnFinish();<br />&nbsp;&nbsp;&nbsp; return;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; var eventScope = printGetEventScope(frame);<br />&nbsp;&nbsp;&nbsp; var focused = document.activeElement;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; window.printHelper = function() {<br />&nbsp;&nbsp;&nbsp; execScript("on error resume next: printWB.ExecWB 6, 1", "VBScript");<br />&nbsp;&nbsp;&nbsp; printFireEvent(frame, eventScope, "onafterprint");<br />&nbsp;&nbsp;&nbsp; printWB.outerHTML = "";<br />&nbsp;&nbsp;&nbsp; execOnFinish();<br />&nbsp;&nbsp;&nbsp; window.printHelper = null;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; document.body.insertAdjacentHTML("beforeEnd",<br />&nbsp;&nbsp;&nbsp; "&lt;object id=\"printWB\" width=0 height=0 \<br />&nbsp;&nbsp;&nbsp; classid=\"clsid:8856F961-340A-11D0-A96B-00C04FD705A2\"&gt;");<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; printFireEvent(frame, eventScope, "onbeforeprint");<br />&nbsp;&nbsp;&nbsp; frame.focus();<br />&nbsp;&nbsp;&nbsp; window.printHelper = printHelper;<br />&nbsp;&nbsp;&nbsp; setTimeout("window.printHelper()", 0);<br />}<br /><br />// helpers<br />function printIsNativeSupport() {<br />&nbsp;&nbsp;&nbsp; var agent = window.navigator.userAgent;<br />&nbsp;&nbsp;&nbsp; var i = agent.indexOf("MSIE ")+5;<br />&nbsp;&nbsp;&nbsp; return parseInt(agent.substr(i)) &gt;= 5 &amp;&amp; agent.indexOf("5.0b1") &lt; 0;<br />}<br />function printFireEvent(frame, obj, name) {<br />&nbsp;&nbsp;&nbsp; var handler = obj[name];<br />&nbsp;&nbsp;&nbsp; switch ( typeof(handler) ) {<br />&nbsp;&nbsp;&nbsp; case "string": frame.execScript(handler); break;<br />&nbsp;&nbsp;&nbsp; case "function": handler();<br />&nbsp;&nbsp;&nbsp; }<br />}<br />function printGetEventScope(frame) {<br />&nbsp;&nbsp;&nbsp; var frameset = frame.document.all.tags("FRAMESET");<br />&nbsp;&nbsp;&nbsp; if ( frameset.length ) return frameset[0];<br />&nbsp;&nbsp;&nbsp; return frame.document.body;<br />}<br />Iframe中所装载页面的打印效果在所装载页面设置就可以了，如分页等。<br />5．后台打印<br />我是通过建一个隐藏Iframe实现的，当然仍然会有页面装载的过程。<br />下面的函数创建Iframe装载页面并打印。如 printHidden(url) //url为页面地址<br />function printHidden(url) {<br />&nbsp;&nbsp;&nbsp; document.body.insertAdjacentHTML("beforeEnd",<br />&nbsp;&nbsp;&nbsp; "&lt;iframe name=printHiddenFrame width=0 height=0&gt;&lt;/iframe&gt;");<br />&nbsp;&nbsp;&nbsp; var doc = printHiddenFrame.document;<br />&nbsp;&nbsp;&nbsp; doc.open();<br />&nbsp;&nbsp;&nbsp; doc.write("&lt;body onload=\"parent.onprintHiddenFrame()\"&gt;");<br />&nbsp;&nbsp;&nbsp; doc.write("&lt;iframe name=printMe width=0 height=0 src=\"" + <br />&nbsp;&nbsp;&nbsp; url + "\"&gt;&lt;/iframe&gt;");<br />&nbsp;&nbsp;&nbsp; doc.write("&lt;/body&gt;");<br />&nbsp;&nbsp;&nbsp; doc.close();<br />}<br />function onprintHiddenFrame() {<br />&nbsp;&nbsp;&nbsp; function onfinish() {<br />&nbsp;&nbsp;&nbsp; printHiddenFrame.outerHTML = "";<br />&nbsp;&nbsp;&nbsp; if ( window.onprintcomplete ) window.onprintcomplete();<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; printFrame(printHiddenFrame.printMe, onfinish);<br />}<br />它用到了printFrame，所以别忘了引用前面的函数。<br /><br />总之，WebBroswer已经为我们提供了解决方案，我们只要结合需求把它应用好就行了。<br /> <img src="http://www.cnblogs.com/interdrp/aggbug/1639661.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/interdrp/archive/2010/01/05/1639661.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/interdrp/archive/2010/01/05/1639661.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>[inno setup] 去除所有提示 ＝＝ 静默安装</title><link>http://www.cnblogs.com/interdrp/archive/2009/12/01/1614620.html</link><dc:creator>锐洋软件</dc:creator><author>锐洋软件</author><pubDate>Tue, 01 Dec 2009 07:34:00 GMT</pubDate><guid>http://www.cnblogs.com/interdrp/archive/2009/12/01/1614620.html</guid><description><![CDATA[<p>阅读: 74 评论: 0 作者: <a href="http://www.cnblogs.com/interdrp/" target="_blank">锐洋软件</a> 发表于 2009-12-01 15:34 <a href="http://www.cnblogs.com/interdrp/archive/2009/12/01/1614620.html" target="_blank">原文链接</a></p><p>[Setup]<br />AppName=ReYo DRP<br />AppVerName=ReYo DRP<br />AppPublisher=ReYo Inc<br />AppVersion=2009.1201.0.1518<br />DefaultDirName={pf}\ReYoWebPrint\<br />DefaultGroupName=ReYoWebPrint<br />OutputDir=E:\锐洋WEB打印控件\<br />OutputBaseFilename=setup<br />;压缩相关<br />Compression=lzma/max<br />SolidCompression=true<br />PrivilegesRequired=admin<br />;-------------------------------<br />CreateUninstallRegKey=true<br />Uninstallable=true<br />;--------------------------------------<br />WizardImageFile=InterDrpWizard.bmp<br />WizardSmallImageFile=InterDrpWizardsmall.bmp<br />VersionInfoVersion=2009.1201.0.1518<br />VersionInfoCompany=ReYo Software Setup<br />VersionInfoDescription=锐洋软件安装程序<br />InternalCompressLevel=ultra<br />EnableDirDoesntExistWarning=false<br />AllowRootDirectory=true<br />ShowLanguageDialog=yes<br />VersionInfoCopyright=版权所有 (C) 锐洋软件。保留所有权利。<br />AppPublisherURL=http://www.interdrp.com<br />AllowNoIcons=yes<br />UserInfoPage=True<br />SetupLogging=True<br />LanguageDetectionMethod=locale<br />WizardImageStretch=true</p>
<p>[Languages]<br />Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"</p>
<p>[Files]<br />Source: ReYoPrint.dll; DestDir: {sys}; Flags: restartreplace sharedfile regserver</p>
<p>[UninstallDelete]<br />Type: filesandordirs; Name: {app};</p>
<p>[Code]<br />//关键代码<br />procedure CurPageChanged(CurPageID: Integer);<br />begin<br />if CurPageID = wpWelcome then<br />WizardForm.NextButton.OnClick(WizardForm);<br />end;</p>
<p>function ShouldSkipPage(PageID: Integer): Boolean;<br />begin<br />result := true;<br />end;</p>
<p><br />&nbsp;</p><img src="http://www.cnblogs.com/interdrp/aggbug/1614620.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/interdrp/archive/2009/12/01/1614620.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/interdrp/archive/2009/12/01/1614620.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>一个ajax通用函数(xmlhttprequest封装)</title><link>http://www.cnblogs.com/interdrp/archive/2009/11/14/1603018.html</link><dc:creator>锐洋软件</dc:creator><author>锐洋软件</author><pubDate>Sat, 14 Nov 2009 06:59:00 GMT</pubDate><guid>http://www.cnblogs.com/interdrp/archive/2009/11/14/1603018.html</guid><description><![CDATA[<p>阅读: 83 评论: 0 作者: <a href="http://www.cnblogs.com/interdrp/" target="_blank">锐洋软件</a> 发表于 2009-11-14 14:59 <a href="http://www.cnblogs.com/interdrp/archive/2009/11/14/1603018.html" target="_blank">原文链接</a></p><p>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_145952" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_145952').style.display='none'; document.getElementById('Code_Open_Image_145952').style.display='inline'; document.getElementById('Code_Open_Text_145952').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_145952" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_145952').style.display='none'; getElementById('Code_Closed_Image_145952').style.display='inline'; getElementById('Code_Closed_Text_145952').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_145952">Code</span><span id="Code_Open_Text_145952" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;ajax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(options){<br />&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;options.type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">POST</span><span style="color: #000000">'</span><span style="color: #000000">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;options.url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">''</span><span style="color: #000000">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;options.timeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5000</span><span style="color: #000000">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onComplete&nbsp;&nbsp;:&nbsp;options.onComplete&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(){},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onError&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;options.onError&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(){},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess&nbsp;&nbsp;&nbsp;:&nbsp;options.onSuccess&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(){},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;options.data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">''</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">&nbsp;XMLHttpRequest&nbsp;</span><span style="color: #000000">===</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">undefined</span><span style="color: #000000">'</span><span style="color: #000000">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLHttpRequest&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActiveXObject(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;navigator.userAgent.indexOf(</span><span style="color: #000000">'</span><span style="color: #000000">MSIE&nbsp;5</span><span style="color: #000000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">Microsoft.XMLHTTP</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;:&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">Msxml2.XMLHTTP</span><span style="color: #000000">'</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;xml&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;XMLHttpRequest();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;xml.open(options.type,options.url,</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;timeoutLength&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;options.timeout;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;requestDone&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(</span><span style="color: #0000ff">function</span><span style="color: #000000">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requestDone&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;},timeoutLength);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;xml.onreadystatechange&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(xml.readyState&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">4</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">requestDone){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(httpSuccess(xml)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.onSuccess(httpData(xml,options.type));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.onError();<br />&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;options.onComplete();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xml&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;};<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;xml.send();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;httpSuccess&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(r){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">r.status&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;location.protocol&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">file:</span><span style="color: #000000">"</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;(r.status&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">200</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;r.status&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">300</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;r.status&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">304</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;navigator.userAgent.indexOf(</span><span style="color: #000000">'</span><span style="color: #000000">Safari</span><span style="color: #000000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">typeof</span><span style="color: #000000">&nbsp;r.status&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">undefined</span><span style="color: #000000">'</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">catch</span><span style="color: #000000">(e){}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;httpData&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(r,type){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;ct&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;r.getResponseHeader(</span><span style="color: #000000">"</span><span style="color: #000000">content-type</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;data&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">type&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;ct.indexOf(</span><span style="color: #000000">'</span><span style="color: #000000">xml</span><span style="color: #000000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;type&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">xml</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;data&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;r.responseXML&nbsp;:&nbsp;r.responseText;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(type&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">script</span><span style="color: #000000">'</span><span style="color: #000000">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eval.call(window,data);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;data;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;serialize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(a){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(a.constructor&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;Array){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;a.length&nbsp;;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.push(a[i].name&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;encodeURIComponent(a[i].value));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;j&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;a){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.push(j&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;encodeURIComponent(a[j]));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;s.join(</span><span style="color: #000000">'</span><span style="color: #000000">&amp;</span><span style="color: #000000">'</span><span style="color: #000000">);<br />}</span></span></div>
<p>&nbsp;</p><img src="http://www.cnblogs.com/interdrp/aggbug/1603018.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/interdrp/archive/2009/11/14/1603018.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/interdrp/archive/2009/11/14/1603018.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>不会提示是否关闭浏览器  IE6、IE7、FF通用代码</title><link>http://www.cnblogs.com/interdrp/archive/2009/10/26/1589944.html</link><dc:creator>锐洋软件</dc:creator><author>锐洋软件</author><pubDate>Mon, 26 Oct 2009 06:11:00 GMT</pubDate><guid>http://www.cnblogs.com/interdrp/archive/2009/10/26/1589944.html</guid><description><![CDATA[<p>阅读: 77 评论: 0 作者: <a href="http://www.cnblogs.com/interdrp/" target="_blank">锐洋软件</a> 发表于 2009-10-26 14:11 <a href="http://www.cnblogs.com/interdrp/archive/2009/10/26/1589944.html" target="_blank">原文链接</a></p><div id="blogDetailDiv" style="font-size: 16px">
<p>start = setInterval('CloseWin();', 2000);</p>
<p>&nbsp;</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function CloseWin() //这个不会提示是否关闭浏览器&nbsp; IE6、IE7、FF通用代码：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (document.readyState == "complete") {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clearInterval(start); //执行成功，清除监听<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.opener = null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //window.opener=top;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.open("", "_self");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.close();<br />&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; catch (err) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(err);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; </p></div><img src="http://www.cnblogs.com/interdrp/aggbug/1589944.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/interdrp/archive/2009/10/26/1589944.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/interdrp/archive/2009/10/26/1589944.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>proxool配置多数据库多连接池</title><link>http://www.cnblogs.com/interdrp/archive/2009/08/12/1544103.html</link><dc:creator>锐洋软件</dc:creator><author>锐洋软件</author><pubDate>Wed, 12 Aug 2009 00:09:00 GMT</pubDate><guid>http://www.cnblogs.com/interdrp/archive/2009/08/12/1544103.html</guid><description><![CDATA[<p>阅读: 147 评论: 0 作者: <a href="http://www.cnblogs.com/interdrp/" target="_blank">锐洋软件</a> 发表于 2009-08-12 08:09 <a href="http://www.cnblogs.com/interdrp/archive/2009/08/12/1544103.html" target="_blank">原文链接</a></p><p><strong><font color="#ff0000">1</font><font color="#ff0000">、配置环境</font></strong></p>
<p>从<a href="http://proxool.sourceforge.net/">http://proxool.sourceforge.net/</a>下载proxool，释放proxool.jar到WEB-INF/<span class="style1">lib</span></p>
<p><span class="style1"><strong><font color="#ff0000">2、Hibernate：</font></strong></span></p>
<p>　　<font color="#0000ff"><strong>&#9312;、在<span class="style1">hibernate.cfg.xml</span>中添加：</strong></font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="hibernate.connection.provider_class"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.hibernate.connection.ProxoolConnectionProvider<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="hibernate.proxool.pool_alias"&gt;Oracle&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="hibernate.proxool.xml"&gt;Proxool.xml&lt;/property&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--是否将运行期生成的SQL输出到日志以供调试--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="show_sql"&gt;false&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="dialect"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.hibernate.dialect.Oracle9Dialect<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br /><br />　　<font color="#0000ff"><strong>&#9313;、在与hibernate.cfg.xml同级目录（src根目录下）添加<span class="style1">proxool.xml</span>文件：</strong></font></p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!-- the proxool configuration can be embedded within your own application's.<br />Anything outside the "proxool" tag is ignored. --&gt;<br />&lt;something-else-entirely&gt;<br />&lt;proxool&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;alias&gt;<font color="#ff0000">Oracle</font>&lt;/alias&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--proxool只能管理由自己产生的连接--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-url&gt;jdbc:oracle:thin:@192.168.0.2:1521:test&lt;/driver-url&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-class&gt;oracle.jdbc.driver.OracleDriver&lt;/driver-class&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-properties&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user" value="test" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password" value="test" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/driver-properties&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 允许最大连接数,超过了这个连接，再有请求时，就排在队列中等候，最大的等待请求数由maximum-new-connections决定--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-connection-count&gt;1000&lt;/maximum-connection-count&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最小连接数--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;minimum-connection-count&gt;10&lt;/minimum-connection-count&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;house-keeping-test-sql&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select sysdate from YOUR_TABLE_NAME<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/house-keeping-test-sql&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;house-keeping-sleep-time&gt;90000&lt;/house-keeping-sleep-time&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-new-connections&gt;20&lt;/maximum-new-connections&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最少保持的空闲连接数--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prototype-count&gt;5&lt;/prototype-count&gt;</p>
<p>&lt;/proxool&gt;</p>
<p>&lt;proxool&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;alias&gt;<font color="#ff0000">MySQL</font>&lt;/alias&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--proxool只能管理由自己产生的连接--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-url&gt;jdbc:mysql://localhost:3306/test_bbs&lt;/driver-url&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-properties&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user" value="root" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password" value="test" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/driver-properties&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 允许最大连接数,超过了这个连接，再有请求时，就排在队列中等候，最大的<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 等待请求数由maximum-new-connections决定--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-connection-count&gt;1000&lt;/maximum-connection-count&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最小连接数--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;minimum-connection-count&gt;10&lt;/minimum-connection-count&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;house-keeping-test-sql&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select sysdate from YOUR_TABLE_NAME<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/house-keeping-test-sql&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 收,超时的销毁--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;house-keeping-sleep-time&gt;90000&lt;/house-keeping-sleep-time&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用户连接就不会被接受--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-new-connections&gt;20&lt;/maximum-new-connections&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最少保持的空闲连接数--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prototype-count&gt;5&lt;/prototype-count&gt;</p>
<p>&lt;/proxool&gt;<br />&lt;/something-else-entirely&gt;</p>
<p>　<strong>　　<font color="#0000ff">&#9314;、配置web.xml</font></strong> <br />在web.xml中增加： （这个相当于程序中使用JAXPConfigurator.configure("proxool.xml", false)。在Hibernate中不需要这一步） <br />&lt;!-- 配置初始化servlet,在web容器加载的时候自动加载配置文件，如果不是web程序，这个部分就需要通过开发接口来初始化了 --&gt; <br />&lt;servlet&gt; <br />&lt;servlet-name&gt;proxoolInitialServlet&lt;/servlet-name&gt; <br />&lt;servlet-class&gt;org.logicalcobwebs.proxool.configuration.ServletConfigurator&lt;/servlet-class&gt; <br />&lt;init-param&gt; <br />&lt;param-name&gt;xmlFile&lt;/param-name&gt; <br />&lt;param-value&gt;WEB-INF/Proxool.xml&lt;/param-value&gt; <br />&lt;/init-param&gt; <br />&lt;load-on-startup&gt;1&lt;/load-on-startup&gt; <br />&lt;/servlet&gt;</p>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#9315;&lt;!--配置<span class="style1">监控servlet</span>,其实如果不想监控的话，可以不配--&gt;</font></strong> <br />&lt;servlet&gt; <br />&lt;servlet-name&gt;Admin&lt;/servlet-name&gt; <br />&lt;servlet-class&gt;org.logicalcobwebs.proxool.admin.servlet.AdminServlet&lt;/servlet-class&gt; <br />&lt;/servlet&gt; <br />&lt;servlet-mapping&gt; <br />&lt;servlet-name&gt;Admin&lt;/servlet-name&gt; <br />&lt;url-pattern&gt;/admin&lt;/url-pattern&gt; <br />&lt;/servlet-mapping&gt;</p>
<p><strong>4、在程序中调用</strong></p>
<p>&#9312;、调用mysql<br />Connection conn = DriverManager.getConnection("proxool.MySQL");</p><img src="http://www.cnblogs.com/interdrp/aggbug/1544103.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/12/1544103.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/12/1544103.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>Js事件对象</title><link>http://www.cnblogs.com/interdrp/archive/2009/08/11/1543929.html</link><dc:creator>锐洋软件</dc:creator><author>锐洋软件</author><pubDate>Tue, 11 Aug 2009 13:16:00 GMT</pubDate><guid>http://www.cnblogs.com/interdrp/archive/2009/08/11/1543929.html</guid><description><![CDATA[<p>阅读: 81 评论: 0 作者: <a href="http://www.cnblogs.com/interdrp/" target="_blank">锐洋软件</a> 发表于 2009-08-11 21:16 <a href="http://www.cnblogs.com/interdrp/archive/2009/08/11/1543929.html" target="_blank">原文链接</a></p>event.srcElement.tagName<br />event.srcElement.type<br />捕获释放<br />event.srcElement.setCapture(); <br />event.srcElement.releaseCapture(); <br />事件按键<br />event.keyCode<br />event.shiftKey<br />event.altKey<br />event.ctrlKey<br />事件返回值<br />event.returnValue<br />鼠标位置<br />event.x<br />event.y<br />窗体活动元素<br />document.activeElement<br />绑定事件<br />document.captureEvents(Event.KEYDOWN);<br />访问窗体元素<br />document.all("txt").focus();<br />document.all("txt").select();<br />窗体命令<br />document.execCommand<br />窗体COOKIE<br />document.cookie<br />菜单事件<br />document.oncontextmenu<br />创建元素<br />document.createElement("SPAN"); <br />根据鼠标获得元素：<br />document.elementFromPoint(event.x,event.y).tagName=="TD<br />document.elementFromPoint(event.x,event.y).appendChild(ms) <br />窗体图片<br />document.images[索引]<br />窗体事件绑定<br />document.onmousedown=scrollwindow;<br />元素<br />document.窗体.elements[索引]<br />对象绑定事件<br />document.all.xxx.detachEvent('onclick',a);<br />插件数目<br />navigator.plugins<br />取变量类型<br />typeof($js_libpath) == "undefined"<br />下拉框<br />下拉框.options[索引]<br />下拉框.options.length<br />查找对象<br />document.getElementsByName("r1");<br />document.getElementById(id);<br />定时<br />timer=setInterval('scrollwindow()',delay);<br />clearInterval(timer);<br />UNCODE编码<br />escape() ,unescape<br />父对象<br />obj.parentElement(dhtml)<br />obj.parentNode(dom)<br />交换表的行<br />TableID.moveRow(2,1)<br />替换CSS<br />document.all.csss.href = "a.css";<br />并排显示<br />display:inline<br />隐藏焦点<br />hidefocus=true<br />根据宽度换行<br />style="word-break:break-all"<br />自动刷新<br />&lt;meta HTTP-EQUIV="refresh" CONTENT="8;URL=http://c98.yeah.net"&gt;<br />简单邮件<br />&lt;a href="<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#97;&#97;&#97;&#64;&#98;&#98;&#98;&#46;&#99;&#111;&#109;&#63;&#115;&#117;&#98;&#106;&#101;&#99;&#116;&#61;&#99;&#99;&#99;&#38;&#97;&#109;&#112;&#59;&#98;&#111;&#100;&#121;&#61;&#120;&#120;&#120;&#121;&#121;&#121;">mailto:aaa@bbb.com?subject=ccc&amp;body=xxxyyy</a>"&gt; <br />快速转到位置<br />obj.scrollIntoView(true)<br />锚<br />&lt;a name="first"&gt;<br />&lt;a href="#first"&gt;anchors&lt;/a&gt;<br />网页传递参数<br />location.search();<br />可编辑<br />obj.contenteditable=true<br />执行菜单命令<br />obj.execCommand<br />双字节字符<br />/[^\x00-\xff]/<br />汉字<br />/[\u4e00-\u9fa5]/<br />让英文字符串超出表格宽度自动换行<br />word-wrap: break-word; word-break: break-all;<br />透明背景<br />&lt;IFRAME src="1.htm" width=300 height=180 allowtransparency&gt;&lt;/iframe&gt;<br />获得style内容<br />obj.style.cssText<br />HTML标签<br />document.documentElement.innerHTML<br />第一个style标签<br />document.styleSheets[0]<br />style标签里的第一个样式<br />document.styleSheets[0].rules[0]<br />防止点击空链接时，页面往往重置到页首端。<br />&lt;a href="javascrīpt:function()"&gt;word&lt;/a&gt;<br />上一网页源<br />asp:<br />request.servervariables("HTTP_REFERER")<br />javascrīpt:<br />document.referrer<br />释放内存<br />CollectGarbage();<br />禁止右键<br />document.oncontextmenu = function() { return false;}<br />禁止保存<br />&lt;noscrīpt&gt;&lt;iframe src="*.htm"&gt;&lt;/iframe&gt;&lt;/noscrīpt&gt;<br />禁止选取&lt;body oncontextmenu="return false" ondragstart="return false" onselectstart ="return 
<p>false" onselect="document.selection.empty()" oncopy="document.selection.empty()"</p>
<p>onbeforecopy="return false"onmouseup="document.selection.empty()&gt; <br />禁止粘贴<br />&lt;input type=text ōnpaste="return false"&gt;<br />地址栏图标<br />&lt;link rel="Shortcut Icon" href="favicon.ico"&gt;<br />favicon.ico 名字最好不变16*16的16色,放虚拟目录根目录下<br />收藏栏图标<br />&lt;link rel="Bookmark" href="favicon.ico"&gt;<br />查看源码<br />&lt;input type=button value=查看网页源代码 ōnclick="window.location = 'view-source:'+</p>
<p>'http://www.csdn.net/'"&gt;<br />关闭输入法<br />&lt;input style="ime-mode:disabled"&gt;<br />自动全选<br />&lt;input type=text name=text1 value="123" ōnfocus="this.select()"&gt;<br />ENTER键可以让光标移到下一个输入框<br />&lt;input ōnkeydown="if(event.keyCode==13)event.keyCode=9"&gt;<br />文本框的默认值<br />&lt;input type=text value="123" ōnfocus="alert(this.defaultValue)"&gt;<br />title换行<br />obj.title = "123&amp;#13sdfs&amp;#32"<br />获得时间所代表的微秒<br />var n1 = new Date("2004-10-10".replace(/-/g, "\/")).getTime()<br />窗口是否关闭<br />win.closed<br />checkbox扁平<br />&lt;input type=checkbox style="position: absolute; clip:rect(5px 15px 15px 5px)"&gt;&lt;br&gt;<br />获取选中内容<br />document.selection.createRange().duplicate().text<br />自动完成功能<br />&lt;input type=text autocomplete=on&gt;打开该功能 <br />&lt;input type=text autocomplete=off&gt;关闭该功能&nbsp;&nbsp; <br />窗口最大化<br />&lt;body ōnload="window.resizeTo(window.screen.width - 4,window.screen.height-50);window.moveTo</p>
<p>(-4,-4)"&gt;<br />无关闭按钮IE<br />window.open("aa.htm", "meizz", "fullscreen=7");<br />统一编码/解码<br />alert(decodeURIComponent(encodeURIComponent("http://你好.com?as= hehe")))<br />encodeURIComponent对":"、"/"、";" 和 "?"也编码<br />表格行指示<br />&lt;tr ōnmouseover="this.bgColor='#f0f0f0'" ōnmouseout="this.bgColor='#ffffff'"&gt;</p><br /><img src="http://www.cnblogs.com/interdrp/aggbug/1543929.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/11/1543929.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/11/1543929.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>js 动态新增改变删除select的值</title><link>http://www.cnblogs.com/interdrp/archive/2009/08/11/1543927.html</link><dc:creator>锐洋软件</dc:creator><author>锐洋软件</author><pubDate>Tue, 11 Aug 2009 13:11:00 GMT</pubDate><guid>http://www.cnblogs.com/interdrp/archive/2009/08/11/1543927.html</guid><description><![CDATA[<p>阅读: 296 评论: 0 作者: <a href="http://www.cnblogs.com/interdrp/" target="_blank">锐洋软件</a> 发表于 2009-08-11 21:11 <a href="http://www.cnblogs.com/interdrp/archive/2009/08/11/1543927.html" target="_blank">原文链接</a></p><p>document.getElementById("louyuming").options[0].selected=true;</p>
<p>function jsSelectIsExitItem(objSelect, objItemValue) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; var isExit = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; objSelect.options.length; i++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (objSelect.options[i].value == objItemValue) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isExit = true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&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; <br />&nbsp;&nbsp;&nbsp;&nbsp; return isExit;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>Javascript 操作select是表单中常见的一种，今天删除多个select值的时候出现了问题，搞了半天原来是索引引起的（即删除的时候要从索引大的开始删，</p>
<p>然后再删除索引小的，否则删除了索引小的后索引大的索引就变化了，再删除时就会出现问题－－问题的关键是for循环是要从大到小，而不是常规的从0到</p>
<p>length）</p>
<p>// 4.删除select中选中的项&nbsp;&nbsp;&nbsp; <br />function jsRemoveSelectedItemFromSelect(objSelect) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; var length = objSelect.options.length - 1;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; for(var i = length; i &gt;= 0; i--){&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(objSelect[i].selected == true){&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objSelect.options[i] = null;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>1判断select选项中 是否存在Value="paraValue"的Item <br />2向select选项中 加入一个Item <br />3从select选项中 删除一个Item <br />4删除select中选中的项 <br />5修改select选项中 value="paraValue"的text为"paraText" <br />6设置select中text="paraText"的第一个Item为选中 <br />7设置select中value="paraValue"的Item为选中 <br />8得到select的当前选中项的value <br />9得到select的当前选中项的text <br />10得到select的当前选中项的Index <br />11清空select的项</p>
<p>======================================================================</p>
<p>动态删除select中的所有options： <br />function deleteAllOptions(sel){ <br />sel.options.length=0; <br />} <br />动态删除select中的某一项option： <br />function deleteOption(sel,indx){ <br />sel.options.remove(indx); <br />} <br />动态添加select中的项option: <br />function addOption(sel,text,value){ <br />sel.options.add(new Option(text,value)); <br />} <br />上面在IE和FireFox都能测试成功，希望以后可以用上。</p>
<p>js 代码<br />// 1.判断select选项中 是否存在Value="paraValue"的Item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />function jsSelectIsExitItem(objSelect, objItemValue) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; var isExit = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; objSelect.options.length; i++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (objSelect.options[i].value == objItemValue) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isExit = true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&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; <br />&nbsp;&nbsp;&nbsp;&nbsp; return isExit;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; <br />// 2.向select选项中 加入一个Item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />function jsAddItemToSelect(objSelect, objItemText, objItemValue) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; //判断是否存在&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; if (jsSelectIsExitItem(objSelect, objItemValue)) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("该Item的Value值已经存在");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var varItem = new Option(objItemText, objItemValue);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objSelect.options.add(varItem);&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("成功加入");&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; <br />// 3.从select选项中 删除一个Item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />function jsRemoveItemFromSelect(objSelect, objItemValue) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; //判断是否存在&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; if (jsSelectIsExitItem(objSelect, objItemValue)) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; objSelect.options.length; i++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (objSelect.options[i].value == objItemValue) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objSelect.options.remove(i);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&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; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("成功删除");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("该select中 不存在该项");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; <br />&nbsp;&nbsp; <br />// 4.删除select中选中的项&nbsp;&nbsp;&nbsp; <br />function jsRemoveSelectedItemFromSelect(objSelect) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; var length = objSelect.options.length - 1;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; for(var i = length; i &gt;= 0; i--){&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(objSelect[i].selected == true){&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objSelect.options[i] = null;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; <br />// 5.修改select选项中 value="paraValue"的text为"paraText"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />function jsUpdateItemToSelect(objSelect, objItemText, objItemValue) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; //判断是否存在&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; if (jsSelectIsExitItem(objSelect, objItemValue)) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; objSelect.options.length; i++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (objSelect.options[i].value == objItemValue) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objSelect.options[i].text = objItemText;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&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; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("成功修改");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("该select中 不存在该项");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; <br />// 6.设置select中text="paraText"的第一个Item为选中&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />function jsSelectItemByValue(objSelect, objItemText) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; //判断是否存在&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; var isExit = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; objSelect.options.length; i++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (objSelect.options[i].text == objItemText) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objSelect.options[i].selected = true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isExit = true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&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; <br />&nbsp;&nbsp;&nbsp;&nbsp; //Show出结果&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; if (isExit) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("成功选中");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("该select中 不存在该项");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; <br />// 7.设置select中value="paraValue"的Item为选中&nbsp;&nbsp;&nbsp; <br />objSelect.value = objItemValue;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />// 8.得到select的当前选中项的value&nbsp;&nbsp;&nbsp; <br />var currSelectValue = objSelect.value;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />// 9.得到select的当前选中项的text&nbsp;&nbsp;&nbsp; <br />var currSelectText = objSelect.options[document.all.objSelect.selectedIndex].text;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />// 10.得到select的当前选中项的Index&nbsp;&nbsp;&nbsp; <br />var currSelectIndex = objSelect.selectedIndex;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />// 11.清空select的项&nbsp;&nbsp;&nbsp; <br />objSelect.options.length = 0;&nbsp;&nbsp;</p>
<p>整个实例的完整代码如下：</p>
<p>&lt;!doctype html public "-//w3c//dtd html 4.0 transitional//en"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;javascript select options text value&lt;/title&gt;<br />&lt;meta name="keywords" content="javascript select options text value add modify delete set"&gt;<br />&lt;meta name="description" content="javascript select options text value add modify delete set"&gt;<br />&lt;script language="javascript"&gt;<br />&lt;!--<br />// Author: <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#105;&#64;&#108;&#120;&#108;&#46;&#99;&#110;">i@lxl.cn</a><br />// Modify: <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#105;&#64;&#99;&#110;&#108;&#101;&#105;&#46;&#99;&#111;&#109;">i@cnlei.com</a><br />function watch_ini(){ // 初始<br />for(var i=0; i&lt;arguments.length; i++){<br />&nbsp;&nbsp; var oOption=new Option(arguments[i],arguments[i]);<br />&nbsp;&nbsp; document.getElementById("MySelect")[i]=oOption;<br />}<br />}<br />function watch_add(f){ // 增加<br />&nbsp;&nbsp; var oOption=new Option(f.word.value,f.word.value);<br />&nbsp;&nbsp; f.keywords[f.keywords.length]=oOption;<br />}<br />function watch_sel(f){ // 编辑<br />f.word.value = f.keywords[f.keywords.selectedIndex].text;<br />}<br />function watch_mod(f){ // 修改<br />f.keywords[f.keywords.selectedIndex].text = f.word.value;<br />}<br />function watch_del(f){ // 删除<br />f.keywords.remove(f.keywords.selectedIndex);<br />}<br />function watch_set(f){ // 保存<br />var set = "";<br />for(var i=0; i&lt;f.keywords.length; i++){<br />set += f.keywords[i].text + ";";<br />}<br />confirm(set);<br />}<br />//--&gt;<br />&lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form name="watch" method="post" action=""&gt;<br />&lt;select id="MySelect" name="keywords" size="10" onchange="watch_sel(this.form)"&gt;&lt;/select&gt;&lt;br&gt;<br />&lt;script language="javascript"&gt;<br />&lt;!--<br />watch_ini("我","你","妳","他","她","它","尔"); // 初始关键词<br />//--&gt;<br />&lt;/script&gt;<br />&lt;input type="text" name="word" /&gt;&lt;br /&gt;<br />&lt;input type="button" value="增加" onclick="watch_add(this.form);" /&gt;<br />&lt;input type="button" value="修改" onclick="watch_mod(this.form);" /&gt;<br />&lt;input type="button" value="删除" onclick="watch_del(this.form);" /&gt;<br />&lt;input type="button" value="保存" onclick="watch_set(this.form);" /&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p><img src="http://www.cnblogs.com/interdrp/aggbug/1543927.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/11/1543927.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/11/1543927.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>对PreparedStatement、Statement的一点总结</title><link>http://www.cnblogs.com/interdrp/archive/2009/08/11/1543453.html</link><dc:creator>锐洋软件</dc:creator><author>锐洋软件</author><pubDate>Tue, 11 Aug 2009 02:43:00 GMT</pubDate><guid>http://www.cnblogs.com/interdrp/archive/2009/08/11/1543453.html</guid><description><![CDATA[<p>阅读: 63 评论: 0 作者: <a href="http://www.cnblogs.com/interdrp/" target="_blank">锐洋软件</a> 发表于 2009-08-11 10:43 <a href="http://www.cnblogs.com/interdrp/archive/2009/08/11/1543453.html" target="_blank">原文链接</a></p>网上有很多文章讨论PrepardStatement与Statement的区别，不过要完完全全的作出比较难度很大，因为每个数据库对底层的实现及应用场合不一样，Oracle对PrepardStatement的支持最好，Mysql对PrepardStatement支持最差。Statement执行单个sql语句速度较快而PrepardStatement执行批处理的效率较高。 
<p>&nbsp;</p>
<p><span style="font-size: small">以Oracle为例</span></p>
<p><span style="font-size: small">&nbsp;<br />1、Statement为每一条Sql语句生成执行计划， 如果要执行两条sql语句 <br />select colume from table where colume=1; <br />select colume from table where colume=2; <br />会生成两个执行计划，一千个查询就生成一千个执行计划。而生成计划是非常消耗资源的<br /></span></p>
<p><span style="font-size: small">2、PreparedStatement用于使用绑定变量重用执行计划 <br />select * from xxx.sometable t&nbsp;where t.id=?; <br />通过set方法给sql语句按占位符"?"先后顺序赋值，只需要生成一个执行计划，可以重复使用。<br /></span></p>
<p><span style="font-size: small">&nbsp;&nbsp; 当处理批量SQL语句时，这个时候就可以体现PrepareStatement的优势，由于采用Cache机制，则预先编译的语句，就会放在Cache中，下次执行相同SQL语句时，则可以直接从Cache中取出来,效率要比statement高好几倍</span></p>
<p>&nbsp;</p>
<p><span style="font-size: small">PrepardStatement的优点</span></p>
<p><span style="font-size: small">&lt;1&gt;、用PrepardStatement写成的sql语句，容易阅读，维护方便。</span></p>
<p><span style="font-size: small">&lt;2&gt;、批处理效率高，执行速度快。</span></p>
<p><span style="font-size: small">&lt;3&gt;、安全，可以防止sql注入攻击。</span></p>
<p>&nbsp;</p>
<p><span style="font-size: small">缺点:当执行批处理时，你无法得知这个批处理总共影响了多少行。</span></p><img src="http://www.cnblogs.com/interdrp/aggbug/1543453.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/11/1543453.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/11/1543453.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>hibernate+proxool的数据库连接池配置方法</title><link>http://www.cnblogs.com/interdrp/archive/2009/08/09/1542392.html</link><dc:creator>锐洋软件</dc:creator><author>锐洋软件</author><pubDate>Sun, 09 Aug 2009 12:25:00 GMT</pubDate><guid>http://www.cnblogs.com/interdrp/archive/2009/08/09/1542392.html</guid><description><![CDATA[<p>阅读: 46 评论: 0 作者: <a href="http://www.cnblogs.com/interdrp/" target="_blank">锐洋软件</a> 发表于 2009-08-09 20:25 <a href="http://www.cnblogs.com/interdrp/archive/2009/08/09/1542392.html" target="_blank">原文链接</a></p><li>下面我介绍一下在使用Hibernate&nbsp;3.0做数据执久层解决方案时，怎么配置Proxool&nbsp;0.8.3数据库连接池的方法。&nbsp;&nbsp;</li><li>1、将proxool-0.8.3.jar以及连接数据库用到的jar文件包含在你的项目的classpath或者WEB-INF/lib下面，本例使用的是MS&nbsp;Sqlserver数据库。&nbsp;&nbsp;</li><li>2、在和hibernate.cfg.xml平级的目录新建一个proxoolconf.xml文件，添加以下文件内容：&nbsp;&nbsp;</li><li>&lt;?xml&nbsp;version="1.0"&nbsp;encoding="utf-8"?&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;something-else-entirely&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;proxool&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;alias&gt;proxoolPool&lt;/alias&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;!--proxool只能管理由自己产生的连接--&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;driver-url&gt;jdbc:microsoft:sqlserver://192.168.0.5:1433;DatabaseName=videopublish&lt;/driver-url&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;driver-class&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/driver-class&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;driver-properties&gt;&nbsp;&nbsp;</li><li>&lt;property&nbsp;name="user"&nbsp;value="jdbc_user"/&gt;&nbsp;&nbsp;</li><li>&lt;property&nbsp;name="password"&nbsp;value="memory"/&gt;&nbsp;&nbsp;</li><li>&lt;/driver-properties&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;!--&nbsp;proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁--&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;house-keeping-sleep-time&gt;90000&lt;/house-keeping-sleep-time&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;!--&nbsp;指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;maximum-new-connections&gt;20&lt;/maximum-new-connections&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;!--&nbsp;最少保持的空闲连接数--&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;prototype-count&gt;5&lt;/prototype-count&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;!--&nbsp;允许最大连接数,超过了这个连接，再有请求时，就排在队列中等候，最大的等待请求数由maximum-new-connections决定--&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;maximum-connection-count&gt;100&lt;/maximum-connection-count&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;!--&nbsp;最小连接数--&gt;&nbsp;&nbsp;&nbsp;</li><li>&lt;minimum-connection-count&gt;10&lt;/minimum-connection-count&gt;&nbsp;&nbsp;</li><li>&lt;/proxool&gt;&nbsp;&nbsp;</li><li>&lt;/something-else-entirely&gt;&nbsp;&nbsp;</li><li>3、以上就是proxool所需的配置文件，下面就是hibernate.cfg.xml文件的配置了，也很简单，文件内容如下：&nbsp;&nbsp;</li><li>&lt;?xml&nbsp;version='1.0'&nbsp;encoding='UTF-8'?&gt;&nbsp;&nbsp;</li><li>&lt;!DOCTYPE&nbsp;hibernate-configuration&nbsp;PUBLIC&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"-//Hibernate/Hibernate&nbsp;Configuration&nbsp;DTD&nbsp;3.0//EN"&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&lt;hibernate-configuration&gt;&nbsp;&nbsp;</li><li>&lt;session-factory&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="proxool.pool_alias"&gt;proxoolPool&lt;/property&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="proxool.xml"&gt;proxoolconf.xml&lt;/property&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="connection.provider_class"&gt;org.hibernate.connection.ProxoolConnectionProvider&lt;/property&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="connection.driver_class"&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&lt;/property&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="show_sql"&gt;true&lt;/property&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mapping&nbsp;resource="com/vp/persistent/pojo/Users.hbm.xml"&nbsp;/&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mapping&nbsp;resource="com/vp/persistent/pojo/Videoclasses.hbm.xml"&nbsp;/&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mapping&nbsp;resource="com/vp/persistent/pojo/Videodiscuss.hbm.xml"&nbsp;/&gt;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;mapping&nbsp;resource="com/vp/persistent/pojo/Videoinfo.hbm.xml"&nbsp;/&gt;&nbsp;&nbsp;</li><li>&lt;/session-factory&gt;&nbsp;&nbsp;</li><li>&lt;/hibernate-configuration&gt;&nbsp;&nbsp;</li><li>4、以上就是配置hibernate+proxool作为数据库连接池的解决方案的代码，本例提供了一个简单的测试代码，如下：&nbsp;&nbsp;</li><li>&lt;%&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;r=0;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;i&lt;10000;i++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;o=new&nbsp;Date().getTime();&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;s=HSF.currentSession();&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Users&nbsp;u=new&nbsp;Users();&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u.setUsername("zhanglili");&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u.setUseremail("baidongli@gmail.com");&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u.setUsernickname("白冬立");&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u.setUserpassword("1234567980123456789");&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u.setUsersex("男");&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u.setUsersigndate(new&nbsp;Date());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transaction&nbsp;tt=s.beginTransaction();&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.save(u);&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tt.commit();&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Users&nbsp;user=(Users)s.get(Users.class,new&nbsp;Integer(1));&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//out.println(user.getUsername());&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;n=new&nbsp;Date().getTime();&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r+=n-o;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(Exception&nbsp;e){&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(e.getMessage());&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}finally{&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HSF.closeSession();&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;out.println("avg="+r/10);&nbsp;&nbsp;</li><li>%&gt;&nbsp;&nbsp;</li><li>5、说明一下，我分别用proxool、tomcat&nbsp;JNDI、Hibernate自带的连接池进行配置之后分别执行以上的10000条数据插入和读取，结果显示proxool的性能要优于tomcat&nbsp;JNDI，而Hibernate自带的就更不用提了，差很远。依次为：39265毫秒/10000条、26013毫秒/10000条、50029毫秒/10000条。&nbsp;&nbsp;</li><li>6、在Hibernate配置连接池时还有一些解决方案，用的比较多的例如：c3p0,apache&nbsp;dhcp，但网上许多评论显示c3p0在大负荷的负载情况下，性能会降低许多，apache&nbsp;dhcp因为Hibernate作者在测试时发现了性能Bug，所以在Hibernate3.0版本中已经去掉了对其的支持，相比之下，proxool是大家都推荐使用的，许多业界成熟的公司(例如三星)都采用proxool做为方案。&nbsp;&nbsp; </li><img src="http://www.cnblogs.com/interdrp/aggbug/1542392.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/09/1542392.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/09/1542392.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>Proxool连接池的简单配置</title><link>http://www.cnblogs.com/interdrp/archive/2009/08/09/1542381.html</link><dc:creator>锐洋软件</dc:creator><author>锐洋软件</author><pubDate>Sun, 09 Aug 2009 12:10:00 GMT</pubDate><guid>http://www.cnblogs.com/interdrp/archive/2009/08/09/1542381.html</guid><description><![CDATA[<p>阅读: 232 评论: 0 作者: <a href="http://www.cnblogs.com/interdrp/" target="_blank">锐洋软件</a> 发表于 2009-08-09 20:10 <a href="http://www.cnblogs.com/interdrp/archive/2009/08/09/1542381.html" target="_blank">原文链接</a></p><p>官方网址：http://proxool.sourceforge.net/&nbsp;&nbsp;&nbsp;&nbsp; 当前版本：proxool-0.9.0RC2<br />1、下载proxool 地址：http://proxool.sourceforge.net<br />2、解压缩proxool-0.9.0RC2.zip，拷贝lib/proxool-0.9.0RC2.jar到web-info/lib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 拷贝jdbc驱动到web-info/lib<br />3、在web-info下建立文件：proxool.xml<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;something-else-entirely&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;proxool&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--连接池的别名--&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;alias&gt;DBPool&lt;/alias&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--proxool只能管理由自己产生的连接--&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-url&gt;jdbc:oracle:thin:@127.0.0.1:1521:ora&lt;/driver-url&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--JDBC驱动程序--&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-class&gt;oracle.jdbc.driver.OracleDriver&lt;/driver-class&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-properties&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user" value="sys"/&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password" value="sys"/&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/driver-properties&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁--&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;house-keeping-sleep-time&gt;90000&lt;/house-keeping-sleep-time&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-new-connections&gt;150&lt;/maximum-new-connections&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最少保持的空闲连接数--&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prototype-count&gt;3&lt;/prototype-count&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 允许最大连接数,超过了这个连接，再有请求时，就排在队列中等候，最大的等待请求数由maximum-new-connections决定--&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-connection-count&gt;100&lt;/maximum-connection-count&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最小连接数--&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;minimum-connection-count&gt;3&lt;/minimum-connection-count&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;/proxool&gt;&nbsp;&nbsp; <br />&lt;/something-else-entirely&gt;&nbsp; </p>
<p>4、在web.xml里新增如下：<br />&lt;!--加载proxool配置信息--&gt;<br />&lt;servlet&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;proxoolServletConfigurator&lt;/servlet-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.logicalcobwebs.proxool.configuration.ServletConfigurator&lt;/servlet-class&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;xmlFile&lt;/param-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;WEB-INF/config/proxool.xml&lt;/param-value&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<br />&lt;!-- proxool提供的管理监控工具，可查看当前数据库连接情况。如果运行不成功，请删除本行 --&gt;<br />&lt;servlet&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.logicalcobwebs.proxool.admin.servlet.AdminServlet&lt;/servlet-class&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<br />&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/admin&lt;/url-pattern&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;<br /><br />5、在调用数据库连接代码：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection conn = DriverManager.getConnection("proxool.Develop");&nbsp;<br />6、利用proxool监控工具查看数据库运行状态。地址：./admin<br /><br /><strong><font color="#ff0000">以上配置是采用的XML文件方式，也可以采用properties配置方式：<br /></font></strong><br />proxool.alias=Test<br />proxool.driver-class=oracle.jdbc.driver.OracleDriver<br />proxool.driver-url=jdbc:oracle:thin:@192.168.10.160:1521:orcl<br />proxool.user=test<br />proxool.password=testpass<br />proxool.maximum-connection-count=20<br />proxool.prototype-count=4<br />proxool.house-keeping-test-sql=select sysdate from DUAL<br />proxool.verbose=true<br />proxool.statistics=10s,1m,1d<br />proxool.statistics-log-level=ERROR<br /><br /><br />&lt;servlet&gt; <br />&lt;servlet-name&gt;ServletConfigurator&lt;/servlet-name&gt; <br />&lt;servlet-class&gt;org.logicalcobwebs.proxool.configuration.ServletConfigurator&lt;/servlet-class&gt; <br /><br />&lt;init-param&gt; <br />&nbsp;&nbsp;&nbsp; &lt;param-name&gt;propertyFile&lt;/param-name&gt; <br />&nbsp;&nbsp;&nbsp; &lt;param-value&gt;WEB-INF/config/Proxool.properties&lt;/param-value&gt; <br />&lt;/init-param&gt; <br />&lt;load-on-startup&gt;1&lt;/load-on-startup&gt; <br />&lt;/servlet&gt; <br /><br /><br />在调用数据库连接代码<br />&nbsp;&nbsp;&nbsp; Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");<br />&nbsp;&nbsp;&nbsp; Connection conn = DriverManager.getConnection("proxool.Test");<br /><br /><br />还有一些配置属性：<br />maximum-connection-lifetime&nbsp;&nbsp;&nbsp; 最大连接生命周期 默认值：4小时<br />maximum-active-time：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最大活动时间&nbsp;&nbsp;&nbsp; 默认值：5分钟<br />maximum-connection-count&nbsp;&nbsp;&nbsp; 最大连接数&nbsp;&nbsp;&nbsp;&nbsp; 默认值：15个<br />minimum-connection-count&nbsp;&nbsp;&nbsp; 最小连接数&nbsp;&nbsp;&nbsp;&nbsp; 默认值：5个<br /><br />在用admin调用的时候，可以查看这个WEB应用所有的连接数的状态，虽然这个插件可以把不活动的连接自动放到连接池里，但是如果连接数过多，而不及时KILL的话，对网站的连接是有很大的影响的，建议还是手工KILL。<br /><br />在web-info下建立文件：proxool.xml<br />文件内容如下：<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;something-else-entirely&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;proxool&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--连接池的别名--&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;alias&gt;DBPool&lt;/alias&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--proxool只能管理由自己产生的连接--&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-url&gt;jdbc:oracle:thin:@127.0.0.1:1521:ora&lt;/driver-url&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--JDBC驱动程序--&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-class&gt;oracle.jdbc.driver.OracleDriver&lt;/driver-class&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-properties&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user" value="sys"/&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password" value="sys"/&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/driver-properties&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁--&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;house-keeping-sleep-time&gt;90000&lt;/house-keeping-sleep-time&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-new-connections&gt;150&lt;/maximum-new-connections&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最少保持的空闲连接数--&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prototype-count&gt;3&lt;/prototype-count&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 允许最大连接数,超过了这个连接，再有请求时，就排在队列中等候，最大的等待请求数由maximum-new-connections决定--&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-connection-count&gt;100&lt;/maximum-connection-count&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最小连接数--&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;minimum-connection-count&gt;3&lt;/minimum-connection-count&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;/proxool&gt;&nbsp;&nbsp; <br />&lt;/something-else-entirely&gt;&nbsp; <br />4、在web.xml文件内加入以下内容：<br /><br />&lt;servlet&gt;<br />&lt;servlet-name&gt;proxoolServletConfigurator&lt;/servlet-name&gt;<br />&lt;servlet-class&gt;org.logicalcobwebs.proxool.configuration.ServletConfigurator&lt;/servlet-class&gt;<br />&lt;init-param&gt;<br />&lt;param-name&gt;xmlFile&lt;/param-name&gt;<br />&lt;param-value&gt;WEB-INF/proxool.xml&lt;/param-value&gt;<br />&lt;/init-param&gt;<br />&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />&lt;/servlet&gt;<br />&lt;!-- proxool提供的管理监控工具，可查看当前数据库连接情况。如果运行不成功，请删除本行 --&gt;<br />&lt;servlet&gt;<br />&lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br />&lt;servlet-class&gt;org.logicalcobwebs.proxool.admin.servlet.AdminServlet&lt;/servlet-class&gt;<br />&lt;/servlet&gt;<br />&lt;servlet-mapping&gt;<br />&lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br />&lt;url-pattern&gt;/admin&lt;/url-pattern&gt;<br />&lt;/servlet-mapping&gt;<br /><br />5、在调用数据库连接代码：<br />&nbsp;&nbsp;&nbsp; Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");<br />&nbsp;&nbsp;&nbsp; Connection conn = DriverManager.getConnection("proxool.Develop");<br /><br />6、利用proxool监控工具查看数据库运行状态。地址：./admin</p>
<p>&nbsp;</p>
<p><strong><font color="#ff0000">在Spring框架中使用Proxool数据源BEAN</font></strong></p>
<p>方法一、使用Proxool的数据源BEAN。在spring的BEAN配置文件中增加配置代码，如下：</p>
<p>&lt;bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"&gt;<br />&nbsp;&nbsp;&lt;property name="driver"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;value&gt;oracle.jdbc.driver.OracleDriver&lt;/value&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="driverUrl"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;value&gt;jdbc:oracle:thin:@127.0.0.1:1521:ORA&lt;/value&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="user"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;value&gt;sys&lt;/value&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="password"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;value&gt;sys&lt;/value&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="alias"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;value&gt;DB&lt;/value&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="prototypeCount"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;value&gt;1&lt;/value&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="maximumConnectionCount"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;value&gt;10&lt;/value&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="minimumConnectionCount"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;value&gt;1&lt;/value&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="trace"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;value&gt;true&lt;/value&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&nbsp;&lt;property name="verbose"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;value&gt;true&lt;/value&gt;<br />&nbsp;&nbsp;&lt;/property&gt;<br />&nbsp;&lt;/bean&gt;</p>
<p>&nbsp;以上参数与在proxool中配置的基本相同，这里不在做解释。</p>
<p>&nbsp;</p>
<p>方法二、结合Spring的org.springframework.jdbc.datasource.DriverManagerDataSource类来使用，配置如下：</p>
<p>1、先在WEB-INF目录下建立proxool.xml文件。参考上面的proxool.xml及web.xml配置。</p>
<p>2、在Spring的bean配置文件中配置以下代码：</p>
<p>&lt;bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource" singleton="true"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="url" value="proxool.DBPool"/&gt;&lt;!--使用此种方式必须比SPRING框架先加载配置--&gt;&nbsp;&nbsp;&nbsp;<br />&lt;/bean&gt;</p>
<p>&nbsp;</p>
<p>&lt;!--对proxool进行事务支持--&gt;<br />&lt;bean id="transactionManager"&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="dataSource"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ref local="dataSource1" /&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;&nbsp;&nbsp; <br />&lt;/bean&gt;</p><img src="http://www.cnblogs.com/interdrp/aggbug/1542381.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/09/1542381.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/interdrp/archive/2009/08/09/1542381.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>