﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-在希腊帕尔纳斯山南坡上,有一个驰名世界的戴尔波伊神托所,在它的入口处的巨石上赫然锈刻着这样几个大字: 认识你自己!</title><link>http://www.blogjava.net/9611/</link><description>像丁香花一样静静的等待</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 10:46:54 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 10:46:54 GMT</pubDate><ttl>60</ttl><item><title>共享一些小东西|JSP|JAVA|C#|AJAX|Script|在线编辑器</title><link>http://www.blogjava.net/9611/archive/2007/12/22/169573.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Sat, 22 Dec 2007 07:29:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/12/22/169573.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/169573.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/12/22/169573.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/169573.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/169573.html</trackback:ping><description><![CDATA[1.JSP2.0技术手册 带源码<br />
2.Ajax in Action 中文版<br />
3.带时分秒JS日期控件<br />
4.在线编辑器mditor2.0版<br />
&nbsp; 清爽的界面，功能也比较全面，对于一般的应用完全能够应付<br />
5.thinking in java 3rd中文版<br />
&nbsp; 分作两个压缩包。<br />
6.基于J2EE的ajax宝典<br />
7.日志记录Log4J<br />
8.展现c#<br />
9.PowerDesigner教程<br />
<br />
有需要的朋友请到以下地址下载：<br />
http://www.dyin.cn/logs/12459969.html<br />
<br />
下载地址同上
<img src ="http://www.blogjava.net/9611/aggbug/169573.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-12-22 15:29 <a href="http://www.blogjava.net/9611/archive/2007/12/22/169573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【share】基于J2EE的Ajax宝典</title><link>http://www.blogjava.net/9611/archive/2007/12/22/169497.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Fri, 21 Dec 2007 23:29:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/12/22/169497.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/169497.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/12/22/169497.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/169497.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/169497.html</trackback:ping><description><![CDATA[<img height="500" alt="" src="http://img.verycd.com/posts/0706/post-554005-1182128251.jpg" width="351" border="0" /><br />
<br />
基本信息<br />
&#183;出版社：电子工业<br />
&#183;ISBN：7121042584<br />
&#183;版次：1<br />
&#183;出版日期：2007-5<br />
&#183;开本：0<br />
&#183;精简装：平装<br />
&#183;页数：831<br />
<br />
【内容简介】<br />
Ajax技术是目前最流行的技术，它极大地改善了传统Web应用的用户体验，因此也被称为对传统Web技术的革命。.<br />
本书介绍的内容非常全面，覆盖了Ajax技术的各个方面，包括Ajax技术的核心对象XMLHttpRequest对象、JavaScript脚本的详细知识以及DOM和XML的相关知识。除了Ajax的这些基础知识外，本书还详细介绍了Ajax的5个相关框架：Prototype.js，Dojo，DWR，JSON-RPC-Java和AjaxTags。..<br />
本书介绍的不是单纯的Ajax技巧，而是侧重于介绍Ajax技术与J2EE技术的融合，让Ajax技术融入实际的J2EE应用。<br />
本书适用于有一定J2EE编程基础的读者，因为单纯的Ajax技术是没有太大用处的。通过阅读本书，不但可以掌握Ajax的开发技巧，而且可以掌握如何让Ajax技术和J2EE应用实现完美融合。... <br />
<br />
【目录信息】<br />
第1部分 初识Ajax. 1<br />
第1章 Ajax入门 2<br />
1.1 重新思考Web应用 2<br />
1.1.1 应用系统的发展史 2<br />
1.1.2 传统Web应用的优势和缺点 4<br />
1.2 重新设计Web应用 5<br />
1.2.1 RIA应用 5<br />
1.2.2 异步发送请求并避免等待 7<br />
1.2.3 使用Ajax 7<br />
1.3 Ajax简介 8<br />
1.3.1 Ajax的工作方式 8<br />
1.3.2 XMLHttpRequest 9<br />
1.3.3 JavaScript语言 10<br />
1.3.4 HTML页面的DOM 10<br />
1.3.5 数据交换和显示 11<br />
1.4 Ajax的基本特征 12<br />
1.5 Ajax的替代技术 13<br />
1.5.1 Sun的Java Web Start技术 13<br />
1.5.2 Microsoft的ClickOnce技术 13<br />
1.5.3 基于Flash的Flex 14<br />
<br />
如有需要得朋友请到 <a href="http://www.dyin.cn">www.dyin.cn</a>下载。如果下载有问题请留言在<a href="http://www.dyin.cn">www.dyin.cn</a>我会通过邮箱发送给需要的朋友。
<img src ="http://www.blogjava.net/9611/aggbug/169497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-12-22 07:29 <a href="http://www.blogjava.net/9611/archive/2007/12/22/169497.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NetBeans6.0使用感想</title><link>http://www.blogjava.net/9611/archive/2007/11/05/158308.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Mon, 05 Nov 2007 09:21:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/11/05/158308.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/158308.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/11/05/158308.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/158308.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/158308.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天试用了NetBeans6.0了，感觉界面蛮爽的，还不错，速度也很快。应该是以后一段时间开发的IDE了，不过刚打开界面，就发现一个问题，界面之中有一条竖着的线，宽度非常的小，非常的不爽。后来研究了一下，终于找到解决的办法。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 最简单的办法是： </p>
<p>C:\Documents and Settings\9611\.netbeans\6.0beta2\config\Editors\text\x-java </p>
<p>上述的\9611\要改成你的用户名，编辑\x-java目录下面的properties.xml文件，加入：</p>
<div class="code_title">xml 代码</div>
<p><span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">"java.lang.Boolean"</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"text-limit-line-visible"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"false"</span><span class="tag">/&gt;</span></span></p>
<p>重新启动NetBeans6.0就好了，开始你的快乐之旅吧。 </p>
<img src ="http://www.blogjava.net/9611/aggbug/158308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-11-05 17:21 <a href="http://www.blogjava.net/9611/archive/2007/11/05/158308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WinXP SP2 截至 7.10 所有補丁更新程序</title><link>http://www.blogjava.net/9611/archive/2007/07/15/130322.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Sat, 14 Jul 2007 17:56:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/07/15/130322.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/130322.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/07/15/130322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/130322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/130322.html</trackback:ping><description><![CDATA[<p><img height=391 alt="" src="http://soft.ylmf.com/uploadfiles/image/07-7/07-7-11/1184160533.gif" width=531 border=0><br></p>
<p>WinXP SP2 截至 7.10 所有更新程序<br><br>非高优先级更新程序(3个)<br>高优先级更新程序(77个)<br>WMP10 安装及其相关更新程序(3个)<br>其他更新程序(2个)<br><br>安装程序会自动检测跳过系统已安装的更新程序。支持 nLite 集成系统的更新程序自动检测！<br><br>确保安装完后系统状态和原版自动升级结果完全一致！<br><br><a href="http://soft.ylmf.com/download.php?sid=240&amp;did=243&amp;s=1.html" target=_blank><font color=red><font size=6>讯雷下载</font></font></a></p>
<img src ="http://www.blogjava.net/9611/aggbug/130322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-07-15 01:56 <a href="http://www.blogjava.net/9611/archive/2007/07/15/130322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>资源分享：英文学习之听力</title><link>http://www.blogjava.net/9611/archive/2007/07/15/130321.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Sat, 14 Jul 2007 17:51:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/07/15/130321.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/130321.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/07/15/130321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/130321.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/130321.html</trackback:ping><description><![CDATA[<p><img height=552 alt="" src="http://img.verycd.com/posts/0702/post-453843-1172152823.jpg" width=385 border=0><br></p>
<p>美國之音（VOA），世界上規模最大的國際廣播電台。本產品精心選取了VOA最具代表性的多方面高清晰錄音報道，從不同視角生動再現美國社會全貌。內容包羅萬象，涵蓋時事、健康、教育、經濟、科技、探索、娛樂等各方面。產品中的聽力材料都屬於該節目的標準英語(Standard English)，播音速度為每分鐘140～150個單字。<br><br>目錄<br>1_時事<br>2_娛樂<br>3_發展<br>4_教育<br>5_健康<br>6_科技<br>7_探索<br>8_經濟<br>9_美國萬花筒<br></p>
<p><br>&nbsp;</p>
<p><img height=520 alt="" src="http://img.verycd.com/posts/0608/post-457558-1155530189.jpg" width=347 border=0><br></p>
<p>聽力是英語教學中四項基本技能之一，也是中國學生的一個難點。突破這個難關不僅有助於其它單項技能的訓練，同時也為培養學生的英語交際能力奠定一個良好的基礎。在國家教委最近頒佈的《高等學校英語專業基礎階段英語教學大綱》和《高等學校英語專業高年級英語教學大綱》中，對於大學一、二、三、四年級學生在聽力方面應該達到的標準都作出了詳細的規定。Listen to This 就是按照這兩個大綱的要求，根據中國英語教學的特點而編寫的一套聽力教程。<br><br>整套教程共分為三冊。第一冊適合大學一年級學生或英語初學人使用；第二冊的對象是大學二年級學生和有中等英語水準的自學人；第三冊可供大學三、四年級學生和有較高英語水準的自學人使用。每冊均含《學生用書》（Student's Book）和《教師用書》（Teacher's Book），功用不同，相反相成。《學生用書》以錄音材料中的生詞表、文化背景註釋和配套的練習為主。《教師用書》則包含錄音和書面材料、練習答案和相關文化背景知識的補充讀物。<br><br>和國內現有的聽力教程相比，Listen to This 有以下幾個特點︰<br><br>1.教程的第三冊適合英語專業高年級學生使用，以達到教委大綱中第六級和第八級對聽力的要求。<br><br>2.內容新穎，聽力材料均選自八十年代後期國外的有聲資料。<br><br>3.錄音以標準的美國音或英國音為主，聲音清晰。<br><br>4.練習形式活潑。練習的設計參考了美國TOEFL考試和英國 Cambridge Certificate考試的形式，並增加了是非題、填充題、聽寫、講座摘抄記和根據筆記回答問題等多種形式。 <br>5.《教師用書》中的補充讀物均摘自英美報刊和書籍，不僅能夠為教師備課提供必要的歷史文化背景，也可以作為學生的課外閱讀材料，以擴大學生的知識面。<br><br>以上特點不僅使該教程適合課堂教學，同時也為英語專業學生和社會各層次的英語愛好者提供了自學的良好模式。<br><br>Listen to This2適用於大學二年級學生和有一定基礎的英語自學人。錄音材料選自八十年代中期以來英美的錄音材料。全書共有36課課文，每課由三個部分組成。形式活潑多樣，涉及了日常生活和社交活動的各個方面，不僅有助於提升學生的聽力技能，也有益於提升學生的英語交際能力。全書的課文按錄音材料的難易程度編排，循序漸進，既注意與第一冊銜接又為學生繼續使用第三冊打下了基礎。<br><br>《學生用書》包括生詞表、文化背景註釋和配套練習三個部分。在使用時應要求學生事先熟悉生詞表中所列的詞彙，並閱讀文化背景註釋。由於第二冊中增加了根據上下文作出推測、記筆記和整理講座提綱等項訓練，因此，在第1、7、13、19、25和31課的第三部分分別加上了對這些練習的示範說明。在做這部分練習前應要求學生熟悉這些訓練的目的和要求。<br><br>《教師手冊》包括錄音的書面材料、練習及答案、和補充閱讀材料三個部分。為了便於教師上課時使用，配有答案的練習排印在每部分的書面材料之後。第二冊的補充閱讀材料均以課文中所涉及的英美風俗和文化特色為主題。教師可以在教學中選擇部分內容向學生作一些介紹，以擴大學生的知識面。<br>篇和開口篇.<br></p>
<p>由于blogjava不提供附件上传，如有需要请留言，或者email。</p>
<img src ="http://www.blogjava.net/9611/aggbug/130321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-07-15 01:51 <a href="http://www.blogjava.net/9611/archive/2007/07/15/130321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MSXML. xmlhttp 的应用参考</title><link>http://www.blogjava.net/9611/archive/2007/06/14/124300.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Thu, 14 Jun 2007 06:00:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/06/14/124300.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/124300.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/06/14/124300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/124300.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/124300.html</trackback:ping><description><![CDATA[XMLHTTP应用参考 <br>一、使用步骤： <br>1、创建XMLHTTP对象 //需MSXML4.0支持 <br>2、打开与服务端的连接，同时定义指令发送方式，服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普通HTTP指令传送一样，可以用"GET"方法或"POST"方法指向服务端的服务网页。 <br>3、发送指令。 <br>4、等待并接收服务端返回的处理结果。 <br>5、释放XMLHTTP对象 <br><br>二、XMLHTTP方法： <br>1、XMLHTTP对象 <br>备注：客户机可以使用XMLHTTP对象发送任意的HTTP请求,接受HTTP应答,还可以对应答的XML文档进行解析。 <br><br>Open方法：初始化一个Msxml2.XMLHTTP请求，指定HTTP请求方式、URL以及鉴定信息。 <br>Open（ bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword ） <br>bstrMethod： 数据传送方式，即GET或POST。 <br>bstrUrl： 服务网页的URL。 <br>varAsync： 是否同步执行。缺省为True，即同步执行，但只能在DOM中实施同步执行。用中一般将其置为False，即异步执行。 <br>bstrUser： 用户名，可省略。 <br>bstrPassword：用户口令，可省略。 <br><br>Send方法：发送HTTP请求到服务器，返回应答。 <br>语法： <br>oXMLHttpRequest.send(varBody) <br>说明：此方法是否同步取决于Open方法的varAsync参数。如果设为True则为同步，调用立刻返回，如果设为False调用直到整个应答被接收了才返回。 <br><br>setRequestHeader（ bstrHeader, bstrvalue ） <br>bstrHeader：HTTP 头(header) <br>bstrvalue： HTTP 头(header)的值 <br><br>如果Open方法定义为POST，可以定义表单方式上传： <br>xmlhttp.setRequestHeader（ "Content-Type", "application/x-www-form-urlencoded"） <br><br>三、XMLHTTP属性： <br>onreadystatechange：在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。 <br>responseBody： 结果返回为无符号整数数组。 <br>responseStream： 结果返回为IStream流。 <br>responseText ： 结果返回为字符串。 <br>responseXML： 结果返回为XML格式数据。 <br><br>四、示例： <br>
<div class="myCode">
<div class="codeText"><img  src="http://mysheji.com/Skin/default/images/code.gif" align="absmiddle" hspace="6">代码片段</div>
<div class="codeContent">&lt;&nbsp;script&nbsp;language="javascript"&nbsp;&gt;&nbsp; <br>function&nbsp;getDatal(url){&nbsp; <br>var&nbsp;xmlhttp&nbsp;
=&nbsp;new&nbsp;ActiveXObject("MSXML2.XMLHTTP.4.0";//创建XMLHTTPRequest对象，需MSXML4.0支
持&nbsp;["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"]&nbsp; <br>xmlhttp.open("GET",url,false,"","";&nbsp;//使用HTTP&nbsp;GET初始化HTTP请求&nbsp; <br>xmlhttp.send("";&nbsp;//发送HTTP请求并获取HTTP响应&nbsp; <br>return&nbsp;xmlhttp.responseXML;&nbsp;//获取XML文档&nbsp; <br>}&nbsp; <br>&lt;&nbsp;/script&nbsp;&gt;&nbsp;</div>
</div>
<p>　　现在网上流行的小偷程序比较多，有新闻类小偷，音乐小偷，下载小偷，那么它们是如何做的呢，下面我来做个简单介绍，希望对各位站长有所帮助。 <br></p>
<p>（一）原理 <br>　　小偷程序实际上是通过了XML中的XMLHTTP组件调用其它网站上的网页。比如新闻小偷程序，很多都是调用了sina的
新闻网页，并且对其中的html进行了一些替换，同时对广告也进行了过滤。用小偷程序的优点有：无须维护网站，因为小偷程序中的数据来自其他网站，它将随
着该网站的更新而更新；可以节省服务器资源，一般小偷程序就几个文件，所有网页内容都是来自其他网站。缺点有：不稳定，如果目标网站出错，程序也会出错，
而且，如果目标网站进行升级维护，那么小偷程序也要进行相应修改；速度，因为是远程调用，速度和在本地服务器上读取数据比起来，肯定要慢一些。 <br></p>
<p>（二）事例 <br><br>下面就XMLHTTP在ASP中的应用做个简单说明 <br><br>代码:&nbsp;</p>
<div class="myCode">
<div class="codeText"><img  src="http://mysheji.com/Skin/default/images/code.gif" align="absmiddle" hspace="6">代码片段</div>
<div class="codeContent">&lt;%&nbsp; <br>&#8217;常用函数&nbsp; <br><br>&#8217;1、输入url目标网页地址，返回值getHTTPPage是目标网页的html代码&nbsp; <br>function&nbsp;getHTTPPage(url)&nbsp; <br>dim&nbsp;Http&nbsp; <br>set&nbsp;Http=server.createobject("MSXML2.XMLHTTP"&nbsp; <br>Http.open&nbsp;"GET",url,false&nbsp; <br>Http.send()&nbsp; <br>if&nbsp;Http.readystate&lt;&gt;4&nbsp;then&nbsp; <br>exit&nbsp;function&nbsp; <br>end&nbsp;if&nbsp; <br>getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312"&nbsp; <br>set&nbsp;http=nothing&nbsp; <br>if&nbsp;err.number&lt;&gt;0&nbsp;then&nbsp;err.Clear&nbsp; <br>end&nbsp;function&nbsp; <br><br>&#8217;2、转换乱玛，直接用xmlhttp调用有中文字符的网页得到的将是乱玛，可以通过adodb.stream组件进行转换&nbsp; <br>Function&nbsp;BytesToBstr(body,Cset)&nbsp; <br>dim&nbsp;objstream&nbsp; <br>set&nbsp;objstream&nbsp;=&nbsp;Server.CreateObject("adodb.stream"&nbsp; <br>objstream.Type&nbsp;=&nbsp;1&nbsp; <br>objstream.Mode&nbsp;=3&nbsp; <br>objstream.Open&nbsp; <br>objstream.Write&nbsp;body&nbsp; <br>objstream.Position&nbsp;=&nbsp;0&nbsp; <br>objstream.Type&nbsp;=&nbsp;2&nbsp; <br>objstream.Charset&nbsp;=&nbsp;Cset&nbsp; <br>BytesToBstr&nbsp;=&nbsp;objstream.ReadText&nbsp; <br>objstream.Close&nbsp; <br>set&nbsp;objstream&nbsp;=&nbsp;nothing&nbsp; <br>End&nbsp;Function&nbsp; <br><br>&#8217;下面试着调用http://www.998w.net/class/的html内容&nbsp; <br>Dim&nbsp;Url,Html&nbsp; <br>Url="http://www.998w.net/class/"&nbsp; <br>Html&nbsp;=&nbsp;getHTTPPage(Url)&nbsp; <br>Response.write&nbsp;Html&nbsp; <br>%&gt;</div>
</div>
<p>&nbsp;------------------------------------------------------ <br>代码: <br>'代码]用XMLHTTP读取远程文件 </p>
<div class="myCode">
<div class="codeText"><img  src="http://mysheji.com/Skin/default/images/code.gif" align="absmiddle" hspace="6">代码片段</div>
<div class="codeContent">&lt;%&nbsp; <br>Response.Buffer&nbsp;=&nbsp;True&nbsp; <br>Dim&nbsp;objXMLHTTP,&nbsp;xml&nbsp; <br>Set&nbsp;xml&nbsp;=&nbsp;Server.CreateObject("Microsoft.XMLHTTP"&nbsp; <br><br>xml.Open&nbsp;"GET",&nbsp;"http://www.998w.net/down/998w1.0.rar",&nbsp;False&nbsp; <br><br>xml.Send&nbsp; <br><br>&#8217;&nbsp;Add&nbsp;a&nbsp;header&nbsp;to&nbsp;give&nbsp;it&nbsp;a&nbsp;file&nbsp;name:&nbsp; <br>Response.AddHeader&nbsp;"Content-Disposition",&nbsp;_&nbsp; <br>"attachment;filename=mitchell-pres.zip"&nbsp; <br><br>&#8217;&nbsp;Specify&nbsp;the&nbsp;content&nbsp;type&nbsp;to&nbsp;tell&nbsp;the&nbsp;browser&nbsp;what&nbsp;to&nbsp;do:&nbsp; <br>Response.ContentType&nbsp;=&nbsp;"application/zip"&nbsp; <br><br>&#8217;&nbsp;Binarywrite&nbsp;the&nbsp;bytes&nbsp;to&nbsp;the&nbsp;browser&nbsp; <br>Response.BinaryWrite&nbsp;xml.responseBody&nbsp; <br><br>Set&nbsp;xml&nbsp;=&nbsp;Nothing&nbsp; <br>%&gt;&nbsp;</div>
</div>
<p>------------------------------------- <br>如何写ASP入库小偷程序 <br>　　入库小偷的原理也很简单：就是用XMLHTTP远程读取网页的内容，然后根据需要，对读到的内容进行加工（过滤，替换，分类），最后得到自己需要的数据，加入到数据库中。 <br>首先：我们先用XMLHTTP读取远程网页（我的另一片文章中有介绍）。 <br>其次：对内容进行过滤，这个是比较关键的步骤，比如说，我要从远程网页上提取出所有url连接，我应该怎么做呢？ <br>代码: <br>&#8216;这里用的是正则式 </p>
<div class="myCode">
<div class="codeText"><img  src="http://mysheji.com/Skin/default/images/code.gif" align="absmiddle" hspace="6">代码片段</div>
<div class="codeContent">Set&nbsp;objRegExp&nbsp;=&nbsp;New&nbsp;Regexp&nbsp;&#8217;建立对象&nbsp; <br>objRegExp.IgnoreCase&nbsp;=&nbsp;True&nbsp;&#8217;大小写忽略&nbsp; <br>objRegExp.Global&nbsp;=&nbsp;True&nbsp;&#8217;全局为真&nbsp; <br>objRegExp.Pattern&nbsp;=&nbsp;"http://.+?"&nbsp;&#8217;匹配字段&nbsp; <br>set&nbsp;mm=objRegExp.Execute(str)&nbsp;&#8217;执行查找，str为输入参数&nbsp; <br>For&nbsp;Each&nbsp;Match&nbsp;in&nbsp;mm&nbsp;&#8217;进入循环&nbsp; <br>Response.write(Match.Value）&nbsp;&#8217;输出url地址&nbsp; <br>next&nbsp;</div>
</div>
<p>然后，我们需要根据需要做一些替换功能，把不必要的数据替换掉，这个比较简单，用Replace函数即可。 <br>最后，进行数据库操作 <br>------------------------------- <br>一个例子 <br>代码: <br></p>
<div class="myCode">
<div class="codeText"><img  src="http://mysheji.com/Skin/default/images/code.gif" align="absmiddle" hspace="6">代码片段</div>
<div class="codeContent">&lt;%&nbsp; <br>On&nbsp;Error&nbsp;Resume&nbsp;Next&nbsp; <br>Server.ScriptTimeOut=9999999&nbsp; <br>Function&nbsp;getHTTPPage(Path)&nbsp; <br>t&nbsp;=&nbsp;GetBody(Path)&nbsp; <br>getHTTPPage=BytesToBstr(t,"GB2312"&nbsp; <br>End&nbsp;function&nbsp; <br><br>&#8217;
首先，进行小偷程序的一些初始化设置，以上代码的作用分别是忽略掉所有非致命性错误，把小偷程序的运行超时时间设置得很长（这样不会出现运行超时的错
误），转换原来默认的UTF-8编码转换成GB2312编码，否则直接用XMLHTTP组件调用有中文字符的网页得到的将是乱码。&nbsp; <br><br>Function&nbsp;GetBody(url)&nbsp; <br>on&nbsp;error&nbsp;resume&nbsp;next&nbsp; <br>Set&nbsp;Retrieval&nbsp;=&nbsp;CreateObject("Microsoft.XMLHTTP"&nbsp; <br>With&nbsp;Retrieval&nbsp; <br>.Open&nbsp;"Get",&nbsp;url,&nbsp;False,&nbsp;"",&nbsp;""&nbsp; <br>.Send&nbsp; <br>GetBody&nbsp;=&nbsp;.ResponseBody&nbsp; <br>End&nbsp;With&nbsp; <br>Set&nbsp;Retrieval&nbsp;=&nbsp;Nothing&nbsp; <br>End&nbsp;Function&nbsp; <br><br>&#8217;然后调用XMLHTTP组件创建一个对象并进行初始化设置。&nbsp; <br><br>Function&nbsp;BytesToBstr(body,Cset)&nbsp; <br>dim&nbsp;objstream&nbsp; <br>set&nbsp;objstream&nbsp;=&nbsp;Server.CreateObject("adodb.stream"&nbsp; <br>objstream.Type&nbsp;=&nbsp;1&nbsp; <br>objstream.Mode&nbsp;=3&nbsp; <br>objstream.Open&nbsp; <br>objstream.Write&nbsp;body&nbsp; <br>objstream.Position&nbsp;=&nbsp;0&nbsp; <br>objstream.Type&nbsp;=&nbsp;2&nbsp; <br>objstream.Charset&nbsp;=&nbsp;Cset&nbsp; <br>BytesToBstr&nbsp;=&nbsp;objstream.ReadText&nbsp; <br>objstream.Close&nbsp; <br>set&nbsp;objstream&nbsp;=&nbsp;nothing&nbsp; <br>End&nbsp;Function&nbsp; <br><br>Function&nbsp;Newstring(wstr,strng)&nbsp; <br>Newstring=Instr(lcase(wstr),lcase(strng))&nbsp; <br>if&nbsp;Newstring&lt;=0&nbsp;then&nbsp;Newstring=Len(wstr)&nbsp; <br>End&nbsp;Function&nbsp; <br><br>&#8217;处理抓取回来的数据需要调用adodb.stream组件并进行初始化设置。%&gt;&nbsp;</div>
</div>
<p>'以下即为页面显示部分 </p>
<div class="myCode">
<div class="codeText"><img  src="http://mysheji.com/Skin/default/images/code.gif" align="absmiddle" hspace="6">代码片段</div>
<div class="codeContent">&lt;%&nbsp; <br>Dim&nbsp;wstr,str,url,start,over,city&nbsp; <br>&#8217;定义一些需要使用到的变量&nbsp; <br><br>city&nbsp;=&nbsp;Request.QueryString("id")&nbsp; <br>&#8217;程序传回的ID变量（即用户选择的城市）赋给id&nbsp; <br><br>url="http://appnews.qq.com/cgi-bin/news_qq_search?city="&amp;city&amp;""&nbsp; <br>&#8217;这里设置需要抓取的页面地址，当然你也可以直接指定某个地址而不使用变量&nbsp; <br><br>wstr=getHTTPPage(url)&nbsp; <br>&#8217;获取指定页面的全部数据&nbsp; <br><br>start=Newstring(wstr,"&nbsp;&lt;html&gt;")&nbsp; <br>&#8217;这里设置需要处理的数据的头部，这个变量应视不同情况而设置，具体内容可以通过查看需要抓取的页面的源代码来确定。因为在这个程序里我们需要抓取整个页面,所以设置为页面全部抓取。注意，设置的内容必须是页面内容唯一的，不可以重复。&nbsp; <br><br>over=Newstring(wstr,"&nbsp;&lt;/HTML&gt;")&nbsp; <br>&#8217;和start相对应的就是需要处理的数据的尾部，同样的，设置的内容必须是页面中唯一的。&nbsp; <br><br>body=mid(wstr,start,over-start)&nbsp; <br>&#8217;设置显示页面的范围&nbsp; <br><br>&#8217;下面就是动用乾坤挪移大法的时候了，通过replace可以用一些字符替换掉数据中指定的字符。&nbsp; <br><br>body&nbsp;=&nbsp;replace(body,"skin1","天气预报&nbsp;-&nbsp;斯克网络")&nbsp; <br>body&nbsp;=&nbsp;replace(body,"http://appnews.qq.com/cgi-bin/news_qq_search?city","tianqi.asp?id")&nbsp; <br><br>&#8217;本程序中已经完成了替换的工作，如果有其他需要的话可以继续进行类似的替换操作。&nbsp; <br><br>response.write&nbsp;body&nbsp; <br>%&gt;</div>
</div><img src ="http://www.blogjava.net/9611/aggbug/124300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-06-14 14:00 <a href="http://www.blogjava.net/9611/archive/2007/06/14/124300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>另一个博客www.dyin.cn</title><link>http://www.blogjava.net/9611/archive/2007/06/09/123030.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Sat, 09 Jun 2007 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/06/09/123030.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/123030.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/06/09/123030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/123030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/123030.html</trackback:ping><description><![CDATA[以后可能会把共享资源放到我另一个博客上<a href="http://www.dyin.cn/">www.dyin.cn</a>，如果大家有需要敬请关注。 
<img src ="http://www.blogjava.net/9611/aggbug/123030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-06-09 15:37 <a href="http://www.blogjava.net/9611/archive/2007/06/09/123030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>抛弃STRUST 1.X系列吧，进入2的天地</title><link>http://www.blogjava.net/9611/archive/2007/04/20/112106.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Fri, 20 Apr 2007 00:55:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/04/20/112106.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/112106.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/04/20/112106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/112106.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/112106.html</trackback:ping><description><![CDATA[STRUTS出2.0了，之前的版本会逐步的消失，2和1相比有了很大的区别，听说是2就是WEBWORK，看来要想学好STRUTS2还得从学习WEBWORK开始啊！
<img src ="http://www.blogjava.net/9611/aggbug/112106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-04-20 08:55 <a href="http://www.blogjava.net/9611/archive/2007/04/20/112106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怀念从前之-----ASP开发技巧集锦四</title><link>http://www.blogjava.net/9611/archive/2007/04/20/112104.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Fri, 20 Apr 2007 00:51:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/04/20/112104.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/112104.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/04/20/112104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/112104.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/112104.html</trackback:ping><description><![CDATA[31. 确认操作<br>function ConfirmDel()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(confirm("确定要删除吗？一旦删除将不能恢复！"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br>}<br><br>&lt;form name="del" method="Post" action="Del.asp" onsubmit="return ConfirmDel();"&gt;<br><br>==============================================================<br><br><br><br>我自己用的一个。<br>function ConfirmReset()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(confirm("确定取消操作吗？一旦取消操作将不能恢复！"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.form1.reset();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // return true;<br>}<br>&lt;a href="javascript:ConfirmReset();"&gt;&lt;img src="button_cance.gif"&gt;&lt;/a&gt;<br><br><br><br>32. indexOf() 用法<br><br><br><br>&lt;字符串对象&gt;.indexOf(&lt;另一个字符串对象&gt;[, &lt;起始位置&gt;])；<br><br><br><br>该方法从&lt;字符串对象&gt;中查找&lt;另一个字符串对象&gt;（如果给出&lt;起始位置&gt;就忽略之前的位置），如果找到了，就返回它的位置，没有找到就返回&#8220;-1&#8221;。所有的&#8220;位置&#8221;都是从零开始的。<br>eg. Str.indexOf(&#8220;AP&#8221;)&gt;-1 说明str中存在&#8221;AP&#8221;字符串<br><br><br><br>33. 生成流水号<br><br><br><br>&lt;%<br>if request.form("Modf") &lt;&gt; "" then<br>Dim&nbsp;&nbsp; rs<br>Dim sql<br>Dim BugID<br>dim today<br>today=date()<br>toyear=year(today)<br>toyear=toyear*10000<br>tomonth= month(today)<br>tomonth=tomonth*100<br>tonow=day(today)<br>Serialnum = toyear + tomonth + tonow<br>Serialnum = Serialnum*10000+1<br><br><br><br>set rs = Server.CreateObject("ADODB.recordset")<br>sql = "select top 1 * from buglist order by SubmitDate desc"<br>rs.open sql,conn,1,3<br>if&nbsp;&nbsp; not rs.eof then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim OldSerialnum<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OldSerialnum = Rs("BugID")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OldSerialnum = right(OldSerialnum,12)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Serial = right(Serialnum,12)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if OldSerialnum - Serial &gt;= 0 then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Serialnum = OldSerialnum + 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if <br>end if<br>BugID = "ES"&amp;request("ProductVersion")&amp;Serialnum<br><br><br><br>34. 响应回车<br><br><br><br>function getdata(what,whatid)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp; if (event.keyCode==13)<br>&nbsp;&nbsp;&nbsp;&nbsp; &#8230;&#8230;<br>&lt;input name="SerialNum&lt;%=i%&gt;"&nbsp;&nbsp;&nbsp; type="text" onKeyDown="getdata(window.form1.SerialNum&lt;%=i%&gt;.value,&lt;%=i%&gt;)"&gt;<br><br><br><br>35. 关闭窗口前刷新父页面<br><br><br><br>response.write "&lt;script language = javascript&gt;"<br>response.write "javascript:opener.location.reload(); "<br>response.write "javasript:window.close();&lt;/script&gt;"<br><br><br><br>36. JS事件<br><br><br><br>事件 / 描述<br><br><br><br>onblur 事件 发生在窗口失去焦点的时候。<br>onchange 事件 发生在文本输入区的内容被更改，然后焦点从文本输入区移走之后。<br>onclick 事件 发生在对象被单击的时候。<br>onerror 事件 发生在错误发生的时候。<br>onfocus 事件 发生在窗口得到焦点的时候。<br>onload 事件 发生在文档全部下载完毕的时候。<br>onmousedown 事件 发生在用户把鼠标放在对象上按下鼠标键的时候。参考 onmouseup 事件。<br>onmouseout 事件 发生在鼠标离开对象的时候。参考 onmouseover 事件。<br>onmouseover 事件 发生在鼠标进入对象范围的时候。<br>onmouseup 事件 发生在用户把鼠标放在对象上鼠标键被按下的情况下，放开鼠标键的时候。<br>onreset 事件 发生在表单的&#8220;重置&#8221;按钮被单击（按下并放开）的时候。<br>onresize 事件 发生在窗口被调整大小的时候。<br>onsubmit 事件 发生在表单的&#8220;提交&#8221;按钮被单击（按下并放开）的时候。<br>onunload 事件 发生在用户退出文档（或者关闭窗口，或者到另一个页面去）的时候。<br>onSelect 当Text或Textarea对象中的文字被加亮后，引发该事件。 <br>onFocus 当用户单击Text或textarea以及select对象时，产生该事件。 <br>onBlur 当text对象或textarea对象以及select对象不再拥有焦点、而退到后台时，引发该文件. <br>onDragDrog 拖放时发生<br>onLoseCapture&nbsp;&nbsp;<br>onDblClick 鼠标双击事件 <br>onKeyPress 当键盘上的某个键被按下并且释放时触发的事件.[注意:页面内必须有被聚焦的对象] <br>onKeyDown 当键盘上某个按键被按下时触发的事件[注意:页面内必须有被聚焦的对象] <br>onKeyUp 当键盘上某个按键被按放开时触发的事件[注意:页面内必须有被聚焦的对象] <br>onAbort 图片在下载时被用户中断 <br>onBeforeUnload 当前页面的内容将要被改变时触发的事件 <br>onMove 浏览器的窗口被移动时触发的事件<br><br><br><br>37. 自动最大化<br><br><br><br>function window_onload()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.moveTo(-2,-2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.resizeTo(screen.availWidth, screen.availHeight);<br>}<br><br><br><br>&lt;body onload="window_onload()"&gt;<br><br><br><br>38. 几个SQL技巧<br><br><br><br>Select Area,Territory,username,sum(dealqty) DealQty,count(Projectnum) ProjectQty,sum(TotalAmount) TotalAmountQty,sum(TotalPowerRT) TotalPowerRT&nbsp;&nbsp; FROM VW_PreviewTerritory&nbsp;&nbsp; where&nbsp;&nbsp;&nbsp; username = '段龙义' group by area,Territory,username<br>只要把不需要统计的东西分组就可以了。<br><br><br><br>select area,count(projectnum) TotalProjectQty,sum(DealQty) TotalDealQty,sum(TotalAmount) TotalAmountQty,sum(TotalPowerRT) TotalPowerRTQty from vw_previewProject where username = 'admin' group by area<br>这个也是一样，记住：count() 只是计数，不管这个字段值是多少。sum()是求和，把所有加在一起。<br><br><br><br>39. Eval用法<br><br><br><br>eval("ProducingArea"+i+".style.display = 'none' ;");<br>单引号不影响<br>eval("if((window.form1.ProductBaseType"+i+".value!='' &amp;&amp; window.form1.ProductBaseType"+(i+1)+".value =='')==true);");<br>//错误！<br>if(eval("window.form1.ProductBaseType"+i+".value!='' &amp;&amp; window.form1.ProductBaseType"+(i+1)+".value ==''")==true)<br>//以后记得凡是有if判断的，把eval("")写在里面，就比较好！<br>if(confirm(eval("'确信要在'+window.form1.ProductBaseType"+(i)+".value+'后添加子类？'")))<br><br><br><br><br><br><br><br>40. 窗口关闭之前<br><br>function window_onbeforeunload(Projectnum)<br>{<br>&nbsp;&nbsp;&nbsp; if (event.clientX &gt; document.body.clientWidth &amp;&amp; event.clientY &lt; 0 )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var oXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oXMLHTTP.open("POST","CheckProjectDeal.asp?Projectnum="+Projectnum,false);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oXMLHTTP.send();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Str=unescape(oXMLHTTP.responseText);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (unescape(oXMLHTTP.responseText)!="YES")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.event.returnValue="项目至少需要一个销售机会！";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}<br><br>41. 标准表格<br><br>***************<br><br>* 这个是标题<br><br>***************<br><br>&lt;table cellspacing=0 cellpadding=0 width="100%" border=0&gt;<br><br>&nbsp;&nbsp; &lt;tr&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&nbsp;&nbsp; class=title&nbsp;&nbsp; nowrap&nbsp;&nbsp; align=left&gt;<br>&lt;%response.write Application("LProductManage"&amp;session("LanguageId"))%&gt; <br><br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br><br>&nbsp;&nbsp; &lt;/tr&gt;<br><br>&lt;/table&gt;<br><br>***************<br><br>* 这个是横线<br><br>***************<br><br>&lt;table cellspacing=0 cellpadding=0 width="100%" border=0&gt;<br><br>&nbsp;&nbsp; &lt;tbody&gt; <br><br>&nbsp;&nbsp; &lt;tr&gt; <br><br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt; <br><br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br><br>&nbsp;&nbsp; &lt;/tr&gt;<br>&lt;tr class="linecolor"&gt;<br><br>&lt;td height="2"&gt;&lt;/td&gt;<br><br>&lt;/tr&gt; <br>&lt;tr&gt;<br><br>&lt;td class="tdcolor" align=left height=15&gt; &lt;/td&gt;<br><br>&lt;/tr&gt;<br><br>&nbsp;&nbsp; &lt;/tbody&gt;<br><br>&lt;/table&gt;<br><br><br>***************<br><br>* 这个是表格<br><br>***************<br><br>&lt;table border=0 cellpadding=0 cellspacing=1 width=100% bgcolor="#d0d090"&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th align="middle" class=light2&gt;&lt;b&gt;&lt;%=application("Lstatus"&amp;session("languageid"))%&gt;&lt;/b&gt;&lt;/th&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;th align="middle" class=light2&gt;&lt;b&gt;&lt;%=application("LSaleStage"&amp;session("languageid"))%&gt;&lt;/b&gt;&lt;/th&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr bgColor="white"&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;td align="middle"&gt; &lt;/td&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;td align="middle"&gt; &lt;/td&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br><br><br>&nbsp;&nbsp; &lt;/tbody&gt;<br><br>&lt;/table&gt;<br><br>边框\填充 = 0<br><br>间隔 ＝ 1<br><br>底色 = #d0d090<br><br>42. 这也行<br><br>for i=2 to num<br><br>&nbsp;&nbsp; BaseTypeAllPArr = request("BaseType"&amp;i&amp;"P"&amp;jLoop)&amp;":"&amp;BaseTypeAllPArr<br><br>&nbsp;&nbsp; response.Write "&nbsp;&nbsp; OOOO&nbsp;&nbsp; "&amp;request("BaseType"&amp;i&amp;"P"&amp;jLoop)&amp;"&nbsp;&nbsp; OOOO&nbsp;&nbsp;&nbsp; &lt;br&gt;"<br>next <br><br>43. 标准注释头<br><br>'' ******************************************************************<br><br>'' 文件名:<br><br>'' Copyright (c) 2001-2005 &#215;&#215;信息技术公司软件部<br><br>'' 功能描述:产品编辑<br><br>'' 参数<br><br>'' 牵涉数据表，视图，存储过程：自定义函数dbo.GetSubTreeinfo<br><br>'' 包含的文件:<br><br>'' 调用的公用函数，类，方法<br><br>'' 创建人:Kokey YU <br><br>'' 日　期: 2005-8-9<br><br>'' 修改人:<br><br>'' 日　期:<br><br>'' 修改说明:<br><br>'' 版　本:<br><br>'' ******************************************************************/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>44. title换行<br><br>&lt;a href="javascript:;" title="这是一行这是另一行！"&gt;把鼠标放上来&lt;/a&gt;<br>
<img src ="http://www.blogjava.net/9611/aggbug/112104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-04-20 08:51 <a href="http://www.blogjava.net/9611/archive/2007/04/20/112104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怀念从前之-----ASP开发技巧集锦三</title><link>http://www.blogjava.net/9611/archive/2007/04/20/112103.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Fri, 20 Apr 2007 00:50:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/04/20/112103.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/112103.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/04/20/112103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/112103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/112103.html</trackback:ping><description><![CDATA[&lt;iframe class="TBGen" style="top:2px" ID="UploadFiles" src="upload.asp" frameborder=0 scrolling=no width="250" height="25"&gt;&lt;/iframe&gt;<br><br>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br>其实也可以用&lt;!--#include file="fuck.asp"--&gt;<br><br><br><br>22. 全部选定<br><br><br><br>&lt;SCRIPT language=javascript&gt;<br>function CheckAll(form)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp; for (var i=0;i&lt;form.elements.length;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; var e = form.elements[i];<br>&nbsp;&nbsp;&nbsp;&nbsp; if (e.Name != "chkAll")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.checked = form.chkAll.checked;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; }<br>&lt;/script&gt;<br>引用：<br>&lt;td width="250" height="30"&gt;&lt;input name="chkAll" type="checkbox" id="chkAll" onclick=CheckAll(this.form) value="checkbox"&gt;选中本页显示的所有&lt;/td&gt;<br><br><br><br>小格：<br>&lt;input name='username' type='checkbox'&nbsp;&nbsp; id="username" value="&lt;%=cstr(rsView("username"))%&gt;"&gt;<br><br><br><br>23. 如何处理页面执行时发生的错误？<br><br><br><br>&lt;%@ LANGUAGE="VBScript" %&gt;<br>&lt;% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Buffer = True ' 打开页面缓冲<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; On Error Resume Next&nbsp;&nbsp; ' 打开错误处理<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;&#8230;&#8230;&#8230;' ASP代码<br>%&gt; <br><br><br><br>&lt;% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Err.Number &lt;&gt; 0 Then&nbsp;&nbsp; ' 错误处理<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Clear&nbsp;&nbsp; ' 清除缓冲区<br>%&gt;<br><br><br><br>&lt;HTML&gt;' 显示错误信息页面<br>&lt;HEAD&gt;<br>&lt;TITLE&gt;页面错误报告&lt;/TITLE&gt;<br>&lt;/HEAD&gt;<br><br><br><br>&lt;BODY BGCOLOR="#C0C0C0"&gt;<br>&lt;font color=red&gt;<br>&lt;p&gt;页面错误报告&lt;/p&gt;<br><br><br><br>错误号:&lt;%= Err.Number %&gt;&lt;BR&gt;<br>错误描述:&lt;%= Err.Description %&gt;&lt;BR&gt; <br>错误源:Source &lt;%= Err.Source %&gt;&lt;BR&gt;<br>错误发生行:&lt;%= Err.Line %&gt;&lt;BR&gt;<br>&lt;/BODY&gt;<br>&lt;/HTML&gt;<br>&lt;% <br>End If<br>%&gt;<br><br><br><br>24. 收藏夹图标.<br><br><br><br>在 HEAD 部分加入下面的内容:&nbsp;&nbsp;<br>&lt;LINK REL="SHORTCUT ICON" HREF=http://www.alleasy.com.cn/alleasy.ico&gt; <br><br><br><br>在地址栏加入图标（图标必须是.ico格式，并且要加入收藏后才有效）<br>在HEAD里加入 &lt;link rel="shortcut icon" href="favicon.ico"&gt; <br><br><br><br>25. 校验提交表单（正则表达式应用）<br><br><br><br>&lt;script language="JavaScript"&gt;<br>&lt;!--<br>function CheckForm()<br>{ <br>if (LoginID.value =="")<br>{<br>alert("请填写您的登录名！");<br>LoginID.focus();<br>return false;<br>}<br>var filter=/^\s*[.A-Za-z0-9_-]{5,15}\s*$/;<br>if (!filter.test(LoginID.value)) { <br>alert("用户名填写不正确,请重新填写！可使用的字符为（A-Z a-z 0-9 _ - .)长度不小于5个字符，不超过15个字符，注意不要使用空格。"); <br>LoginID.focus();<br>LoginID.select();<br>return false; <br>} <br>if (Password.value =="") <br>{<br>alert("请填写您的密码！");<br>Password.focus();<br>return false; <br>}<br>var filter=/^\s*[.A-Za-z0-9_-]{5,15}\s*$/;<br>if (!filter.test(Password.value)) { <br>alert("密码填写不正确,请重新填写！可使用的字符为（A-Z a-z 0-9 _ - .)长度不小于5个字符，不超<br><br><br><br>过15个字符，注意不要使用空格。"); <br>Password.focus();<br>Password.select();<br>return false; <br>} <br>if (Password.value != ConfirmPassword.value) <br>{<br>alert("请两次填写的密码不一致，请重新填写！");<br>ConfirmPassword.focus();<br>return false; <br>}<br>if (CompanyName.value =="")<br>{<br>alert("请填写贵公司名称！");<br>CompanyName.focus();<br>return false;<br>}<br>var filter=/^[a-zA-Z][a-zA-Z0-9._-]*@([a-zA-Z0-9-_]+\.)+(com|gov|net|com\.cn|edu\.cn)$/;<br>if(!filter.test(document.myform.Email.value)){<br>alert("邮箱格式不正确!"); <br>document.myform.Email.focus();<br>return false;<br>}<br>myform.submit();<br>return true;<br>}<br>//--&gt;<br>&lt;/SCRIPT&gt;<br><br><br><br>统一一下，以后都这样写<br>&lt;form method="POST" name="myform"&nbsp;&nbsp; action="Checkreg.asp" &gt;<br>&lt;/form&gt;<br><br><br><br>&lt;input type="button" name="Submit" value="提交" onClick="CheckForm();"&gt;<br><br><br><br>26. 循环<br><br><br><br>&lt;%<br>dim sql,rs<br>set rs=server.createobject("ADODB.recordset")<br>sql="select * from news where bigclassname='解决方案'"<br>rs.open sql,conn,1,3<br>for k=1 to rs.recordcount<br>if rs.eof then<br>exit for<br>else<br>%&gt;<br><br><br><br>&lt;tr&gt;<br>&lt;td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asfasdf<br>&lt;/td&gt;<br>&lt;/tr&gt;<br><br><br><br>&lt;% <br>rs.movenext<br>end if<br>next<br>%&gt;<br><br><br><br>27. 另一个只能输入数字代码<br><br><br><br>&lt;script language=java script&gt;<br>function check(){<br>&nbsp;&nbsp;&nbsp; if(isNaN(tt.value))<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("必须是数字!");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tt.value="";<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&lt;/script&gt;<br><br><br><br>&lt;input type="text" name="tt" onkeyup="check();"&gt;<br><br><br><br>28. 有选择显示<br><br><br><br>function showco(va)<br>{&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (va=="CO")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RefNum.style.display=''; //不再用这个可以直接用 block<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buttonsp.style.display='none';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (va=="SP")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buttonco.style.display='none';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buttonsp.style.display='';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kokey.style.display='';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (va=="Inventory")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RefNum.style.display='none'; //不显示<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reftr.style.display="block"; //显示<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br><br><br>调用：<br><br><br><br>&lt;select name="RefType" style='width:77pt'&nbsp;&nbsp; onChange="showco(this.value)"&gt;<br><br><br><br>&nbsp;&nbsp;&nbsp; &lt;option value="Inventory"&gt;Inventory&lt;/option&gt;<br><br><br><br>&nbsp;&nbsp;&nbsp; &lt;option value="CO" &gt;CO&lt;/option&gt;<br><br><br><br>&nbsp;&nbsp;&nbsp; &lt;option&nbsp;&nbsp; value="SP"&gt;SP&lt;/option&gt;<br><br><br><br>&lt;/select&gt;<br><br><br><br>选择显示行 &lt;tr id="Reftr" name="Reftr" style="display:none"&gt;也可以用&lt;div id=&#8221;Resftr&#8221; &gt;&lt;/div&gt; <br><br><br><br>29. 调试参数显示规范<br><br><br><br>Response.Write session("LoginCompanyId")&amp;","&amp;Date&amp;","&amp;Request.Form("Owner")&amp;","&amp;Request.Form("Name")&amp;<br>//注意最后没有"只是在，之间用","&nbsp;&nbsp;&nbsp; 其他用&amp;&amp;引用即可<br>//也就是说只是用&nbsp;&nbsp; &amp;","&amp;&nbsp;&nbsp; 中间加一个逗号，其他的该怎么写，就怎么写<br>Response.End<br><br><br><br>30. 从数据库填充下拉菜单<br><br><br><br>&lt;%<br>sql = "select * from BigClass"<br>rs.open sql,conn,1,1<br>%&gt;<br><br><br><br>&lt;select name="BigClassName" size="1"&gt;<br>&lt;option selected value="&lt;%=trim(rs("BigClassName"))%&gt;"&gt;&lt;%=trim(rs("BigClassName"))%&gt;&lt;/option&gt;<br><br><br><br>&lt;%<br>rs.movenext //不能少，否则重复<br>do while not rs.eof<br>%&gt;<br><br><br><br>&lt;option value="&lt;%=trim(rs("BigClassName"))%&gt;"&gt;&lt;%=trim(rs("BigClassName"))%&gt;&lt;/option&gt;<br>&lt;%<br>rs.movenext<br>loop<br>rs.close<br>%&gt;<br>&lt;/select&gt; <br><br>//以下是新方法<br>&lt;select name="SrcNo"&gt;<br>&lt;%do while not SrcRs.eof%&gt;<br>&lt;option value="&lt;%=trim(SrcRs("Cost"))%&gt;" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;% <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if Trim(SrcComRs("SrcNo")) = Trim(SrcRs("Cost")) then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.Write "selected" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&lt;%=trim(SrcRs("Cost"))%&gt;<br>&lt;/option&gt;<br>&lt;%<br>&nbsp;&nbsp;&nbsp; SrcRs.movenext<br>&nbsp;&nbsp;&nbsp;&nbsp; loop<br>&nbsp;&nbsp;&nbsp;&nbsp; SrcRs.close<br>%&gt;<br>&lt;/select&gt; <br>
<img src ="http://www.blogjava.net/9611/aggbug/112103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-04-20 08:50 <a href="http://www.blogjava.net/9611/archive/2007/04/20/112103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怀念从前之----ASP开发技巧集锦二</title><link>http://www.blogjava.net/9611/archive/2007/04/20/112102.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Fri, 20 Apr 2007 00:49:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/04/20/112102.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/112102.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/04/20/112102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/112102.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/112102.html</trackback:ping><description><![CDATA[11. 报错并返回<br>if rs.bof and rs.eof then&nbsp;&nbsp; &#8216;还是有问题<br>response.write"&lt;SCRIPT language=JavaScript&gt;alert('找不到！');"<br>response.write"javascript:history.go(-1)&lt;/SCRIPT&gt;"<br>end if<br>－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br>这个是跳转。<br>&lt;script language="javascript"&gt;<br>alert('&lt;%=intOperationInfo%&gt;');<br>window.navigate('ChangePwd.asp');<br>&lt;/Script&gt;<br>12. 从VBS到JS，混用<br>&nbsp;&nbsp;&nbsp; &lt;%<br>&nbsp;&nbsp;&nbsp; dim checkpwdconfig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; checkpwdconfig=split(addation,"/")<br>&nbsp;&nbsp;&nbsp; %&gt;<br>&nbsp;&nbsp;&nbsp; &lt;script language="javascript"&gt;<br>&nbsp;&nbsp;&nbsp; alert("&lt;%=checkpwdconfig(0)%&gt;")<br>&nbsp;&nbsp;&nbsp; &lt;/script&gt; <br>13. 弹出窗口<br>&lt;script language=javascript&gt;<br>function openaddnew()<br>{<br>subWindow=window.open("../Edit/PasswordConfigEdit.asp?method=new",'','scrollbars=yes,left=120,top=60,height=250,width=500,menubar=no,location=no,toolbar=no,resizable=yes','')<br>subWindow.opener = this;<br>}<br>&lt;/script&gt;<br>用一个连接调用：<br>&lt;a href=""＃""&gt;请修改密码 onClick="openaddnew()"&lt;/a&gt;<br>图片调用：<br>&lt;img name=submit1 src="../button_new&lt;%=session("languageid")%&gt;.gif"&nbsp;&nbsp; onClick="openaddnew()"&gt;<br>14. 分页<br>&lt;!--#include file="conn.asp"--&gt;<br>&lt;%<br>if request("pageno")&lt;&gt;"" then<br>&nbsp;&nbsp;&nbsp;&nbsp; pageno=int(request("pageno"))<br>else<br>pageno=1<br>end if<br>sql="select * from news where [language]='中文' and bigclassname='新闻' order by id desc"<br>Set rs= Server.CreateObject("ADODB.Recordset")<br>rs.open sql,conn,1,3<br>rs.pagesize=20<br>if rs.eof then<br>pageno=0<br>else <br>rs.absolutepage=pageno<br>end if<br>%&gt;<br>==========================================<br>共&lt;%=rs.recordcount%&gt;条,&lt;%=pageno%&gt;/&lt;%=int(rs.pagecount)%&gt;页,每页&lt;%=rs.pagesize%&gt;条<br>&nbsp;&nbsp; &lt;a href="manage.asp?pageno=1"&gt;首页&lt;/a&gt;<br>&nbsp;&nbsp; &lt;%if pageno&gt;1 then%&gt;<br>&nbsp;&nbsp; &lt;a href="manage.asp?pageno=&lt;%=int(pageno)-1%&gt;"&gt;上一页&lt;/a&gt;<br>&nbsp;&nbsp; &lt;%<br>&nbsp;&nbsp; end if<br>&nbsp;&nbsp; if int(pageno)&lt;&gt;int(rs.pagecount)then<br>%&gt;<br>&nbsp;&nbsp; &lt;a href="manage.asp?pageno=&lt;%=int(pageno+1)%&gt;"&gt;下一页&lt;/a&gt;<br>&nbsp;&nbsp; &lt;%end if%&gt;<br>&nbsp;&nbsp; &lt;a href="manage.asp?pageno=&lt;%=int(rs.pagecount)%&gt;"&gt;尾页&lt;/a&gt;<br>&nbsp;&nbsp; &lt;%rs.close%&gt;<br>&nbsp;&nbsp; &lt;%<br>call CloseConn()<br>%&gt;<br>15. 数据库更新<br>&nbsp;&nbsp; sql="select * from [user] where username='"&amp;request("username")&amp;"'"<br>&nbsp;&nbsp; rs.Open sql,Conn,1,3<br>&nbsp;&nbsp; rs("usermail")=Request("usermail")<br>&nbsp;&nbsp; rs("userhome")=Request("userhome"))<br>&nbsp;&nbsp; rs.update<br>&nbsp;&nbsp; rs.close<br>16. 关闭独立窗口<br>&lt;head&gt;<br>&lt;OBJECT id=closes type="application/x-oleobject" classid="clsid:adb880a6-d8ff- 11cf-9377-00aa003b7a11"&gt;&lt;param name="Command" value="Close"&gt;<br>&lt;/object&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;input type="button" value="点击我关闭窗口" onclick="closes.Click();"&gt;<br>&lt;/body&gt;<br>17. 极细表格<br>&lt;table border="1" cellpadding="0" cellspacing="0" width="32" height="32" bordercolorlight="#000000" bordercolordark="#FFFFFF"&gt;<br>&lt;tr&gt;<br>&lt;td&gt;　&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;/table&gt; <br>18. 几个正则表达式<br>Require : /.+/,&nbsp;&nbsp;&nbsp;&nbsp;<br>Email : /^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&amp;_~`@[\]\':+!]*([^&lt;&gt;\"\"])*$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>Currency : /^\d+(\.\d+)?$/, <br>Number : /^\d+$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>Zip : /^[1-9]\d{5}$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>QQ : /^[1-9]\d{4,8}$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>Integer : /^[-\+]?\d+$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>Double : /^[-\+]?\d+(\.\d+)?$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>English : /^[A-Za-z]+$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>Chinese :&nbsp;&nbsp; /^[\u0391-\uFFE5]+$/,&nbsp;&nbsp;&nbsp;&nbsp;<br>UnSafe :/^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&amp;\*\.\(\)\[\]\{\}&lt;&gt;\?\\\/\'\"]*)|.{0,5})$|\s/,<br>19. Left应用（控制字数）<br>function title(str) <br>if len(trim(str))&gt;=28 then <br>title=left(trim(str),27)&amp;"..." <br>else <br>title=trim(str) <br>end if <br>end function <br>20. 判断浏览器<br>&lt;SCRIPT LANGUAGE="javascript1.2"&gt; <br>&lt;!--// <br>if (navigator.appName == 'Netscape') <br>var language = navigator.language; <br>else <br>var language = navigator.browserLanguage; <br>if (language.indexOf('en') &gt; -1) document.location.href = 'en/index.asp'; <br>else if (language.indexOf('zh') &gt; -1) document.location.href = 'cn/index.asp'; <br>else <br>document.location.href = 'cn/index.asp'; <br>// End --&gt; <br>&lt;/script&gt; <br>
<img src ="http://www.blogjava.net/9611/aggbug/112102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-04-20 08:49 <a href="http://www.blogjava.net/9611/archive/2007/04/20/112102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怀念从前之-------ASP开发技巧集锦一</title><link>http://www.blogjava.net/9611/archive/2007/04/20/112101.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Fri, 20 Apr 2007 00:48:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/04/20/112101.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/112101.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/04/20/112101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/112101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/112101.html</trackback:ping><description><![CDATA[<p>1. 几个常用函数 <br>Round(pi, 2) 四舍五入 <br><br>FormatNumber(k,4) ' 把 k 格式化为带四位小数点的数。 <br>eg. 如果k =20000则显示为20,000.00；如果把formatnumber(k,0)则为20,000 <br><br>Replace(expression,find,replacewith) '返回一字符串，其中指定的子串已被另一个子串替换 <br><br>Left(String,Length) '返回指定数目的从字符串的左边算起的字符串。 <br><br>Split(expression[, delimiter[, count[, start]]]) '返回基于 0 的一维数组，其中包含指定数目的子字符串。 <br>eg. 常用这个 Split(String,[delimiter]) ' 用delimiter(用于标识子字符串界限的字符)来划分字符串 <br><br>Instr(String1,String2) '返回某字符串在另一字符串中第一次出现的位置 <br>eg1. if instr(addation,"密码配置表")&lt;&gt;0 then '说明存在 <br>eg2. if instr(str,&#8221;AP&#8221;) &gt;0 不好区分str = (AP,AP&amp;AC),此时只要变为（&#8217;AP&#8217;,&#8217;AP&amp;AC&#8217;）,再用instr(str,&#8221;&#8217;AP&#8217;&#8221;) <br>2. 弹出窗口Pick值 <br><br>function pickupSP(spdisid,pjnum,pdcode) <br>{ <br>window.opener.&lt;%=theForm%&gt;.RefNum&lt;%=Spid%&gt;.value=spdisid; <br>window.opener.&lt;%=theForm%&gt;.LineS&lt;%=Spid%&gt;.value=pjnum; <br>window.opener.&lt;%=theForm%&gt;.kokey&lt;%=Spid%&gt;.value=pdcode; <br>window.close(); <br>} <br>3. ASP控制图片显示的大小（等比例缩放） <br>&lt;HTML&gt; <br>&lt;HEAD&gt; <br>&lt;TITLE&gt; New Document &lt;/TITLE&gt; <br>&lt;script language="JavaScript"&gt; <br>&lt;!-- <br>var flag=false; <br>function DrawImage(ImgD){ <br>var image=new Image(); <br>image.src=ImgD.src; <br>if(image.width&gt;0 &amp;&amp; image.height&gt;0){ <br>flag=true; <br>if(image.width/image.height&gt;= 164/112){ <br>if(image.width&gt;164){ <br>ImgD.width=164; <br>ImgD.height=(image.height*164)/image.width; <br>}else{ <br>ImgD.width=image.width; <br>ImgD.height=image.height; <br>} <br>ImgD.alt=image.width+"x"+image.height; <br>} <br>else{ <br>if(image.height&gt;112){ <br>ImgD.height=112; <br>ImgD.width=(image.width*112)/image.height; <br>}else{ <br>ImgD.width=image.width; <br>ImgD.height=image.height; <br>} <br>ImgD.alt=image.width+"x"+image.height; <br>} <br>} <br>} <br>//--&gt; <br>&lt;/script&gt; <br>&lt;/HEAD&gt; <br>&lt;BODY&gt; <br>&lt;a href="./img.jpg" target="_blank"&gt;&lt;img src="./img.jpg" border="0" width="164" height="112" onload="javascript:DrawImage(this);"&gt;&lt;/a&gt; <br>&lt;/BODY&gt; <br>&lt;/HTML&gt; <br>4. ASP中对数据库表的操作(Insert/Update/Delete),可使用事务处理,并支持多事务处理. <br>在ASP的数据库对象链接对象中,提供了一下属性: <br>BeginTrans 事务开始 <br>CommitTrans 事务提交 <br>RollbackTrans 事务回滚 <br>&lt;% <br>On Error Resume Next &#8217;错误发生后继续处理 <br>'Asp中使用事务 <br>Set conn=Server.CreateObject("ADODB.Connection") <br>conn.Open "course_dsn","course_user","course_password" <br>conn.begintrans '开始事务 <br>sql="delete from user_info" <br>set rs=server.createobject("adodb.recordset") <br>rs.open sql,conn,3,3 <br>if conn.errors.count&gt;0 then '有错误发生 <br>conn.rollbacktrans '回滚 <br>set rs=nothing <br>conn.close <br>set conn=nothing <br>response.write "交易失败，回滚至修改前的状态！" <br>response.end <br>else <br>conn.committrans '提交事务 <br>set rs=nothing <br>conn.close <br>set conn=nothing <br>response.write "交易成功！" <br>response.end <br>end if <br>%&gt; <br>在ASP中,不提供事务的结束,BeginTrans只作用于自己的域,类似于变量声明一样,如果在函数体内BeginTrans,则事物只作用于本函数体,如果BeginTrans在函数体外,处于页面级,则事务的作用域从BeginTrans开始,到页面的结束均处于事务的管理状态下. <br>5. EasySales数据库操作 <br><br>dim objCon,objRst,objsql <br>dim companyid <br>Set objCon = Server.CreateObject("ADODB.Connection") <br>objCon.Open SYSDNS,SYSNAME,SYSPASSWORD <br>Set objRst = Server.CreateObject("ADODB.RecordSet") <br>objsql="select * from PasswordConfig where companyid='"&amp;session("CompanyID")&amp;"'" <br>objRst.Open objsql,objCon,1,3 <br>6. html格式邮件发送 <br>HTML = "&lt;html&gt;" <br>HTML = HTML &amp; "&lt;head&gt;" <br>HTML = HTML &amp; "&lt;title&gt;Sending CDONTS Email Using HTML&lt;/title&gt;" <br>HTML = HTML &amp; "&lt;link href="../cn/new.css" rel="stylesheet" type="text/css"&gt;" <br>HTML = HTML &amp; "&lt;/head&gt;" <br>HTML = HTML &amp; "&lt;body bgcolor=""FFFFFF""&gt;" <br>HTML = HTML &amp; "&lt;p&gt;&lt;font size=7&gt;" <br>HTML = HTML &amp; "This is a test mail in html&lt;br&gt;" <br>HTML = HTML &amp; "Mail content here ...&lt;/font&gt;&lt;/p&gt;" <br>HTML = HTML &amp; "&lt;/body&gt;" <br>HTML = HTML &amp; "&lt;/html&gt;" <br>dim StrRecEmail,StrPosEmail,StrSubject,StrBody <br>StrRecEmail=request("email") <br>StrPosEmail="yufh@alleasy.com.cn" <br>StrSubject="资料下载通知函" <br>StrBody=HTML <br>7. input是下划线 <br>style="BORDER-RIGHT: #f7f7f7 0px solid; BORDER-TOP: #f7f7f7 0px solid; FONT-SIZE: 9pt; BORDER-LEFT: #f7f7f7 0px solid; WIDTH: 110px; BORDER-BOTTOM: #c0c0c0 1px solid; HEIGHT: 16px; BACKGROUND-COLOR: #f7f7f7" <br>8. Session &amp; Cookie <br>写入一个SESSION：　 <br>　　 Session["username"])="aa"; <br>　　 Session("username")="aa" 　　 <br>　　 读取一个SESSINN： 　　 <br>　　 string username= Session["username"];　 <br>　　 dim username=Session("username")　　 <br>　　 Cookie与此用法大致相同 <br>9. 几个VB中的常数 <br>下列常数由 Visual Basic for Applications 中的类型库定义，可用来在代码中的任何地方代替实际值： <br>常数 等于 描述 <br>vbCrLf Chr(13) + Chr(10) 回车符与换行符结合 <br>vbCr Chr(13) 回车符 <br>vbLf Chr(10) 换行符 <br>vbNewLine Chr(13) + Chr(10) 平台指定的新行字符；适用于当前平台 <br>vbNullChar Chr(0) 值为 0 的字符 <br>vbNullString 值为 0 的字符串 用来调用外部过程；与长度为零的字符串 ("") 不同 <br>vbObjectError -2147221504 用户定义的错误号应当大于该值，例如： <br>Err.Raise Number = vbObjectError + 1000 <br>vbTab Chr(9) Tab 字。 <br>vbBack Chr(8) 退格字符 <br><br>10. 按钮为不可用 <br>&lt;%if rsView.eof and rsView.bof then %&gt; &#8216; 这里有个大问题，下文再说 <br>&lt;input name="submit" type='submit' value='对选定用户解鎖' disabled&gt; <br>&lt;%else%&gt; <br>&lt;input name="submit" type='submit' value='对选定用户解鎖' &gt; <br>&lt;/td&gt; <br>&lt;%end if%&gt; <br></p>
<img src ="http://www.blogjava.net/9611/aggbug/112101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-04-20 08:48 <a href="http://www.blogjava.net/9611/archive/2007/04/20/112101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP高级编程【分享】</title><link>http://www.blogjava.net/9611/archive/2007/02/06/98424.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Tue, 06 Feb 2007 12:35:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2007/02/06/98424.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/98424.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2007/02/06/98424.html#Feedback</comments><slash:comments>20</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/98424.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/98424.html</trackback:ping><description><![CDATA[
		<p>
				<br />
				<font color="#0000ff">前言</font>
				<br />JSP是一种如日中天的新型Internet/Intranet开发语言，可以在多种操作系统平台和多种Web服务器下使用。本书从最基础的JSP开发开始，循序渐进地介绍了JSP 开发技术，并涵盖了许多高级主题，如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读，也适合具有一定JSP基础的开发人员深入研究使用。 </p>
		<p>前 言 JSP是SUN公司推出的一种新型的Internet/Intranet开发语言，和前一代Internet/Intranet开发语言(ASP、PHP)相比，JSP在以下几个方面有了重大的突破： 1) 通过JSP的扩展标签库和JavaBeans功能，网站逻辑和网站界面可以完美地分离。 2) 使用Enterprise JavaBeans，可以轻松地在JSP开发的Web中实现事务、安全、会话等等企业级应用所需要的功能。 3) JDBC2.0提供了不同的数据库产品无关的数据库连接方式，更重要的是，数据库连接池提供了一种比普通的数据库连接方式效率高得多的连接方式。 JSP的语法基本上和Java是相同的，有Java基础的读者可以很快学会如何使用JSP，而没有Java语言基础的读者，只要循序渐进地阅读本书，一样可以成为JSP编程的高手。本书主要分为两个部分：第一部分为JSP基础部分。通过这一部分的学习，读者可以掌握JSP的基本使用方法，学会如何使虽JSP来开发一般的中、小型Web应用。这一部分使用常见的Apache Group的Tomcat作为JSP引擎的例子。第二部分为JSP高级应用部分。这一部分主要讲述如何使用JSP进行大型Web应用的开发，为了方便读者学习，本书还专门讲述了SUN公司的J2SDKEE和B趴公司的Webloglc应用服务器的基本使用方法。 JSP可以在各种操作系统和各种Web服务器下使用，其代码基本上不需要任何改动就可以使用。本书为了适应大多数读者的情况，使用了Windows操作系统作为例子，具体的试验平台如下： Windows 2000Advanced Server Apachel.3.14 Intemetln允rmation Server 5.0 Tomcat 3.1 J2SDKEE l.2 BEA Wiblogic 5.1 除了上述平台，书中的代码还在如下平台进行了测试： RedhatUnux 6.1 Apache l.3.12 TOmcat 3.1 BEA Weblogic 4.51 数据库系统主要使用了Microsoft SQL Server 7.0，部分代码使用了MySQL。<br /><br /><br />目录<br />第一部分   JSP入门<br />第1章   概述 <br />1.1   Java技术 <br />1.1.1   Java技术的发展 <br />1.1.2   JavaBeans <br />1.1.3   JDBC <br />1.1.4   J2EE <br />1.1.5   EJB <br />1.1.6   Java Servlet <br />1.2   JSP技术 <br />1.2.1   JSP技术概述 <br />1.2.2   JSP的优势及与其他Web开发工具的比较 <br />1.3   JSP开发Web的几种主要方式 <br />1.3.1   直接使用JSP <br />1.3.2   JSP+JavaBeans <br />1.3.3   JSP+JavaBeans+Servlet <br />1.3.4   J2EE开发模型 <br />1.4   本书用到的软件及获取 <br />第2章  预备知识 <br />2.1   Java程序设计基础 <br />2.1.1   Java语言规则 <br />2.1.2   Java变量和函数 <br />2.1.3   子类 <br />2.1.4   this和super <br />2.1.5   类的类型 <br />2.1.6   抽象类 <br />2.1.7   接口 <br />2.1.8   包 <br />2.2   JavaBeans <br />2.2.1   JavaBeans的属性 <br />2.2.2   JavaBeans的事件 <br />2.2.3   持久化 <br />2.2.4   用户化 <br />2.3   Java Servlet <br />2.3.1   HTTP Servlet API <br />2.3.2   系统信息 <br />2.3.3   传送HTML信息 <br />2.4   SQL语言 <br />2.4.1   SQL子类型 <br />2.4.2   SQL语言的具体命令和使用 <br />2.5   JDBC <br />2.5.1   什么是 JDBC <br />2.5.2   JDBC 产品 <br />2.5.3   连接概述 <br />2.5.5   一个简单的例子 <br />第3章   JSP开发平台的建立：Tomcat <br />3.1   Tomcat的安装和直接使用 <br />3.2   Tomcat和Apache的配合 <br />3.3   Tomcat和IIS的配合 <br />3.4   Tomcat的配置和常见问题 <br />3.4.1   Tomcat的主配置文件：server.xml <br />3.4.2   Windows下代码保护的问题 <br />3.4.3   Apache、IIS和Tomcat协作时工作<br />目录的添加 <br />3.4.4   设定Tomcat作为Windows的服务而启动 <br />3.4.5   在Tomcat中建立新的Web应用程序 <br />第4章   JSP的语法和语义 <br />4.1   通用的语法规则 <br />4.1.1   元素的语法规则 <br />4.1.2   JSP中的相对路径 <br />4.2   注释 <br />4.3   指令 <br />4.3.1   page指令 <br />4.3.2   include指令 <br />4.3.3   taglib指令 <br />4.4   内置对象 <br />4.5   脚本元素 <br />4.5.1   声明 <br />4.5.2   表达式 <br />4.5.3   脚本代码 <br />4.6   动作 <br />4.6.1   id和scope属性 <br />4.6.2   标准动作 <br />第5章   作为XML的JSP <br />5.1   为什么要使用XML相容的语法形式 <br />5.2   关于文本类型的语法 <br />5.2.1   jsp:root元素 <br />5.2.2   公共标识符 <br />5.3   指令 <br />5.3.1   page指令 <br />5.3.2   include指令 <br />5.3.1   taglib指令 <br />5.4   脚本元素 <br />5.4.1   声明 <br />5.4.2   脚本代码 <br />5.4.3   表达式 <br />5.5   如何将一个普通的JSP文件转换为一个XML<br />文档 <br />5.6   JSP1.1的DTD文件 <br />第6章   JSP基础实例 <br />6.1   第一个JSP程序—HelloWorld! <br />6.2   注释的使用 <br />6.3   脚本元素 <br />6.3.1   声明 <br />6.3.2   表达式 <br />6.3.3   脚本代码 <br />6.4   page指令 <br />6.4.1   import <br />6.4.2   session <br />6.4.3   错误处理 <br />6.5   包含其他文件 <br />6.6   使用JavaBean <br />6.7   内置对象 <br />6.7.1   用request对象获取客户端的数据 <br />6.7.2   用response对象向客户端发送信息 <br />6.7.3   其他内置对象 <br />6.8   &lt;jsp:forward&gt; <br />6.9   使用插件 <br />6.10   使用session对象 <br />6.10.1   会话的概念 <br />6.10.2   session对象可用的方法和属性 <br />6.10.3   session对象的基本例子 <br />6.10.4   利用session制作一个购物车 <br />6.10.5   JavaBeans的作用域 <br />6.10.6   利用JavaBeans制作的购物车 <br />6.11   使用application对象 <br />6.11.1   应用的概念 <br />6.11.2   application对象可用的方法和属性 <br />6.11.3   application对象内包含的系统信息 <br />6.11.4   利用application建立一个简单的聊天室 <br />第7章  用JSP实现常见的Web应用 <br />7.1   常见的Web应用及分析 <br />7.1.1   留言板、论坛和社区 <br />7.1.2   聊天室 <br />7.1.3   搜索引擎 <br />7.1.4   电子商务 <br />7.1.6   后台管理系统 <br />7.2   留言板 <br />7.2.1   功能分析 <br />7.2.2   功能实现和技术要点 <br />7.2.3   代码和分析 <br />7.3   进一步完善的留言板 <br />7.3.1   功能分析 <br />7.3.2   功能实现和技术要点 <br />7.3.3   代码和分析 <br />7.4   聊天室 <br />7.4.1   功能实现和技术要点 <br />7.4.2   代码和分析 <br />7.5   下一步 <br />第二部分   高级JSP技术<br />第8章 JSP开发平台的搭建：J2EE <br />8.1   J2SDKEE的安装和使用 <br />8.1.1   软硬件的支持 <br />8.1.2   安装 <br />8.2   J2SDKEE的配置 <br />8.2.1   JDBC的配置 <br />8.2.2   事务处理 <br />8.2.3   服务的端口号 <br />8.2.4   日志文件 <br />8.2.5   安全 <br />8.2.6   钝化发生的内存极限 <br />8.2.7   JNDI服务器主机 <br />8.2.8   HTTP服务的发布目录 <br />8.3   WebLogic的安装和使用 <br />8.3.1   软硬件要求 <br />8.3.2   安装和启动 <br />8.4   WebLogic的配置 <br />8.4.1   系统级参数的设置 <br />8.4.2   将WebLogic作为HTTP服务器使用 <br />8.4.3   使用ISAPI桥连接WebLogic和IIS <br />8.4.4   WebLogic配置示例 <br />第9章  扩展JSP标签 <br />9.1   概述 <br />9.1.1   扩展标签的作用 <br />9.1.2   如何开发扩展标签 <br />9.1.3   简单的扩展标签 <br />9.1.4   包含内容处理的扩展标签 <br />9.1.5   能够协作的扩展标签 <br />9.1.6   定义了脚本变量的扩展标签 <br />9.2   标签处理类的开发 <br />9.2.1   接口和基类 <br />9.2.2   开发 <br />9.3   标签库文件 <br />9.3.1   taglib <br />9.3.2   tag <br />9.4   定位一个tld文件 <br />9.4.1   在Web.xml中定位一个tld文件 <br />9.4.2   直接在JSP文件中定位tld文件 <br />9.5   扩展标签实例 <br />9.5.1   得到父标签的数据 <br />9.5.2   TestTag类 <br />9.5.3   Title类 <br />9.5.4   Data类 <br />9.5.5   TLD文件 <br />9.5.6   在JSP中使用扩展标签 <br />第10章   Enterprise JavaBeans <br />10.1   Java服务器端组件标准—EJB <br />10.1.1   EJB和JavaBeans <br />10.1.2   EJB的开发与使用中的角色 <br />10.2   Session Bean <br />10.2.1   Session Bean的状态管理模式 <br />10.2.2   Session Bean的生命周期 <br />10.3   Entity Bean <br />10.3.1   Entity Bean的特性 <br />10.3.2   Entity Bean的生命周期 <br />10.4   EJB的开发 <br />10.4.1   Enterprise JavaBeans的实际处理文件 <br />10.4.2   实现EJBObject文件 <br />10.4.3   实现EJBHome文件 <br />10.4.4   生成ejb-jar.xml文件 <br />10.4.5   打包生成JAR文件 <br />10.5   EJB的部署—J2SDKEE <br />10.5.1   使用deploytool打包EJB <br />10.5.2   使用deploytol部署EJB <br />10.6   EJB的部署—BEA WebLogic <br />10.6.1   生成可部署的ejb-jar包 <br />10.6.2   部署WbLogic的ejb-jar包 <br />10.7   使用EJB <br />10.7.1   本地访问EJB <br />10.7.2   远程访问EJB <br />10.8   JSP和EJB <br />10.9   EJB开发实例—电子商务应用 <br />10.9.1   EJB的实现文件—TestCartEJB <br />10.9.2   实现Home接口TestCartHome <br />10.9.3   实现远程Object接口TestCart <br />10.9.4   EJB的Web组件TestCartWebImp <br />10.9.5   JSP文件 <br />10.9.6   实例的内部运行逻辑 <br />第11章   其他高级功能 <br />11.1   JDBC2.0和JDBC数据库连接池 <br />11.1.1   JDBC2.0新功能概述 <br />11.1.2   结果集增强功能 <br />11.1.3   批处理更新 <br />11.1.4   对Java对象的持久性 <br />11.1.5   数据库连接池使用实例 <br />11.2   文件上载 <br />11.2.1   实现机理 <br />11.2.2   文件上载实例 <br />第12章   JSP高级应用实例：网上书店 <br />12.1   概述 <br />12.2   扩展标签的使用 <br />12.2.1   数据集作用的BookList标签 <br />12.2.2   让数据循环输出的Books标签 <br />12.2.3   输出数据的标签 <br />12.2.4   控制页面前进、后退的标签 <br />12.2.5   测试标签 <br />12.3   EJB及其Web组件 <br />12.3.1   ShoppingCart <br />12.3.2   Books <br />附录A   JSP应用实例：网上教育代码 <br />附录B   JavaServer Pages白皮书 <br />附录C   常用JSP相关网址 </p>
		<p>本次分享的为书籍版，非视频，如有需要请留下email。我将会尽快发出！</p>
<img src ="http://www.blogjava.net/9611/aggbug/98424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2007-02-06 20:35 <a href="http://www.blogjava.net/9611/archive/2007/02/06/98424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>无法把Serv-U的域置于在线问题解决</title><link>http://www.blogjava.net/9611/archive/2006/11/07/79536.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Tue, 07 Nov 2006 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2006/11/07/79536.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/79536.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2006/11/07/79536.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/79536.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/79536.html</trackback:ping><description><![CDATA[
		<font size="2">问题: <br />无法把Serv-U的域置于在线<br />  我用的是Serv-U 6.0.0.1，安装完成后设置了一个域，点击右边的一个[将域置于在线]的按钮，却怎么也不管用，<br /><br />解决办法:<br /><br />首先确认 serv-U 是用的21 端口. 然后在命令字符下 键入netstat -an 检查是否已经有21 端口被占用了.<br />如果有 ,则检查 是那个进程占用21端口..<br />一般情况下都是 iis 自带的ftp 占用了21端口,只需要将 iis中的 ftp 卸载掉就可以了..<br /><br />如果想保留,则只要换端口就可以了..</font>  <br />Server-U下载地址:<a href="http://www.serv-u.com/dn.asp"><br />http://www.serv-u.com/dn.asp</a><img src ="http://www.blogjava.net/9611/aggbug/79536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2006-11-07 10:34 <a href="http://www.blogjava.net/9611/archive/2006/11/07/79536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【分享】Hibernate视频分享</title><link>http://www.blogjava.net/9611/archive/2006/10/17/75557.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Tue, 17 Oct 2006 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2006/10/17/75557.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/75557.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2006/10/17/75557.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/75557.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/75557.html</trackback:ping><description><![CDATA[
		<p>Hibernate视频分享:</p>
		<p>面向对象: <br />.了解Java语言<br />.了解SQL及JDBC编程</p>
		<p>课程内容:<br />.Java对象持久化技术概述<br />.创建Hibernate应用<br />.映射一对多关联关系<br />.域对象在持久化层的状态<br />.Hibernate检索策略<br />.Hibernate检索方式<br />.数据库事务与并发<br />.映射组成关系<br />.Hibernate与Struts集成<br />.Hibernate与EJB集成</p>
		<p>下载地址: <a href="http://www.javathinker.org/essay/javaschool_hibernate.rar" target="_blank">http://www.javathinker.org/essay/javaschool_hibernate.rar</a></p>
<img src ="http://www.blogjava.net/9611/aggbug/75557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2006-10-17 10:51 <a href="http://www.blogjava.net/9611/archive/2006/10/17/75557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转贴】Microsoft .NET 框架常见问题 </title><link>http://www.blogjava.net/9611/archive/2006/10/17/75516.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Tue, 17 Oct 2006 00:13:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2006/10/17/75516.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/75516.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2006/10/17/75516.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/75516.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/75516.html</trackback:ping><description><![CDATA[
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp">
						<font color="#3939d8">http://www.microsoft.com/china/msdn/archives/library/faq111700.asp</font>
				</a>
		</p>
		<p>Microsoft Corporation</p>
		<p>2000 年 12 月</p>
		<p>
				<b>摘要：</b>本文包含有关 Microsoft .NET 和 Microsoft .NET 框架的常见问题。</p>
		<h4>目录</h4>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">概念问题</font>
				</a>
				<br />
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_technical">
						<font color="#3939d8">运行时技术问题</font>
				</a>
				<br />   <a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_term"><font color="#3939d8">术语</font></a><br />   <a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_assembly"><font color="#3939d8">程序集</font></a><br />   <a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_deploy"><font color="#3939d8">应用程序部署及隔离</font></a><br />   <a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_garbage"><font color="#3939d8">垃圾回收</font></a><br />   <a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_remote"><font color="#3939d8">远程处理</font></a><br />   <a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_interop"><font color="#3939d8">互操作性</font></a><br />   <a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_security"><font color="#3939d8">安全性</font></a></p>
		<h2>
				<a name="faq111700_concepts">
				</a>概念问题</h2>
		<ul type="disc">
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts01">
								<font color="#3939d8">什么是 .NET？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts02">
								<font color="#3939d8">什么是 .NET 框架？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts03">
								<font color="#3939d8">.NET 框架是否只适用于创建 Web 站点的用户？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts04">
								<font color="#3939d8">从何处可以获得 .NET 框架 SDK？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts05">
								<font color="#3939d8">.NET 框架可以运行于哪些平台？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts06">
								<font color="#3939d8">.NET 框架支持哪些编程语言？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts07">
								<font color="#3939d8">.NET 框架和 COM+ 服务之间是什么关系？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts08">
								<font color="#3939d8">.NET 框架和 DCOM 之间是什么关系？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts09">
								<font color="#3939d8">.NET 框架是否仅仅是 Windows DNA 的新名称？</font>
						</a>
				</li>
		</ul>
		<h2>
				<a name="faq111700_technical">
				</a>运行时技术问题</h2>
		<h3>
				<a name="faq111700_term">
				</a>术语</h3>
		<ul type="disc">
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_term01">
								<font color="#3939d8">什么是公共语言运行时 (CLR)？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_term02">
								<font color="#3939d8">什么是公共类型系统 (CTS)？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_term03">
								<font color="#3939d8">什么是公共语言规范 (CLS)？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_term04">
								<font color="#3939d8">什么是 Microsoft 中间语言 (MSIL)？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_term05">
								<font color="#3939d8">什么是托管代码和托管数据？</font>
						</a>
				</li>
		</ul>
		<h3>
				<a name="faq111700_assembly">
				</a>程序集</h3>
		<ul type="disc">
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_assembly01">
								<font color="#3939d8">什么是程序集？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_assembly02">
								<font color="#3939d8">什么是专用程序集和共享程序集？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_assembly03">
								<font color="#3939d8">如果我想创建一个共享程序集，在标记和管理密钥对方面是否需要额外的开销？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_assembly04">
								<font color="#3939d8">名称空间与程序集名称之间有什么区别？</font>
						</a>
				</li>
		</ul>
		<h3>
				<a name="faq111700_deploy">
				</a>应用程序部署和隔离</h3>
		<ul type="disc">
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_deploy01">
								<font color="#3939d8">部署 .NET 应用程序时可以使用哪些选项？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_deploy02">
								<font color="#3939d8">如果我已经编写了一个程序集，并希望在多个应用程序中使用它，我应该在何处部署它？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_deploy03">
								<font color="#3939d8">如何才能看到在全局程序集缓存中安装了哪些程序集？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_deploy04">
								<font color="#3939d8">什么是应用程序域？</font>
						</a>
				</li>
		</ul>
		<h3>
				<a name="faq111700_garbage">
				</a>垃圾回收</h3>
		<ul type="disc">
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_garbage01">
								<font color="#3939d8">什么是垃圾回收？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_garbage02">
								<font color="#3939d8">非确定性垃圾回收是如何影响代码的？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_garbage03">
								<font color="#3939d8">是否能够避免使用可作为垃圾回收的堆？</font>
						</a>
				</li>
		</ul>
		<h3>
				<a name="faq111700_remote">
				</a>远程处理</h3>
		<ul type="disc">
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_remote01">
								<font color="#3939d8">如何在公共语言运行时中进行进程内和进程间通讯？</font>
						</a>
				</li>
		</ul>
		<h3>
				<a name="faq111700_interop">
				</a>互操作性</h3>
		<ul type="disc">
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_interop01">
								<font color="#3939d8">是否可以在 .NET 框架程序中使用 COM 对象？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_interop02">
								<font color="#3939d8">是否可以在 COM 程序中使用 .NET 框架组件？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_interop03">
								<font color="#3939d8">是否可以在 .NET 框架程序中使用 Win32 API？</font>
						</a>
				</li>
		</ul>
		<h3>
				<a name="faq111700_security">
				</a>安全性</h3>
		<ul type="disc">
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_security01">
								<font color="#3939d8">如何使代码与安全系统协调工作？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_security02">
								<font color="#3939d8">为什么在网络共享驱动器中运行代码时会发生安全异常？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_security03">
								<font color="#3939d8">如何编写代码，使它在安全系统停止该代码时运行？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_security04">
								<font color="#3939d8">如何管理个人或企业计算机的安全性？</font>
						</a>
						<br />
						<br />
				</li>
				<li>
						<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_security05">
								<font color="#3939d8">基于证据的安全性是如何与 Windows 2000 安全性配合工作的？</font>
						</a>
				</li>
		</ul>
		<h2>概念问题</h2>
		<h4>
				<a name="faq111700_concepts01">
				</a>什么是 .NET？ </h4>
		<p>简单地说，Microsoft® .NET 是 Microsoft 以服务的方式递交软件的一种策略。有关完整信息，请参阅有关该主题的<a href="http://www.microsoft.com/net/whitepaper.asp"><font color="#3939d8">白皮书</font></a>（英文）。</p>
		<p>以下是白皮书的摘要，简要介绍了 .NET 的关键内容： </p>
		<ul type="disc">
				<li>
						<b>Microsoft .NET 平台</b>
						<br />包括用于创建和操作新一代服务的 .NET 基础结构和工具、用于实施多信息客户端的 .NET 用户经验，以及用于启用新一代智能 Internet 设备的 .NET 构造块服务和 .NET 设备软件。<br /><br /></li>
				<li>
						<b>Microsoft .NET 产品和服务</b>
						<br />包括 Microsoft® Windows.NET（其核心集成了一组构造块服务）、MSN.NET、个人订阅服务、Microsoft® Office.NET、Microsoft® Visual Studio.NET 和 Microsoft® bCentral™ for .NET。 <br /><br /></li>
				<li>
						<b>第三方 .NET 服务</b>
						<br />许多领域的合作伙伴和开发人员都有机会在 .NET 平台上提供企业和垂直服务。 </li>
		</ul>
		<p>此问题针对的是 .NET 框架。.NET 框架是 .NET 平台基础结构的一部分。有关 .NET 框架的详细信息，请参阅下一个问题。 </p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_concepts02">
				</a>什么是 .NET 框架？</h4>
		<p>.NET 框架是创建、部署和运行 Web 服务及其他应用程序的一个环境。它包括三个主要部分：公共语言运行时、框架类和 ASP.NET。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_concepts03">
				</a>.NET 框架是否只适用于创建 Web 站点的用户？</h4>
		<p>.NET 框架使您可以创建优秀的 Web 应用程序。但它也可以帮助您创建现在的各种应用程序。与当前创建应用程序的方式相比，.NET 在编写任何 Windows 软件（使用 ATL/COM、MFC、Microsoft® Visual Basic® 或标准 Microsoft® Win32®）方面都具有更大的优势。当然，如果您是开发 Web 站点，那么从 ASP.NET 开始，您就会感受到 .NET 框架的强大吸引力。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_concepts04">
				</a>从何处可以获得 .NET 框架 SDK？</h4>
		<p>现在可以从 <a href="http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml"><font color="#3939d8">MSDN Online Downloads</font></a>（英文）下载 .NET 框架 SDK 的 Beta 1 版。鉴于其大小，我们以多种方式提供此 Beta 版：作为一个下载文件 (106 MB)，分为 11 部分下载，或者从 Microsoft Developer Store 定购其 CD： </p>
		<ul type="disc">
				<li>
						<a href="http://developerstore.com/devstore/product.asp?productID=7597&amp;store=TOOLBOX_NA">
								<font color="#3939d8">美国/加拿大</font>
						</a>（英语）<br /><br /></li>
				<li>
						<a href="http://developerstore.com/devstore/product.asp?productID=7598&amp;store=Toolbox_INTL">
								<font color="#3939d8">国际</font>
						</a>（英语） </li>
		</ul>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_concepts05">
				</a>.NET 框架可以运行于哪些平台？</h4>
		<p>Beta 1 版可以运行在 Microsoft® Windows® 2000、Windows 95/98/ME 和 Windows NT® 4.0 上。</p>
		<p>另外，还有一个称为 .NET 精简框架的 .NET 框架版本。它用于使蜂窝电话和增强型电视等设备也具有 .NET 框架的某些功能。.NET 精简框架将运行在 Windows CE 和其他嵌入式操作系统上。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_concepts06">
				</a>.NET 框架支持哪些编程语言？</h4>
		<p>.NET 框架与编程语言无关。事实上任何语言都可以支持 .NET 框架。目前，您可以用许多语言来创建 .NET 程序，包括：C++、Microsoft® Visual Basic.NET、JScript® 和 Microsoft 的最新语言——C#。以后，也会有大量的第三方语言可以用来创建 .NET 框架应用程序，包括 COBOL、Eiffel、Perl、Python、Smalltalk 等等。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_concepts07">
				</a>.NET 框架和 COM+ 服务之间是什么关系？</h4>
		<p>在 .NET 框架中，不仅可以完全访问 COM+ 服务，而且也更容易创建服务组件。</p>
		<p>.NET 框架组件可被添加至 COM+ 应用程序中。在 COM+ 应用程序中，.NET 框架组件可以利用自动组件服务，例如：事务、对象池、排队组件、事件等等。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_concepts08">
				</a>.NET 框架和 DCOM 之间是什么关系？</h4>
		<p>DCOM 是用于进程间通讯的 COM 基础结构。.NET 框架支持大量用于进程间通讯的可插入通道和格式化程序。在托管代码和非托管代码之间进行转换时，.NET 框架使用了 COM 基础结构，尤其是 DCOM。所有使用 COM+ 服务的方案都使用了托管到非托管转换，因此默认使用 DCOM。对于注重互操作性的进程间通讯，.NET 框架也支持 SOAP（简单对象访问协议）。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_concepts09">
				</a>.NET 框架是否仅仅是 Windows DNA 的新名称？</h4>
		<p>不。Windows DNA 是用于创建紧耦合的分布式 Web 应用程序的一种体系结构。由于分布式应用程序变得需要更多的松耦合原理，因此 Microsoft 在 .NET 中发展了该体系结构。.NET 框架是 .NET 体系结构的一部分。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h2>运行时技术问题</h2>
		<h3>术语</h3>
		<h4>
				<a name="faq111700_term01">
				</a>什么是公共语言运行时 (CLR)？</h4>
		<p>公共语言运行时是 .NET 框架应用程序的执行引擎。</p>
		<p>它提供许多服务，包括： </p>
		<ul type="disc">
				<li>代码管理（加载和执行）<br /><br /></li>
				<li>应用程序内存隔离<br /><br /></li>
				<li>类型安全验证<br /><br /></li>
				<li>IL 到本机代码的转换<br /><br /></li>
				<li>元数据（增强的类型信息）访问<br /><br /></li>
				<li>为托管对象管理内存<br /><br /></li>
				<li>强制代码访问安全<br /><br /></li>
				<li>异常处理，包括跨语言异常<br /><br /></li>
				<li>托管代码、COM 对象和现有 DLL（非托管代码和数据）之间的互操作<br /><br /></li>
				<li>自动进行对象布局<br /><br /></li>
				<li>对开发人员服务（配置、调试等）的支持 </li>
		</ul>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_term02">
				</a>什么是公共类型系统 (CTS)？</h4>
		<p>公共类型系统是多信息类型系统，它被内置在公共语言运行时中，支持大多数编程语言中的类型和操作。公共类型系统支持大量编程语言的完全实现。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_term03">
				</a>什么是公共语言规范 (CLS)？</h4>
		<p>公共语言规范是一组结构和限制，用作库编写者和编译器编写者的指南。它使任何支持 CLS 的语言都可以完全使用库，并且使这些语言可以相互集成。公共语言规范是公共类型系统的子集。对于那些需要编写代码供其他开发人员使用的应用程序开发人员，公共语言规范也非常重要。如果开发人员遵循 CLS 规则来设计公共访问的 API，那么就可以在支持公共语言运行时的任何其他编程语言中很容易地使用这些 API。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_term04">
				</a>什么是 Microsoft 中间语言 (MSIL)？</h4>
		<p>MSIL 是与 CPU 无关的指令集。.NET 框架程序被编译成 MSIL。它包含加载、存储、初始化和调用对象方法的指令。</p>
		<p>与元数据和公共类型系统结合，MSIL 允许真正的跨语言集成。</p>
		<p>MSIL 在执行前被转换为机器代码，而不是一边解释一边执行。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_term05">
				</a>什么是托管代码和托管数据？</h4>
		<p>托管代码是编写为支持公共语言运行时服务的代码（请参阅“什么是公共语言运行时？”）。为了支持这些服务，代码必须向运行时提供最小级别的信息（元数据）。默认情况下，所有 C#、Visual Basic.NET 和 JScript.NET 代码都是托管代码。Visual Studio.NET C++ 代码在默认情况下不是托管代码，但通过指定命令行开关 (/CLR)，编译器也可以生成托管代码。</p>
		<p>与托管代码密切相关的是托管数据。托管数据是由公共语言运行时的垃圾回收器进行分配和释放的数据。默认情况下，C#、Visual Basic 和 JScript.NET 数据是托管数据。不过，通过使用特殊的关键字，C# 数据可以被标记为非托管数据。Visual Studio.NET C++ 数据在默认情况下是非托管数据（即使在使用 /CLR 开关时），但是在使用 C++ 的托管扩展时，可以使用“__gc”关键字将类标记为托管类。就象该名称所显示的那样，它表示类实例的内存由垃圾回收器管理。另外，该类也完全成为 .NET 框架的成员，同时具备它所带来的好处和限制。好处的一个例子是：它可以与其他语言编写的类正确地进行互操作（如托管的 C++ 类可以从 Visual Basic 类继承）；限制的一个例子是：托管类只能从一个基类继承。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h3>程序集</h3>
		<h4>
				<a name="faq111700_assembly01">
				</a>什么是程序集？</h4>
		<p>程序集是 .NET 框架应用程序的主要构造块。它是作为一个单一实现单元（包含一个或多个文件）来创建、标识和部署的功能集合。所有的托管类型和资源都可以被标记为仅在其实现单元内访问，或者标记为可由该单元以外的代码来访问。</p>
		<p>程序集通过清单来进行自我说明。清单是每个程序集的不可或缺的组成部分。清单： </p>
		<ul type="disc">
				<li>建立程序集标识（以文本名称的格式）、版本、类别和数字签名（如果要在应用程序之间共享该程序集）。<br /><br /></li>
				<li>定义组成程序集实现的文件（通过名称和文件散列）。<br /><br /></li>
				<li>指定组成程序集的类型和资源，包括哪些是从程序集中导出的。<br /><br /></li>
				<li>逐条记录编译时对其他程序集的依存。<br /><br /></li>
				<li>指定程序集正确运行所需要的权限的集合。 </li>
		</ul>
		<p>此信息在运行时用于解析引用、强制版本绑定策略以及验证所加载的程序集的完整性。因为每一类型都被加载到程序集的上下文中，所以运行时可以确定并定位任何正在运行的对象的程序集。程序集也是应用了代码访问安全权限的单元。在确定授予其所包含的代码哪些权限时，每个程序集的标识证据都被认为是独立的。</p>
		<p>程序集的自我说明特征也有助于实现无影响安装和 XCOPY 部署。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_assembly02">
				</a>什么是专用程序集和共享程序集？</h4>
		<p>专用程序集仅由单一应用程序使用，并且存储在该应用程序的安装目录中（或其子目录中）。共享程序集是可被多个应用程序引用的程序集。要共享一个程序集，该程序集必须明确为这个目的而创建，这可以通过给其指定加密的增强型名称（用作共享名称）来实现。相反，专用程序集名称只要求在使用它的应用程序中是唯一的。</p>
		<p>通过区分专用和共享程序集，我们介绍明确决定共享的要点。只需简单地将专用程序集部署在应用程序目录中，即可确保应用程序只在创建和部署它的那部分中运行。对专用程序集的引用只在专用应用程序目录内部进行解析。</p>
		<p>选择创建和使用共享程序集可以有多种原因，例如表达版本策略的能力。共享程序集具有加密的增强型名称，这项事实意味着只有程序集的作者才拥有密钥来生成程序集的新版本。因此，如果您做出策略声明，希望接受程序集的新版本，则您可以确信版本更新将由作者来控制和验证。否则，您就不会接受它们。</p>
		<p>对于在本地安装的应用程序，共享程序集通常被明确安装在全局程序集缓存中（程序集的本地缓存由 .NET 框架维护）。.NET 框架的版本管理特性的关键在于下载的代码不会影响本地安装的应用程序的执行。下载的代码被放在一个特殊的下载缓存中，即使某些下载组件被编译为共享程序集，也不能在机器上全局使用这些代码。</p>
		<p>与 .NET 框架一起发布的类都被编译为共享程序集。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_assembly03">
				</a>如果我想创建一个共享程序集，在标记和管理密钥对方面是否需要额外的开销？</h4>
		<p>创建共享程序集确实涉及到加密密钥方面的工作。创建程序集时，只有公共密钥是必要的。支持 .NET 框架的编译器提供命令行选项（或使用自定义属性），用于在创建程序集时提供公共密钥。通常在资源数据库中保留一份常用的公共密钥，并使编译脚本指向此密钥。在发布程序集之前，必须使用相应的私人密钥将其完全标记。这是通过 SDK 工具 SN.exe（增强型名称）来完成的。</p>
		<p>增强型名称标记不象 Authenticode 一样需要使用证书。它不涉及第三方组织，不需要付费，也不受证书约束。另外，验证增强型名称的额外开销远远小于验证 Authenticode 的开销。不过，增强型名称不会生成任何信任某个出版商的语句。增强型名称使您可以确信给定程序集的内容没有被篡改，在运行时为您加载的程序集来自于您开发时针对的出版商。但它不会生成有关是否信任出版商身份的语句。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_assembly04">
				</a>名称空间与程序集名称之间有什么区别？</h4>
		<p>名称空间是类型的一种逻辑命名方案，其中简单类型名称（如 MyType）前面带有用点分隔的层次结构名称。这样的命名方案完全在开发人员的控制之下。例如，键入 MyCompany.FileAccess.A 和 MyCompany.FileAccess.B 在逻辑上将会具有与文件访问相关的功能。.NET 框架使用一种层次结构命名方案，用于将类型按相关功能的逻辑类别进行分组，例如，ASP.NET 应用程序框架或远程处理功能。设计工具可以利用名称空间使开发人员更容易在代码中浏览和引用类型。名称空间的概念与程序集的概念之间没有任何联系。一个程序集可以包含其层次结构名称具有不同名称空间根的类型，而一个逻辑名称空间根可以跨越多个程序集。在 .NET 框架中，名称空间是在设计时进行逻辑命名的便捷方式，而程序集在运行时为类型建立名称作用域。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h3>应用程序部署和隔离</h3>
		<h4>
				<a name="faq111700_deploy01">
				</a>部署 .NET 应用程序时可以使用哪些选项？</h4>
		<p>通过使应用程序的无影响安装和 XCOPY 部署成为可能，.NET 框架简化了部署。因为所有的请求首先在专用应用程序目录中进行解析，所以只需简单地将一个应用程序的目录文件复制到磁盘中，即可运行该应用程序，而不需要注册。</p>
		<p>此方案对于 Web 应用程序、Web 服务和独立的桌面应用程序特别有吸引力。不过，在有些方案中 XCOPY 还不足以担当分发机制。例如，当应用程序具有很少的专用代码，而依赖于可用的共享程序集；或者应用程序不是安装在本地（而是按需下载）。对于这些情况，.NET 框架提供了扩展的代码下载服务以及与 Windows Installer 的集成。.NET 框架提供的代码下载支持通过当前平台提供了许多优势，包括增量下载、代码访问安全性（不再有“Authenticode”对话框）和应用程序隔离（为一个应用程序下载的代码不会影响其他应用程序）。Windows Installer 是 .NET 应用程序可以使用的另外一个强大的部署机制。在 Windows Installer 1.5 中，Windows Installer 的所有特性（包括发行、公布和应用程序修补）都可以在 .NET 应用程序中使用。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_deploy02">
				</a>如果我已经编写了一个程序集，并希望在多个应用程序中使用它，我应该在何处部署它？</h4>
		<p>要由多个应用程序使用的程序集（如共享程序集）需要部署到全局程序集缓存中。在预发布版和 Beta 版中，使用 Alink SDK 工具的 /i 选项可将程序集安装到缓存中：</p>
		<pre>
				<code>al /i:myDll.dll</code>
		</pre>
		<p>Windows Installer 的后续版本能够将程序集安装到全局程序集缓存中。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_deploy03">
				</a>如何才能看到在全局程序集缓存中安装了哪些程序集？</h4>
		<p>.NET 框架附带了一个 Windows 外壳扩展，用于查看程序集缓存。在 Windows 资源管理器中，转至 % windir%\assembly 以激活查看器。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_deploy04">
				</a>什么是应用程序域？</h4>
		<p>应用程序域（通常是 AppDomain）是用于隔离应用程序的虚拟进程。在同一个应用程序作用域中创建的所有对象（换句话说，从该应用程序的入口点开始沿着对象激活序列的任何地方）都在同一个应用程序域中创建。多个应用程序域可以存在于一个操作系统进程中，使它们成为隔离应用程序的简便方式。</p>
		<p>操作系统进程通过使用各不相同的内存地址空间来提供隔离。尽管它是有效的，但也是代价昂贵的，并且不能达到大型 Web 服务器所需要的数量。与其相比，公共语言运行时通过管理在应用程序域中运行的代码的内存使用来强制进行应用程序隔离。这样就确保它不会访问应用程序域以外的内存。需要注意的是，只有类型安全的代码才能以这种方式管理（当在应用程序域中加载不安全代码时，运行时不能保证隔离）。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h3>垃圾回收</h3>
		<h4>
				<a name="faq111700_garbage01">
				</a>什么是垃圾回收？</h4>
		<p>垃圾回收是使计算机能检测何时不再能够访问某个对象的一种机制。它将自动释放由该对象使用的内存（也调用用户编写的称为“结束者”的清理例程）。一些垃圾回收器（如由 .NET 使用的）会压缩内存，并因此减少程序的工作集。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_garbage02">
				</a>非确定性垃圾回收是如何影响代码的？</h4>
		<p>对于大多数编程人员而言，拥有一个垃圾回收器（并且使用可作为垃圾回收的对象）意味着永远不需要操心释放内存或引用计数对象，即使您使用了复杂的数据结构。但如果您通常在同一个用于释放对象内存的代码块中释放系统资源（文件句柄、锁定等等），那么在编码样式方面需要做一些修改。使用可作为垃圾回收的对象时，您应该提供一种方法，来明确释放系统资源（也就是说，由您的程序控制），同时允许垃圾回收器在压缩工作集时释放内存。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_garbage03">
				</a>是否能够避免使用可作为垃圾回收的堆？</h4>
		<p>所有支持运行时的语言都允许您从可作为垃圾回收的堆中分配类对象。这在快速分配方面带来了好处，并且使编程人员无需自己来计算何时应该显式“free”每个对象。</p>
		<p>CLR 还提供了 ValueTypes 对象——它们与类相似，但 ValueType 对象是在运行时堆栈（不是堆）中分配的，因此当您的代码退出定义这些对象的过程时，将自动回收它们。这就是 C# 中“struct”的操作方式。</p>
		<p>C++ 的托管扩展使您可以选择类对象分配的位置。如果使用 __gc 关键字声明为托管类，它们将从可作为垃圾回收的堆中分配；如果它们不包含 __gc 关键字，它们将与普通的 C++ 对象一样从 C++ 堆中分配，并且使用“free”方法显式释放。</p>
		<p>有关垃圾回收的的详细信息，请参阅： </p>
		<ul type="disc">
				<li>
						<a href="http://msdn.microsoft.com/msdnmag/issues/1100/GCI/GCI.asp">
								<font color="#3939d8">垃圾回收：Microsoft .NET 框架中的自动内存管理</font>
						</a>（英文）<br /><br /></li>
				<li>
						<a href="http://msdn.microsoft.com/msdnmag/issues/1200/GCI2/GCI2.asp">
								<font color="#3939d8">垃圾回收 - 第 2 部分：Microsoft .NET 框架中的自动内存管理</font>
						</a>（英文） </li>
		</ul>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h3>远程处理</h3>
		<h4>
				<a name="faq111700_remote01">
				</a>如何在公共语言运行时中进行进程内和进程间通讯？</h4>
		<p>进程内通讯有两种：在单一应用程序域的上下文中，或者跨应用程序域。在同一个应用程序域的上下文中，使用代理作为监听机制，而不涉及封送处理/序列化。当跨应用程序域时，使用运行时二进制协议来作封送处理/序列化。</p>
		<p>进程间通讯为每个特定目的使用一个可插入通道和格式化程序协议。 </p>
		<ul type="disc">
				<li>如果开发人员使用 soapsuds.exe 工具指定终结点来生成元数据代理，那么默认值是带有 SOAP 格式化程序的 HTTP 通道。<br /><br /></li>
				<li>如果开发人员在托管世界中执行显式远程处理，需要明确指定使用的通道和格式化程序。这可以通过配置文件用可管理的方式来表示，或者用 API 调用来加载特定通道。选项如下： 
<p class="tl">带有 SOAP 格式化程序的 HTTP 通道（HTTP 在 Internet 上或任何必须通过防火墙进行通信的时候运行良好）</p><p class="tl">带有二进制格式化程序的 TCP 通道（对于局域网，TCP 是性能较高的选项）</p><p class="tl">带有 SOAP 格式化程序的 SMTP 通道（仅对跨计算机有意义） </p></li>
		</ul>
		<p>在托管代码和非托管代码之间进行转换时，COM 基础结构（尤其是 DCOM）用于远程处理。在 CLR 的中间版本中，这也适用于服务组件（使用 COM+ 服务的组件）。在最终版本中，配置任何远程组件都是可能的。</p>
		<p>对象的分布式垃圾回收由名为“租用生存期”的系统来管理。每个对象都有一个租用时间，当到期时，该对象与 CLR 的远程处理基础结构断开连接。对象具有一个默认的更新时间——当客户端成功地调用了对象时，租用将被更新。客户端可以显式更新租用。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h3>互操作性</h3>
		<h4>
				<a name="faq111700_interop01">
				</a>是否可以在 .NET 框架程序中使用 COM 对象？</h4>
		<p>是。您现在部署的任何 COM 组件都可以在托管代码中使用。通常情况下，所需的调整是完全自动进行的。</p>
		<p>特别是，可以使用运行时可调用包装 (RCW) 从 .NET 框架访问 COM 组件。此包装将 COM 组件提供的 COM 接口转换为与 .NET 框架兼容的接口。对于 OLE 自动化接口，RCW 可以从类型库中自动生成；对于非 OLE 自动化接口，开发人员可以编写自定义 RCW，手动将 COM 接口提供的类型映射为与 .NET 框架兼容的类型。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_interop02">
				</a>是否可以在 COM 程序中使用 .NET 框架组件？</h4>
		<p>是。您现在创建的托管类型都可以通过 COM 访问。通常情况下，所需的配置是完全自动进行的。托管开发环境的某些新特性不能在 COM 中访问。例如，不能在 COM 中使用静态方法和参数化构造函数。一般，提前确定给定类型所针对的用户是一种较好的办法。如果类型需要在 COM 中使用，您将被限制在使用 COM 可访问的特性。</p>
		<p>默认情况下，托管类型可能是可见的，也可能是不可见的，这由用于编写托管类型的语言决定。</p>
		<p>特别是，可以使用 COM 可调用包装 (CCW) 从 COM 访问 .NET 框架组件。这与 RCW（请参阅上一个问题）相似，但它们的方向相反。同样，如果 .NET 框架开发工具不能自动生成包装，或者如果自动方式不是您所需要的，则可以开发自定义的 CCW。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_interop03">
				</a>是否可以在 .NET 框架程序中使用 Win32 API？</h4>
		<p>是。使用 P/Invoke，.NET 框架程序可以通过静态 DLL 入口点的方式来访问本机代码库。</p>
		<p>下面是 C# 调用 Win32 <b>MessageBox</b> 函数的示例：</p>
		<pre>
				<code>using System; using System.Runtime.InteropServices; class MainApp {     [DllImport("user32.dll", EntryPoint="MessageBox")]     public static extern int MessageBox(int hWnd, String strMessage, String strCaption, <br />uint uiType);     public static void Main()     {         MessageBox( 0, "您好，这是 PInvoke！", ".NET", 0 );     } }</code>
		</pre>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h3>安全性</h3>
		<h4>
				<a name="faq111700_security01">
				</a>如何使代码与安全系统协调工作？</h4>
		<p>通常，这不成问题——大多数应用程序能安全地运行，不会受恶意攻击的干扰。通过简单地使用标准类库来访问资源（如文件）或执行受保护的操作（例如反转类型的私有成员），安全性由这些库来实施。应用程序开发者需要完成的一项简单工作是包括权限请求（一种公开的安全性），将代码可能接收的权限限制在它所需要的权限范围内。这也确保了如果代码被允许运行，它在运行时将具有所需的所有权限。</p>
		<p>仅当开发人员需要编写提供新型资源的新基类库时，他们才需要直接处理安全系统。在这种情况下，并非所有的代码都有潜在的安全性问题，代码访问安全机制将其限制在替代了安全系统的那部分代码上。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_security02">
				</a>为什么在网络共享驱动器中运行代码时会发生安全异常？</h4>
		<p>默认安全策略仅给来自本地 Intranet 区域的代码授予有限的权限。这个区域是由 Internet Explorer 安全设置定义的，它们应该配置为与企业内部的本地网络相匹配。由于由 UNC 或映射驱动器（例如使用 NET USE 命令）命名的文件都需要在本地网络上发送，因此它们也在本地 Intranet 区域中。</p>
		<p>默认值是为不安全的 Intranet 这种最坏情况而设置的。如果您的 Intranet 比较安全，您可以修改安全策略（用 CASPol 工具），给本地 Intranet 或其一部分（例如特定的计算机共享名）授予更多的权限。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_security03">
				</a>如何编写代码，使它在安全系统停止该代码时运行？</h4>
		<p>当代码试图执行未经授权的操作时，将发生安全异常。权限是基于代码（尤其是其位置）来授予的。例如，从 Internet 中运行的代码所得到的权限比在本地计算机上运行的代码所得到的权限要少，这是因为经验证明，它的可靠性要低一些。因此，要运行由于安全异常而失败的代码，您必须增加授予它的权限。一个简单的方法是将代码移到更受信任的位置（例如本地文件系统）。但这种方法并不是在任何情况下都有效（Web 应用程序是一个很好的例子，企业网络上的 Intranet 应用程序是另一个例子）。因此，不要改变代码位置，而是通过更改安全策略给该位置授予更多的权限。请使用代码访问安全策略工具 (caspol.exe) 或图形化管理工具（在 Beta 2 和更高版本中可以得到）来执行此操作。如果您是代码的开发人员或发行者，您也可以对它进行数字签名，然后修改安全策略，给带有该数字签名的代码授予更多权限。但是，在执行上述任何操作时，请记住此代码被授予较少的权限，是因为它不是来自受信任的来源——在将代码移至本地计算机或更改安全策略以前，您应该确保这些代码不会执行恶意或损坏性的操作。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_security04">
				</a>如何管理个人或企业计算机的安全性？</h4>
		<p>目前，CASPol 命令行工具是管理安全性的唯一方法。安全策略由两个级别组成：按计算机和按用户。我们计划在 .NET 框架第一版中提供全面的管理工具以及企业策略管理支持。</p>
		<p>
				<a href="http://www.microsoft.com/china/msdn/archives/library/faq111700.asp#faq111700_concepts">
						<font color="#3939d8">返回页首</font>
				</a>
		</p>
		<h4>
				<a name="faq111700_security05">
				</a>基于证据的安全性是如何与 Windows 2000 安全性配合工作的？</h4>
		<p>基于证据的安全性（基于授权码）能与 Windows 2000 安全性（基于登录身份标识）配合工作。例如，要访问一个文件，托管代码必须具有代码访问安全文件权限，也必须在具有 NTFS 文件访问权限的登录身份标识下运行。.NET 框架中包括的托管库也为基于角色的安全性提供了类。这些都使应用程序能够与 Windows 登录身份标识及用户组配合工作。</p>
<img src ="http://www.blogjava.net/9611/aggbug/75516.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2006-10-17 08:13 <a href="http://www.blogjava.net/9611/archive/2006/10/17/75516.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】ASP.NET中常用的JavaScript操作 </title><link>http://www.blogjava.net/9611/archive/2006/10/16/75424.html</link><dc:creator>dyin</dc:creator><author>dyin</author><pubDate>Mon, 16 Oct 2006 07:38:00 GMT</pubDate><guid>http://www.blogjava.net/9611/archive/2006/10/16/75424.html</guid><wfw:comment>http://www.blogjava.net/9611/comments/75424.html</wfw:comment><comments>http://www.blogjava.net/9611/archive/2006/10/16/75424.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/9611/comments/commentRss/75424.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/9611/services/trackbacks/75424.html</trackback:ping><description><![CDATA[
		<div class="postText">
				<p>
						<strong>
								<font face="Arial">1．为button控件添加确认功能</font>
						</strong>
				</p>
				<p>
						<font face="Arial">要想为服务器控件添加客户端的事件，需要用到Attributes属性。Attributes属性是所有的<font color="#ff0000">服务器控件</font>都有的一个属性，它用来为最终生成的HTML添加自定义的一些标记。假设Web Form上有一个保存按钮btnSave,希望在用户点此按钮时提示用户是否确实要保存(比如一旦保存就无法恢复等)，则应在Page_Load事件中添加如下代码：</font>
				</p>
				<p>
						<font style="BACKGROUND-COLOR: #d3d3d3" face="Arial">btnSave.Attributes.Add(“onclick”,“Javascript:return confirm(‘Are you sure to save?’);”)</font>
				</p>
				<p>
						<font face="Arial">要注意的是‘return’，这是不可省的，否则即使用户点了取消，数据仍然会保存。</font>
				</p>
				<p>
						<strong>
								<font face="Arial">2．为Datagrid中的每一行添加Javascript事件</font>
						</strong>
				</p>
				<p>
						<font face="Arial">Datagrid中的子控件是没办法直接访问的，要实现上面的那种效果，我们需要用到Datagrid的OnItemDataBound事件。OnItemDataBound事件发生在Datagrid的每一行数据绑定到Datagrid之后（即一行激发一次）。首先在Datagrid的声明中添加OnItemDataBound属性，如下：</font>
				</p>
				<p>
						<font face="Arial">
						</font>
						<?XML:NAMESPACE PREFIX = ASP /?>
						<asp:datagrid id="dgList" onitemdatabound="ItemDataBound" runat="server">
						</asp:datagrid>
				</p>
				<p>
						<font face="Arial">此处说明OnItemDataBound事件发生时调用ItemDataBound方法，在代码后置文件中添加此方法的定义：</font>
				</p>
				<p>
						<font style="BACKGROUND-COLOR: #d3d3d3" face="Arial">private void OnItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)<br />   {<br />        if(e.Item.ItemType != ListItemType.Header &amp;&amp; e.Item.ItemType != ListItemType.Footer )<br />        {<br />            LinkButton btnSave = (LinkButton)e.Item.Cells[2].Controls[0];<br />　　    string strClientID = btnSave.ClientID; //得到该控件的客户端ID，可供JavaScript调用</font>
						<font style="BACKGROUND-COLOR: #d3d3d3">
								<br />
								<font face="Arial">            btnSave.Attributes.Add("onclick","Javascript:return confirm('Are you sure to save?');");<br />        }<br /></font>
						</font>
						<font style="BACKGROUND-COLOR: #d3d3d3" face="Arial">}</font>
				</p>
				<p>
						<font face="Arial">由于Datagrid的标题行和脚注行也会激发此事件，所以首先判断激发此事件的行不是标题行和脚注行。这里假设btnSave按钮位于Datagrid的第3列（第一列是0）。</font>
				</p>
				<p>
						<strong>
								<font face="Arial" size="2">3．在Javascript中触发服务器端控件事件</font>
						</strong>
				</p>
				<p>
						<font face="Arial">让我们再来考虑第一个实例，我们为保存按钮增加了确认功能，只有在用户确认后才会执行保存操作，用户不确认的话就不执行，如果我们想要用户按下“取消”时，执行另外的操作怎么办呢？这就要需要用JS来回调(PostBack)服务器端控件完成操作。</font>
				</p>
				<p>
						<font face="Arial">当前页面中有一个DropDownList控件ddlTest,Button按钮btnSave.当选择ddlTest时触发onchange事件，保存当前的选择值，在保存前会让操作者先确认，用户确认则保存，否则转向default.aspx页。</font>
				</p>
				<p>
						<font face="Arial">在Page_Load事件中添加如下代码：</font>
				</p>
				<p>
						<font style="BACKGROUND-COLOR: #d3d3d3" face="Arial">    string strCMD = Page.GetPostBackClientHyperlink( btnSave, "" );<br />    string script = @"Javascript:ConfirmUpdate(""EVAL_MESSAGE"");";<br />    script = script.Replace( "EVAL_MESSAGE" , strCMD );</font>
				</p>
				<p>
						<font style="BACKGROUND-COLOR: #d3d3d3" face="Arial">    ddlTest.Attributes.Add("onchange",script);</font>
				</p>
				<p>
						<font face="Arial">这段代码执行后生成的select控件将是这样：</font>
				</p>
				<p>
						<font style="BACKGROUND-COLOR: #d3d3d3">〈select name="ddlTest" id="ddlTest" onchange="Javascript:ConfirmUpdate("javascript:__doPostBack('btnSave','')");" 〉</font>
				</p>
				<p>ConfirmUpdate函数如下</p>
				<p>
						<font style="BACKGROUND-COLOR: #d3d3d3">〈SCRIPT language=javascript〉<br />    function ConfirmUpdate(cmd){<br />    if(confirm("Are you sure to update?"))<br />   {<br />       eval(cmd);<br />    }<br />    else<br />    {<br />        window.location.href="default.aspx"<br />    }<br />   }<br /> 〈/SCRIPT〉</font>
				</p>
				<p>这里利用了Javascript eval函数来调用一个字符串中包含的命令。需注意的是包含命令的字符串不能用单引号括起来，因为自动生成的脚本中包括单引号，所以这里用两个双引号表示字符串本身的双引号。</p>
				<br />
				<br />
				<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=586711</p>
		</div>
<img src ="http://www.blogjava.net/9611/aggbug/75424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/9611/" target="_blank">dyin</a> 2006-10-16 15:38 <a href="http://www.blogjava.net/9611/archive/2006/10/16/75424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>