﻿<?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-壹咪阳光-随笔分类-other</title><link>http://www.blogjava.net/ywj-316/category/43355.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 31 May 2011 01:22:21 GMT</lastBuildDate><pubDate>Tue, 31 May 2011 01:22:21 GMT</pubDate><ttl>60</ttl><item><title>开源框架Pushlet入门</title><link>http://www.blogjava.net/ywj-316/archive/2010/04/23/319191.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Fri, 23 Apr 2010 05:38:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2010/04/23/319191.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/319191.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2010/04/23/319191.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/319191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/319191.html</trackback:ping><description><![CDATA[<p><br />
来自：<a title="http://www.pussor.com/?p=3" href="http://www.pussor.com/?p=3">http://www.pussor.com/?p=3</a><br />
<br />
官网：<a title="http://www.pushlets.com/" href="http://www.pushlets.com/">http://www.pushlets.com/</a><br />
<br />
Ajax等Web 2.0技术的广泛应用，推动了C/S向B/S的转变，如今很多应用如监控、即时通信等系统都需要实时同步服务器端和客户端的数据更新。Comet在这种需求下应运而生，本文简单介绍了基于Comet的开源框架Pushlet。</p>
<h2><strong>Comet</strong>基础</h2>
<p><strong>Comet</strong> 是一个用于描述客户端和服务器之间的交互的术语，即使用长期保持的 HTTP 连接来在连接保持畅通的情况下支持客户端和服务器间的事件驱动的通信。</p>
<p style="text-align: right">—引用自&#8220;Comet的诱惑&#8221;</p>
<p>传统的web系统的工作流程是客户端发出请求，服务器端进行响应，而Comet则是在现有技术的基础上，实现服务器数据、事件等快速PUSH到客户端，所以会出现一个术语&#8221;服务器推&#8220;技术。</p>
<h2><strong>PUSH</strong>实现方式</h2>
<h3>JSP/SERVLET PUSH</h3>
<p><strong>原理：</strong></p>
<p>利用JSP/SERVEL技术，在不关闭HTTP流的情况下PUSH数据到客户端浏览器；</p>
<p><strong>实现：<br />
<br />
</strong>基于 AJAX 的长轮询（long-polling）方式</p>
<p>AJAX 的出现使得 JavaScript 可以调用 XMLHttpRequest 对象发出 HTTP 请求，JavaScript 响应处理函数根据服务器返回的信息对 HTML 页面的显示进行更新。使用 AJAX 实现&#8220;服务器推&#8221;与传统的 AJAX 应用不同之处在于：</p>
<ol>
    <li>服务器端会阻塞请求直到有数据传递或超时才返回。
    <li>客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后，再次发出请求，重新建立连接。
    <li>当客户端处理接收的数据、重新建立连接时，服务器端可能有新的数据到达；这些信息会被服务器端保存直到客户端重 新建立连接，客户端会一次把当前服务器端所有的信息取回。 </li>
</ol>
<h2>Pushlet实例</h2>
<p>以Pushlet中的ping案例来进行分析：</p>
<ol>
    <li>新建一个Web项目取名ping，并导入Pushlet的jar包；
    <li>在src目录下配置sources.properties、pushlet.properties文件;
    <li>webroot目录下导入js-pushlet-client.js，js-pushlet-net.html；
    <li>新建TestEventPullSources.java；
    <li>新建index.html,引入js-pushlet-client.js；
    <li>新建pingok.jsp；
    <li>修改web.xml加上pushlet的servlet
    <li>打包、部署ping项目; </li>
</ol>
<p><br />
<br />
<a title="实例1" href="http://pijunliang.javaeye.com/blog/107447">实例1</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a title="Pushlet CookBook部分翻译 + 注释" href="http://witcheryne.javaeye.com/blog/520588">Pushlet CookBook部分翻译 + 注释</a><br />
<br />
<a title="pushlet 2.0.3 源码分析(服务器端)" href="http://blog.csdn.net/yxw246/archive/2008/05/08/2418255.aspx">pushlet 2.0.3 源码分析(服务器端)</a></p>
<img src ="http://www.blogjava.net/ywj-316/aggbug/319191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2010-04-23 13:38 <a href="http://www.blogjava.net/ywj-316/archive/2010/04/23/319191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dreamweaver cs4 许可证过期的解决办法</title><link>http://www.blogjava.net/ywj-316/archive/2010/01/21/310318.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Thu, 21 Jan 2010 01:45:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2010/01/21/310318.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/310318.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2010/01/21/310318.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/310318.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/310318.html</trackback:ping><description><![CDATA[<p>ADOBE CS4 因许可证过期无法启动，最简单的解决办法就是破解执行激活验证的amtlib.dll文件，用破解了的文件替换，就再也不会连网验証了。<br />
可以去以下地址下载已经破解的amtlib.dll文件。<br />
<a href="http://st0p.cn/amtlib.rar" target="_blank">http://st0p.cn/amtlib.rar</a></p>
非常好用！！！！！！！ <br />
<br />
<span style="color: red">完整汉化包</span>：<a href="http://www.qqpcc.com/down/zh_CN.rar" target="_blank"><font color="#333333">http://www.qqpcc.com/down/zh_CN.rar</font></a> <br />
<p><span style="color: red">部分英文未汉化补丁修正版</span>：<a href="http://www.winour.cn/upload/2009/6/resources.rar">resources.rar</a><br />
<br />
好用留个话！</p>
<p><br />
&nbsp;</p>
<p><br />
&nbsp;</p>
<img src ="http://www.blogjava.net/ywj-316/aggbug/310318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2010-01-21 09:45 <a href="http://www.blogjava.net/ywj-316/archive/2010/01/21/310318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>相关blog</title><link>http://www.blogjava.net/ywj-316/archive/2009/12/30/307831.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Wed, 30 Dec 2009 13:29:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/12/30/307831.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/307831.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/12/30/307831.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/307831.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/307831.html</trackback:ping><description><![CDATA[<br />
<a title="webgame" href="http://www.cnblogs.com/yahle">webgame</a><br />
<br />
<br />
<img src ="http://www.blogjava.net/ywj-316/aggbug/307831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-12-30 21:29 <a href="http://www.blogjava.net/ywj-316/archive/2009/12/30/307831.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>xp下php环境配置</title><link>http://www.blogjava.net/ywj-316/archive/2009/12/26/307328.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Fri, 25 Dec 2009 16:45:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/12/26/307328.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/307328.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/12/26/307328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/307328.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/307328.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em;">先准备好软件：</p>
<p style="text-indent: 2em;">Apache官方下载地址：<br />
<a href="http://mirror.vmmatrix.net/apache/httpd/binaries/win32/apache_2.0.55-win32-x86-no_ssl.msi" target="_blank">apache_2.2.4-win32-x86-no_ssl.msi</a>，<a href="http://httpd.apache.org/download.cgi" target="_blank">更多版本在这里</a>；</p>
<p style="text-indent: 2em;">php官方下载地址：<br />
<a href="http://cn2.php.net/get/php-5.0.5-Win32.zip/from/cn.php.net/mirror" target="_blank">php-5.2.12-Win32.zip</a>，<a href="http://www.php.net/get/php-5.0.5-Win32.zip/from/a/mirror" target="_blank">更多镜像下载地址</a>，<a href="http://www.php.net/downloads.php" target="_blank">更多版本下载</a>；</p>
<p style="text-indent: 2em;">mysql官方下载地址：<br />
<a href="http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.14-win32.zip/from/http://download.softagency.net/MySQL/" target="_blank">mysql-5.0.14-win32.zip</a>，<a href="http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.14-win32.zip/from/pick#mirrors" target="_blank">更多镜像下载地址</a>，<a href="http://dev.mysql.com/downloads/mysql/" target="_blank">更多版本下载</a>。</p>
<p style="text-indent: 2em;"><strong>一、安装Apache，配置成功一个普通网站服务器</strong></p>
<p style="text-indent: 2em;">运行下载好的&#8220;<a href="http://mirror.vmmatrix.net/apache/httpd/binaries/win32/apache_2.0.55-win32-x86-no_ssl.msi" target="_blank">apache_2.0.55-win32-x86-no_ssl.msi</a>&#8221;，出现如下界面：</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/3A2809339D75314DBBF0DCAEE081B291.gif" alt="" border="0" width="504" height="389" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">出现Apache HTTP Server 2.0.55的安装向导界面，点&#8220;Next&#8221;继续</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/7DDF0DA9827A0EDD10463EC2F9C67CAD.gif" alt="" border="0" width="503" height="387" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">确认同意软件安装使用许可条例，选择&#8220;I accept the terms in the license agreement&#8221;，点&#8220;Next&#8221;继续</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/BBDFBAF0F6EFDF6CD3A627EDCA97DCD7.gif" alt="" border="0" width="503" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">将Apache安装到Windows上的使用须知，请阅读完毕后，按&#8220;Next&#8221;继续</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/DDDA0F04F06F3F46035C91D6A9FB2F9F.gif" alt="" border="0" width="503" height="388" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">设置系统信息，在Network Domain下填入您的域名（比如：popsms.net.cn），在Server Name下填入您的服务器名称（比如：<a href="http://www.popsms.net.cn/">www.popsms.net.cn</a>，也就是主机名加上域名），在Administrator's Email Address下填入系统管理员的联系电子邮件地址（比如：<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#116;&#105;&#103;&#101;&#114;&#53;&#50;&#48;&#49;&#49;&#57;&#64;&#49;&#50;&#54;&#46;&#99;&#111;&#109;">tiger520119@126.com</a>），上述三条信息仅供参考，其中联系电子邮件地址会在当系统故障时提供给访问者，三条信息均可任意填写，无效的也行。下面有两个选择，图片上选择的是为系统所有用户安装，使用默认的80端口，并作为系统服务自动启动；另外一个是仅为当前用户安装，使用端口8080，手动启动。一般选择如图所示。按&#8220;Next&#8221;继续。]</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/D541B27C7C0C301040BA206C3067E75C.gif" alt="" border="0" width="502" height="387" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">选择安装类型，Typical为默认安装，Custom为用户自定义安装，我们这里选择Custom，有更多可选项。按&#8220;Next&#8221;继续</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/A1746C427910A3E191DBC5251178E1DC.gif" alt="" border="0" width="594" height="387" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">出现选择安装选项界面，如图所示，左键点选&#8220;Apache HTTP Server 2.0.55&#8221;，选择&#8220;This feature, and all subfeatures, will be installed on local hard drive.&#8221;，即&#8220;此部分，及下属子部分内容，全部安装在本地硬盘上&#8221;。点选&#8220;Change...&#8221;，手动指定安装目录。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/74BCA25E05F4CD6D4B8A3132073A9744.gif" alt="" border="0" width="500" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">我这里选择安装在&#8220;D:\&#8221;，各位自行选取了，一般建议不要安装在操作系统所在盘，免得操作系统坏了之后，还原操作把Apache配置文件也清除了。选&#8220;OK&#8221;继续。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/CC30BC627F229F724C85FF0E94F627F1.gif" alt="" border="0" width="502" height="387" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">返回刚才的界面，选&#8220;Next&#8221;继续。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/84D36BDCA5DBB8E339C559EAC99810FC.gif" alt="" border="0" width="503" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">确认安装选项无误，如果您认为要再检查一遍，可以点&#8220;Back&#8221;一步步返回检查。点&#8220;Install&#8221;开始按前面设定的安装选项安装。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/980A675B1D4538DBB126D9279D950F92.gif" alt="" border="0" width="503" height="387" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">正在安装界面，请耐心等待，直到出现下面的画面。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/25AC4569E22E9BC2263B4D6BCEF1AA19.gif" alt="" border="0" width="504" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">安装向导成功完成，这时右下角状态栏应该出现了下面的这个绿色图标，表示Apache服务已经开始运行，按&#8220;Finish&#8221;结束Apache的软件安装</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/C1527947DD583343D11543FF5905378A.gif" alt="" border="0" width="39" height="29" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">我们来熟悉一下这个图标，很方便的，在图标上左键单击，出现如下界面，有&#8220;Start（启动）&#8221;、&#8220;Stop（停止）&#8221;、&#8220;Restart（重启动）&#8221;三个选项，可以很方便的对安装的Apache服务器进行上述操作。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/1AAB07386D2B21E83A528902CB0CB5A2.gif" alt="" border="0" width="170" height="78" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">好了现在我们来测试一下按默认配置运行的网站界面，在IE地址栏打&#8220;http://127.0.0.1&#8221;，点&#8220;转到&#8221;，就可以看到如下页面，表示Apache服务器已安装成功。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/9D52D7BC2F6417340501B556B335E0F2.gif" alt="" border="0" width="588" height="572" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">现在开始配置Apache服务器，使它更好的替我们服务，事实上，如果不配置，你的安装目录下的Apache2\htdocs文件夹就是网站的默认根目录，在里面放入文件就可以了。这里我们还是要配置一下，有什么问题或修改，配置始终是要会的，如图所示，&#8220;开始&#8221;、&#8220;所有程序&#8221;、&#8220;Apache HTTP Server 2.0.55&#8221;、&#8220;Configure Apache Server&#8221;、&#8220;Edit the Apache httpd conf Configuration file&#8221;，点击打开。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/B1A9FE73D7EB4B8E48E3EACEDE6B1408.gif" alt="" border="0" width="601" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">XP的记事本有了些小变化，很实用的一个功能就是可以看到文件内容的行、列位置，按下图所示，点&#8220;查看&#8221;，勾选&#8220;状态栏&#8221;，界面右下角就多了个标记，&#8220;Ln 78, Col 10&#8221;就表示&#8220;行 78，列 10&#8221;，这样可以迅速的在文件中定位，方便解说。当然，你也可以通过&#8220;编辑&#8221;，&#8220;查找&#8221;输入关键字来快速定位。每次配置文件的改变，保存后，必须在 Apache服务器重启动后生效，可以用前面讲的小图标方便的控制服务器随时&#8220;重启动&#8221;。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/5BDD4BC454AB20790CC72C876D167302.gif" alt="" border="0" width="435" height="363" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">现在正式开始配置Apache服务器，&#8220;Ln 228&#8221;，或者查找关键字&#8220;DocumentRoot&#8221;（也就是网站根目录），找到如下图所示地方，然后将""内的地址改成你的网站根目录，地址格式请照图上的写，主要是一般文件地址的&#8220;\&#8221;在Apache里要改成&#8220;/&#8221;。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/A503C1AF9C3AF1F3121EAA7944A630E4.gif" alt="" border="0" width="431" height="366" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">&#8220;Ln 253&#8221;，同样，你也可以通过查找&#8220;DIRECTORY&#8221;来定位，以后不再说明，将""内的地址改成跟DOCUMENTROOT的一样。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/CB3C92D6D3D35479F8CA6403E4D1D19D.gif" alt="" border="0" width="433" height="363" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">&#8220;Ln321&#8221;，DirectoryIndex（目录索引，也就是在仅指定目录的情况下，默认显示的文件名），可以添加很多，系统会根据从左至右的顺序来优先显示，以单个半角空格隔开，比如有些网站的首页是index.htm，就在光标那里加上&#8220;index.htm &#8221;文件名是任意的，不一定非得&#8220;index.html&#8221;，比如&#8220;test.php&#8221;等，都可以。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/9D6E67CEE95CD5FE434BAE39E816C56D.gif" alt="" border="0" width="431" height="365" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">这里有一个选择配置选项，以前可能要配置，现在好像修正过来了，不用配置了，就是强制所有输出文件的语言编码，html文件里有语言标记（，这个就是设定文档语言为gb2312）的也会强制转换。如果打开的网页出现乱码，请先检查网页内有没有上述 html语言标记，如果没有，添加上去就能正常显示了。把&#8220;# DefaultLanguage nl&#8221;前面的&#8220;# &#8221;去掉，把&#8220;nl&#8221;改成你要强制输出的语言，中文是&#8220;zh-cn&#8221;，保存，关闭。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/EDC3C1B7C5F2C737FF95545697EB7A79.gif" alt="" border="0" width="435" height="365" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">好了，简单的Apache配置就到此结束了，现在利用先前的小图标重启动，所有的配置就生效了，你的网站就成了一个网站服务器，如果你加载了防火墙，请打开80或8080端口，或者允许Apache程序访问网络，否则别人不能访问。如果你有公网IP（一般ADSL或电话拨号上网的都是），就可以邀请所有能上网的朋友访问使用http://你的IP地址（IP地址查询可访问<a href="http://www.popsms.net.cn/">http://www.popsms.net.cn</a>，查询内容内即是）你的网站了；如果你没有公网IP，也可以把内网IP地址告诉局域网内的其它用户，让他们通过http://你的内网IP地址，访问你的网站。</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;"><strong>二、php的安装、以module方式，将php与apache结合使你的网站服务器支持php服务器脚本程序</strong></p>
<p style="text-indent: 2em;">将下载的php安装文件<a href="http://cn2.php.net/get/php-5.0.5-Win32.zip/from/cn.php.net/mirror" target="_blank">php-5.0.5-Win32.zip</a>右键解压缩。</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/06D391A2654006E29578EE1E22F0F4D8.gif" alt="" border="0" width="230" height="306" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">指定解压缩的位置，我的设定在&#8220;D:\php&#8221;</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/507EE3FE500CA51633D57359F245D9E6.gif" alt="" border="0" width="490" height="433" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">查看解压缩后的文件夹内容，找到&#8220;php.ini-dist&#8221;文件，将其重命名为&#8220;php.ini&#8221;，打开编辑，找到下面图中的地方， Ln385，有一个&#8220;register_globals = Off&#8221;值，这个值是用来打开全局变量的，比如表单送过来的值，如果这个值设为&#8220;Off&#8221;，就只能用&#8220;$_POST['变量名']、$_GET['变量名 ']&#8221;等来取得送过来的值，如果设为&#8220;On&#8221;，就可以直接使用&#8220;$变量名&#8221;来获取送过来的值，当然，设为&#8220;Off&#8221;就比较安全，不会让人轻易将网页间传送的数据截取。这个值是否改成&#8220;On&#8221;就看自己感觉了，是安全重要还是方便重要？</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/6AFE57A7C79A3120BC7C460D04A6DD59.gif" alt="" border="0" width="431" height="365" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">这里还有一个地方要编辑，功能就是使php能够直接调用其它模块，比如访问mysql，如下图所示，Ln563，选择要加载的模块，去掉前面的 &#8220;;&#8221;，就表示要加载此模块了，加载的越多，占用的资源也就多一点，不过也多不到哪去，比如我要用mysql，就要把&#8220;;extension= php_mysql.dll&#8221;前的&#8220;;&#8221;去掉。所有的模块文件都放在php解压缩目录的&#8220;ext&#8221;之下，我这里的截图是把所有能加载的模块都加载上去了，前面的&#8220;;&#8221;没去掉的，是因为&#8220;ext&#8221;目录下默认没有此模块，加载会提示找不到文件而出错。这里只是参考，一般不需要加载这么多，需要的加载上就可以了，编辑好后保存，关闭。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/CF4C9456C36E36B3FA0E54863D9FF60B.gif" alt="" border="0" width="429" height="739" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">如果上一步加载了其它模块，就要指明模块的位置，否则重启Apache的时候会提示&#8220;找不到指定模块&#8221;的错误，这里介绍一种最简单的方法，直接将php安装路径、里面的ext路径指定到windows系统路径中&#8212;&#8212;在&#8220;我的电脑&#8221;上右键，&#8220;属性&#8221;，选择&#8220;高级&#8221;标签，点选&#8220;环境变量&#8221;，在&#8220;系统变量&#8221;下找到&#8220;Path&#8221;变量，选择，双击或点击&#8220;编辑&#8221;，将&#8220;;D:\php;D:\php\ext&#8221;加到原有值的后面，当然，其中的&#8220;D:\php&#8221; 是我的安装目录，你要将它改为自己的php安装目录，如下图所示，全部确定。系统路径添加好后要重启电脑才能生效，可以现在重启，也可以在所有软件安装或配置好后重启。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/35342B3E3999B8E486E6B8CE5D73EF76.gif" alt="" border="0" width="590" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">现在开始将php以module方式与Apache相结合，使php融入Apache，照先前的方法打开Apache的配置文件，Ln 173，找到这里，添加进如图所示选中的两行，第一行<strong style="color: #ff6600;">&#8220;LoadModule php5_module "D:/php/php5apache2_2.dll"&#8221;</strong>是指以module方式加载php，第二行&#8220;PHPIniDir "D:/php"&#8221;是指明php的配置文件php.ini的位置，是当然，其中的&#8220;D:/php&#8221;要改成你先前选择的php解压缩的目录。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/52E7ADAF91BE46D0EB48BD5982F00246.gif" alt="" border="0" width="431" height="366" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">还是Apache的配置文件，Ln 757，加入&#8220;AddType application/x-httpd-php .php&#8221;、&#8220;AddType application/x-httpd-php .html&#8221;两行，你也可以加入更多，实质就是添加可以执行php的文件类型，比如你再加上一行&#8220;AddType application/x-httpd-php .htm&#8221;，则.htm文件也可以执行php程序了，你甚至还可以添加上一行&#8220;AddType application/x-httpd-php .txt&#8221;，让普通的文本文件格式也能运行php程序。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/60C2E070B9A9690345AD08437DAAA1F9.gif" alt="" border="0" width="430" height="362" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">前面所说的目录默认索引文件也可以改一下，因为现在加了php，有些文件就直接存为.php了，我们也可以把&#8220;index.php&#8221;设为默认索引文件，优先顺序就自己排了，我的是放在第一位。编辑完成，保存，关闭。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/436180CE85AF964CC9E8073AA0C869B3.gif" alt="" border="0" width="431" height="365" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">现在，php的安装，与Apache的结合已经全部完成，用屏幕右下角的小图标重启Apache，你的Apache服务器就支持了php。</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;"><strong>三、mysql的安装，与php、Apache相结合</strong></p>
<p style="text-indent: 2em;">打开下载的mysql安装文件<a href="http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.14-win32.zip/from/http://download.softagency.net/MySQL/" target="_blank">mysql-4.1.14-win32.zip</a>，双击解压缩，运行&#8220;setup.exe&#8221;，出现如下界面</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/AC61EC8296DBDBD8D2DF52CA87BDCDA4.gif" alt="" border="0" width="502" height="384" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">mysql安装向导启动，按&#8220;Next&#8221;继续</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/B07BEE23ACD6199EC9A30481D1979CF0.gif" alt="" border="0" width="502" height="385" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">选择安装类型，有&#8220;Typical（默认）&#8221;、&#8220;Complete（完全）&#8221;、&#8220;Custom（用户自定义）&#8221;三个选项，我们选择&#8220;Custom&#8221;，有更多的选项，也方便熟悉安装过程</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/CD0A09D363DDF74DCBF691AC9879FBB6.gif" alt="" border="0" width="588" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">在&#8220;Developer Components（开发者部分）&#8221;上左键单击，选择&#8220;This feature, and all subfeatures, will be installed on local hard drive.&#8221;，即&#8220;此部分，及下属子部分内容，全部安装在本地硬盘上&#8221;。在上面的&#8220;MySQL Server（mysql服务器）&#8221;、&#8220;Client Programs（mysql客户端程序）&#8221;、&#8220;Documentation（文档）&#8221;也如此操作，以保证安装所有文件。点选&#8220;Change...&#8221;，手动指定安装目录。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/C5712D380D06A649EAA7D446D8ED91ED.gif" alt="" border="0" width="503" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">填上安装目录，我的是&#8220;D:\mysql&#8221;，也建议不要放在与操作系统同一分区，这样可以防止系统备份还原的时候，数据被清空。按&#8220;OK&#8221;继续。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/DC7479D846AA302D647939C67ADC0B95.gif" alt="" border="0" width="501" height="385" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">返回刚才的界面，按&#8220;Next&#8221;继续。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/7504524A73B06D086BFBBED104FB468B.gif" alt="" border="0" width="502" height="385" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">确认一下先前的设置，如果有误，按&#8220;Back&#8221;返回重做。按&#8220;Install&#8221;开始安装。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/54196C507E66B459E82A3C65243ADE40.gif" alt="" border="0" width="502" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">正在安装中，请稍候，直到出现下面的界面</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/FBA5F1B304F49FBEAA68BA2C57572661.gif" alt="" border="0" width="503" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">这里是询问你是否要注册一个mysql.com的账号，或是使用已有的账号登陆mysql.com，一般不需要了，点选&#8220;Skip Sign-Up&#8221;，按&#8220;Next&#8221;略过此步骤。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/10FC94552347132116DDAFF977AE747F.gif" alt="" border="0" width="504" height="384" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">现在软件安装完成了，出现上面的界面，这里有一个很好的功能，mysql配置向导，不用向以前一样，自己手动乱七八糟的配置my.ini了，将 &#8220;Configure the Mysql Server now&#8221;前面的勾打上，点&#8220;Finish&#8221;结束软件的安装并启动mysql配置向导。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/CA1EC64A318715671218803B9B4A2030.gif" alt="" border="0" width="503" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">mysql配置向导启动界面，按&#8220;Next&#8221;继续。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/6E50CE778965049B10726569DF31202F.gif" alt="" border="0" width="504" height="385" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">选择配置方式，&#8220;Detailed Configuration（手动精确配置）&#8221;、&#8220;Standard Configuration（标准配置）&#8221;，我们选择&#8220;Detailed Configuration&#8221;，方便熟悉配置过程。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/134E791C5A1CEBC9B1039907C031190B.gif" alt="" border="0" width="503" height="385" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">选择服务器类型，&#8220;Developer Machine（开发测试类，mysql占用很少资源）&#8221;、&#8220;Server Machine（服务器类型，mysql占用较多资源）&#8221;、&#8220;Dedicated MySQL Server Machine（专门的数据库服务器，mysql占用所有可用资源）&#8221;，大家根据自己的类型选择了，一般选&#8220;Server Machine&#8221;，不会太少，也不会占满。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/1809D363081314946A59263CE67BEE38.gif" alt="" border="0" width="502" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">选择mysql数据库的大致用途，&#8220;Multifunctional Database（通用多功能型，好）&#8221;、&#8220;Transactional Database Only（服务器类型，专注于事务处理，一般）&#8221;、&#8220;Non-Transactional Database Only（非事务处理型，较简单，主要做一些监控、记数用，对MyISAM数据类型的支持仅限于non-transactional），随自己的用途而选择了，我这里选择&#8220;Transactional Database Only&#8221;，按&#8220;Next&#8221;继续。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/974B9FFA76C51DB4AD15F691323083D6.gif" alt="" border="0" width="503" height="385" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">对InnoDB Tablespace进行配置，就是为InnoDB 数据库文件选择一个存储空间，如果修改了，要记住位置，重装的时候要选择一样的地方，否则可能会造成数据库损坏，当然，对数据库做个备份就没问题了，这里不详述。我这里没有修改，使用用默认位置，直接按&#8220;Next&#8221;继续</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/EC8F7F964E5E83DDB7697FB7F33D51CC.gif" alt="" border="0" width="502" height="384" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">选择您的网站的一般mysql访问量，同时连接的数目，&#8220;Decision Support(DSS)/OLAP（20个左右）&#8221;、&#8220;Online Transaction Processing(OLTP)（500个左右）&#8221;、&#8220;Manual Setting（手动设置，自己输一个数）&#8221;，我这里选&#8220;Online Transaction Processing(OLTP)&#8221;，自己的服务器，应该够用了，按&#8220;Next&#8221;继续</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/98B3746C9428165F72A220D17159CC4F.gif" alt="" border="0" width="502" height="385" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">是否启用TCP/IP连接，设定端口，如果不启用，就只能在自己的机器上访问mysql数据库了，我这里启用，把前面的勾打上，Port Number：3306，按&#8220;Next&#8221;继续</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/C5B6A3E03A91E263A59C25F3AF7C5292.gif" alt="" border="0" width="503" height="534" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">这个比较重要，就是对mysql默认数据库语言编码进行设置，第一个是西文编码，第二个是多字节的通用utf8编码，都不是我们通用的编码，这里选择第三个，然后在Character Set那里选择或填入&#8220;gbk&#8221;，当然也可以用&#8220;gb2312&#8221;，区别就是gbk的字库容量大，包括了gb2312的所有汉字，并且加上了繁体字、和其它乱七八糟的字&#8212;&#8212;使用mysql的时候，在执行数据操作命令之前运行一次&#8220;SET NAMES GBK;&#8221;（运行一次就行了，GBK可以替换为其它值，视这里的设置而定），就可以正常的使用汉字（或其它文字）了，否则不能正常显示汉字。按 &#8220;Next&#8221;继续。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/9ED4307E1B58960DC5FC4FEF83FF2993.gif" alt="" border="0" width="501" height="389" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">选择是否将mysql安装为windows服务，还可以指定Service Name（服务标识名称），是否将mysql的bin目录加入到Windows PATH（加入后，就可以直接使用bin下的文件，而不用指出目录名，比如连接，&#8220;mysql.exe -uusername -ppassword;&#8221;就可以了，不用指出mysql.exe的完整地址，很方便），我这里全部打上了勾，Service Name不变。按&#8220;Next&#8221;继续。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/8850E209E64D8FE8D1C76B869FE2F261.gif" alt="" border="0" width="503" height="387" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">这一步询问是否要修改默认root用户（超级管理）的密码（默认为空），&#8220;New root password&#8221;如果要修改，就在此填入新密码（如果是重装，并且之前已经设置了密码，在这里更改密码可能会出错，请留空，并将&#8220;Modify Security Settings&#8221;前面的勾去掉，安装配置完成后另行修改密码），&#8220;Confirm（再输一遍）&#8221;内再填一次，防止输错。&#8220;Enable root access from remote machines（是否允许root用户在其它的机器上登陆，如果要安全，就不要勾上，如果要方便，就勾上它）&#8221;。最后&#8220;Create An Anonymous Account（新建一个匿名用户，匿名用户可以连接数据库，不能操作数据，包括查询）&#8221;，一般就不用勾了，设置完毕，按&#8220;Next&#8221;继续。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/A30C1F0177779C4806A7F04D0F00B5DA.gif" alt="" border="0" width="504" height="384" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">确认设置无误，如果有误，按&#8220;Back&#8221;返回检查。按&#8220;Execute&#8221;使设置生效。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/F08C52F35BE19658BD9639A42157F92B.gif" alt="" border="0" width="502" height="386" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">设置完毕，按&#8220;Finish&#8221;结束mysql的安装与配置&#8212;&#8212;这里有一个比较常见的错误，就是不能&#8220;Start service&#8221;，一般出现在以前有安装mysql的服务器上，解决的办法，先保证以前安装的mysql服务器彻底卸载掉了；不行的话，检查是否按上面一步所说，之前的密码是否有修改，照上面的操作；如果依然不行，将mysql安装目录下的data文件夹备份，然后删除，在安装完成后，将安装生成的 data文件夹删除，备份的data文件夹移回来，再重启mysql服务就可以了，这种情况下，可能需要将数据库检查一下，然后修复一次，防止数据出错。</p>
<p style="text-indent: 2em;">与Apache及php相结合，前面已提过，这里再说一下，在php安装目录下，找到先前重命名并编辑过的 php.ini，如下图所示，Ln563，把&#8220;;extension=php_mysql.dll&#8221;前的&#8220;;&#8221;去掉，加载mysql模块。保存，关闭后，重启apache就可以了。这里也可以选择其它要加载的模块，去掉前面的&#8220;;&#8221;，就表示要加载此模块了，加载的越多，占用的资源也就多一点，不过也多不到哪去。所有的模块文件都放在php解压缩目录的&#8220;ext&#8221;之下，我这里的截图是把所有能加载的模块都加载上去了，前面的&#8220;;&#8221;没去掉的，是因为&#8220;ext&#8221; 目录下默认没有此模块，加载会提示找不到文件而出错。这里只是参考，一般不需要加载这么多，需要的加载上就可以了，编辑好后保存，关闭。</p>
<p style="text-indent: 2em;"></p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/CF4C9456C36E36B3FA0E54863D9FF60B.gif" alt="" border="0" width="429" height="739" /> </center>
<p>&nbsp;</p>
<p style="text-indent: 2em;"></p>
<p style="text-indent: 2em;">同样，加载了模块后，就要指明模块的位置，否则重启Apache的时候会提示&#8220;找不到指定模块&#8221;的错误，这里介绍一种最简单的方法，直接将 php安装路径、里面的ext路径指定到windows系统路径中&#8212;&#8212;在&#8220;我的电脑&#8221;上右键，&#8220;属性&#8221;，选择&#8220;高级&#8221;标签，点选&#8220;环境变量&#8221;，在&#8220;系统变量&#8221;下找到&#8220;Path&#8221;变量，选择，双击或点击&#8220;编辑&#8221;，将&#8220;;D:\php;D:\php\ext&#8221;加到原有值的后面，当然，其中的&#8220;D:\php&#8221;是我的安装目录，你要将它改为自己的php安装目录，如下图所示，全部确定。系统路径添加好后要重启电脑才能生效，可以现在重启，也可以在所有软件安装或配置好后重启。</p>
<p style="text-indent: 2em;"></p>
<p>&nbsp;</p>
<center><img src="http://www.webdn.com/web_file/program/php/06020802/images/35342B3E3999B8E486E6B8CE5D73EF76.gif" alt="" border="0" width="582" /> </center><img src ="http://www.blogjava.net/ywj-316/aggbug/307328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-12-26 00:45 <a href="http://www.blogjava.net/ywj-316/archive/2009/12/26/307328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex初步认识</title><link>http://www.blogjava.net/ywj-316/archive/2009/12/16/306120.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Wed, 16 Dec 2009 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/12/16/306120.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/306120.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/12/16/306120.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/306120.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/306120.html</trackback:ping><description><![CDATA[<strong>一切开始的地方</strong><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Application&nbsp;</span><span style="color: #ff0000">xmlns:mx</span><span style="color: #0000ff">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000">&nbsp;layout</span><span style="color: #0000ff">="absolute"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Panel</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:TextArea&nbsp;</span><span style="color: #ff0000">text</span><span style="color: #0000ff">="Say&nbsp;hello&nbsp;to&nbsp;Flex!"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Button&nbsp;</span><span style="color: #ff0000">label</span><span style="color: #0000ff">="Close"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:Panel</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:Application</span><span style="color: #0000ff">&gt;</span></div>
1 头两行包含了版本号、编码、以及命名空间的信息<br />
2 Flex 应用程序所有的具体内容都被放在&lt;mx:Application&gt;标签对中<br />
3 在MXML 文件中的每个标签都有前缀mx，它是Flex 的设计命名空间<br />
4 父标签对中嵌套子标签对,标签是成对出现的<br />
<br />
<strong>连接数据</strong><br />
<br />
Flex 应用程序不直接与数据库进行连接，使用MXML 和ActionScript 代码来操作和管理数据<br />
<br />
连接数据库的第一步是生成将在Flex 程序中使用到的数据<br />
步骤：<br />
1. 创建一个数据库（如MySQL）。<br />
2. 编写脚本连接MySQL 数据库并生成XML 格式的数据。<br />
<br />
<strong>(一)连接外部数据源</strong><br />
<br />
对于 所生成的XML 格式数据，你可以使用HTTPService 组件来请求获取数据<br />
例(php)：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Application&nbsp;</span><span style="color: #ff0000">xmlns:mx</span><span style="color: #0000ff">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000">&nbsp;layout</span><span style="color: #0000ff">="absolute"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:HTTPService<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #ff0000">id</span><span style="color: #0000ff">="productsRequest"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />url</span><span style="color: #0000ff">="http://www.somesite.com/products.php"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span></div>
HTTPService 组件定义了一个请求ID，你将使用这个ID 来控制提供数据的URL 或者<br />
服务器与数据之间的绑定。<br />
<br />
<strong><strong>(二)</strong>外部数据与数据驱动控制的绑定</strong><br />
<br />
通过数据与数据驱动控制（data-driven control）的绑定，你就可以处理HTTPService的结果（XML 数据），<br />
就象这样：
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:DataGrid&nbsp;</span><span style="color: #ff0000">x</span><span style="color: #0000ff">="20"</span><span style="color: #ff0000">&nbsp;y</span><span style="color: #0000ff">="80"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="productGrid"</span><span style="color: #ff0000">&nbsp;width</span><span style="color: #0000ff">="400"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />dataProvider</span><span style="color: #0000ff">="{productRequest.lastResult.products.items}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:columns</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:DataGridColumn&nbsp;</span><span style="color: #ff0000">headerText</span><span style="color: #0000ff">="Name"</span><span style="color: #ff0000">&nbsp;dataField</span><span style="color: #0000ff">="name"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:DataGridColumn&nbsp;</span><span style="color: #ff0000">headerText</span><span style="color: #0000ff">="Price"</span><span style="color: #ff0000">&nbsp;dataField</span><span style="color: #0000ff">="price"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:columns</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:DataGrid</span><span style="color: #0000ff">&gt;</span></div>
数据绑定的语法显示在数据控制的dataProvider 属性中（在波浪形的括号里），它包含了HTTPService 请求ID、<br />
lastResult 方法、以及XML 文件的数据结构。在这个例子中，XML数据源的数据结构看起来就象这样：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">XML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">products</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Mobile&nbsp;Phone</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">price</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">$199</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">price</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Car&nbsp;Charger</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">price</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">$34</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">price</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">products</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">XML</span><span style="color: #0000ff">&gt;</span></div>
通过设置dataField 属性，项目数据（name 和price）作为数据栅格中每一列的数据。<br />
<br />
<strong><strong>(三)</strong>在运行时加载数据</strong><br />
<br />
你还可以在Flex 程序开始运行时加载数据，就象随后所示，在 HTTPService 中向某个特定的URL 发送一个请求：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Application&nbsp;</span><span style="color: #ff0000">xmlns:mx</span><span style="color: #0000ff">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000">&nbsp;layout</span><span style="color: #0000ff">="absolute"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />creationComplete</span><span style="color: #0000ff">="productsRequest.send()"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span></div>
当你将creationComplete 方法添加到应用程序标签里后，数据会在运行时进行加载并交于数据驱动控制（在这个例子中是数据栅格）。<br />
你还可以将HTTPService 请求添加到一个控制事件上而不是程序里的标签中，就象如下所示：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Button&nbsp;</span><span style="color: #ff0000">x</span><span style="color: #0000ff">="50"</span><span style="color: #ff0000">&nbsp;y</span><span style="color: #0000ff">="8"</span><span style="color: #ff0000">&nbsp;label</span><span style="color: #0000ff">="Get&nbsp;Data"</span><span style="color: #ff0000">&nbsp;click</span><span style="color: #0000ff">="productsRequest.send();"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span></div>
Flex 提供许多方法去连接、管理、格式化、以及校验数据。你可以通过使用远程程序调用、数据服务、或者其它企业级技术来操纵和管理数据。<br />
<br />
<strong>Flex 应用程序设计界面布局</strong><br />
<br />
1 通过设置组件的属性值来控制Flex 应用程序的界面布局，就象如下所示：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Application&nbsp;</span><span style="color: #ff0000">xmlns:mx</span><span style="color: #0000ff">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000">&nbsp;layout</span><span style="color: #0000ff">="absolute"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Panel&nbsp;</span><span style="color: #ff0000">layout</span><span style="color: #0000ff">="absolute"</span><span style="color: #ff0000">&nbsp;width</span><span style="color: #0000ff">="80%"</span><span style="color: #ff0000">&nbsp;height</span><span style="color: #0000ff">="80%"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:TextArea&nbsp;</span><span style="color: #ff0000">text</span><span style="color: #0000ff">="Say&nbsp;hello&nbsp;to&nbsp;Flex!"</span><span style="color: #ff0000">&nbsp;top</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000">&nbsp;bottom</span><span style="color: #0000ff">="70"</span><span style="color: #ff0000">&nbsp;left</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />right</span><span style="color: #0000ff">="30"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">mx:Button&nbsp;</span><span style="color: #ff0000">label</span><span style="color: #0000ff">="Close"</span><span style="color: #ff0000">&nbsp;right</span><span style="color: #0000ff">="30"</span><span style="color: #ff0000">&nbsp;bottom</span><span style="color: #0000ff">="40"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:Panel</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">mx:Application</span><span style="color: #0000ff">&gt;</span></div>
许多容器组件都允许以绝对坐标的方式创建布局，这就意义着你可以使用精确的x 和y的坐标来放置组件。你还可以对应其父容器的相对位置来<br />
放置组件并约束它们，使它们在应用程序的界面放大或缩小时仍然保持其彼此的位置。<br />
2 使用风格和主题增强视觉方面的设计<br />
1)如果样式/style 的属性值没有被指定，将由整个程序中运行的主题/theme 来进行控制。在默认情况下，Flex 应用程序使用Halo 主题<br />
2)创建主题<br />
<br />
 <img src ="http://www.blogjava.net/ywj-316/aggbug/306120.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-12-16 11:30 <a href="http://www.blogjava.net/ywj-316/archive/2009/12/16/306120.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j基础</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/29/304164.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Sun, 29 Nov 2009 14:34:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/29/304164.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/304164.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/29/304164.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/304164.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/304164.html</trackback:ping><description><![CDATA[<p>http://logging.apache.org/<br />
1 导入log4j的jar包</p>
<p>2 在scr下创建log4j.properties<br />
&nbsp; log4j.properties<br />
&nbsp; //输入级别debug&lt;info&lt;warn&lt;error<br />
&nbsp; log4j.rootLogger=debug[info][warn][error],appender1<br />
&nbsp; //ConsoleAppender输出到控制台,FileAppender输出到文件<br />
&nbsp; log4j.appender.appender1=org.apache.log4j.ConsoleAppender[FileAppender]<br />
&nbsp; //写出的目标文件<br />
&nbsp; log4j.appender.appender1.File=c:/demllog4j.log[.html]<br />
&nbsp; //写入文件的格式<br />
&nbsp; log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout[HTMLLayout]<br />
&nbsp; <br />
&nbsp; 例1，控制台输出：<br />
&nbsp; log4j.rootLogger=debug,appender1<br />
&nbsp; log4j.appender.appender1=org.apache.log4j.ConsoleAppender<br />
&nbsp; log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout<br />
&nbsp; 例2，输出到.log文件：<br />
&nbsp; log4j.rootLogger=debug,appender1<br />
&nbsp; log4j.appender.appender1=org.apache.log4j.FileAppender<br />
&nbsp; log4j.appender.appender1.File=c:/demllog4j.log<br />
&nbsp; log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout<br />
&nbsp; 例3，输出到.html文件：<br />
&nbsp; log4j.appender.appender1=org.apache.log4j.FileAppender<br />
&nbsp; log4j.appender.appender1.File=c:/demllog4j.html<br />
&nbsp; log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout<br />
&nbsp; 例4，输出到.html文件同时输出到控制台：<br />
&nbsp; log4j.rootLogger=error,appender1,appender2<br />
&nbsp; log4j.appender.appender1=org.apache.log4j.ConsoleAppender<br />
&nbsp; log4j.appender.appender2=org.apache.log4j.FileAppender<br />
&nbsp; log4j.appender.appender2.File=c:/demllog4j.html<br />
&nbsp; log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout<br />
&nbsp; log4j.appender.appender2.layout=org.apache.log4j.HTMLLayout<br />
&nbsp; 例5，为不同类定义输出格式<br />
&nbsp; log4j.rootLogger=debug,appender1<br />
&nbsp; #log4j.logger.com.liuwei=info,appender1<br />
&nbsp; log4j.appender.appender1=org.apache.log4j.ConsoleAppender<br />
&nbsp; log4j.appender.appender1.layout=org.apache.log4j.PatternLayout<br />
&nbsp; log4j.appender.appender1.layout.ConversionPattern=%r [%t] %p - %c - %l - %m%n</p>
<p>3 编写代码</p>
<p>public class Test {<br />
&nbsp;//参数为当前类的类名,得到logger<br />
&nbsp;private static Logger logger=Logger.getLogger(Test.class);<br />
&nbsp;<br />
&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //输出信息<br />
&nbsp;&nbsp;//if(log.isDebugEnabled()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.debug("sssssssss");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info("ssssssss");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.error("ssssssssss");<br />
&nbsp;&nbsp;//}<br />
&nbsp;}<br />
}<br />
--------------------------------------------------------------------<br />
log4j核心<br />
&nbsp;<br />
1 Logger 完成日志信息的处理</p>
<p>&nbsp; 输出级别：<br />
&nbsp;&nbsp;&nbsp; debug 错误信息&nbsp;&nbsp;&nbsp;&nbsp; if(log.isDebugEnabled()){log.debug("x="+x);}<br />
&nbsp;&nbsp;&nbsp; info 日常信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(log.isDebugEnabled()){log.info("System started at"+new Date());}<br />
&nbsp;&nbsp;&nbsp; warn 警告信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(log.isDebugEnabled()){log.warn("Server down-returnning");}<br />
&nbsp;&nbsp;&nbsp; error 程序出错信息 if(log.isDebugEnabled()){log.error("Could not access server",e);}<br />
&nbsp; <br />
2 Appender 设置日志信息的去向</p>
<p>&nbsp; org.apache.log4j.ConsoleAppender(控制台)<br />
&nbsp; org.apache.log4j.FileAppender(文件)<br />
&nbsp; org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)<br />
&nbsp; org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件)<br />
&nbsp; org.apache.log4j.WriterAppender(将日志讯息以串流格式发送到任意指定的地方)<br />
&nbsp; org.apache.log4j.JdbcAppender(将日志讯息保存到数据库中)</p>
<p>3 Layout 设置日志信息的输出样式</p>
<p>&nbsp; org.apache.log4j.HTMLLayout (以HTML表格形式布局)<br />
&nbsp; org.apache.log4j.SimpleLayout (包含日志讯息的级别和讯息字符串)<br />
&nbsp; org.apache.log4j.TTCCLayout (包含日志产生的时间、执行者、类别等等讯息)<br />
&nbsp; org.apache.log4j.PatternLayout (可以灵活地指定布局模式)<br />
&nbsp; <br />
&nbsp; PatternLayout：<br />
&nbsp;&nbsp;&nbsp;&nbsp; -%p 输出优先级，即debug,info,warn,error<br />
&nbsp;&nbsp;&nbsp;&nbsp; -%r 输出自应用启到到输出该日志讯息所耗费的毫秒数<br />
&nbsp;&nbsp;&nbsp;&nbsp; -%t 输出产生该日志事件的线程名<br />
&nbsp;&nbsp;&nbsp;&nbsp; -%f 输出日志讯息所属的类的类别名<br />
&nbsp;&nbsp;&nbsp;&nbsp; -%c 输出日志讯息所属的类的全名<br />
&nbsp;&nbsp;&nbsp;&nbsp; -%d 输出日志时间点的日期或时间，指定格式的方式：%d{yyyy-MM-dd HH:mm:ss}<br />
&nbsp;&nbsp;&nbsp;&nbsp; -%l 输出日志讯息所属发生位置，即输出日志讯息的语句处于它所在的类别的第几行<br />
&nbsp;&nbsp;&nbsp;&nbsp; -%m 输出代码中指定的讯息，如log(message)中的message<br />
&nbsp;&nbsp;&nbsp;&nbsp; -%n 输出一个换行符号</p>
<p>配置文件<br />
&nbsp; log4j.properties/log4j.xml</p><img src ="http://www.blogjava.net/ywj-316/aggbug/304164.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-29 22:34 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/29/304164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>junit</title><link>http://www.blogjava.net/ywj-316/archive/2009/11/03/300945.html</link><dc:creator>junly</dc:creator><author>junly</author><pubDate>Tue, 03 Nov 2009 09:44:00 GMT</pubDate><guid>http://www.blogjava.net/ywj-316/archive/2009/11/03/300945.html</guid><wfw:comment>http://www.blogjava.net/ywj-316/comments/300945.html</wfw:comment><comments>http://www.blogjava.net/ywj-316/archive/2009/11/03/300945.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywj-316/comments/commentRss/300945.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywj-316/services/trackbacks/300945.html</trackback:ping><description><![CDATA[junit简介：<br />
&nbsp;* 创建test目录与src同级，同时建立相同的包目录<br />
&nbsp;* 编写测试类xxxTest,需要继承TestCase<br />
&nbsp;* 编写单元测试方法，测试方法必须以test开头，测试方法不能含有参数和返回值，如：<br />
&nbsp;&nbsp; public void testHello(){}<br />
&nbsp;* 最好单元测试的代码单独建立一个目录<br />
&nbsp;* 断言<br />
&nbsp;&nbsp; this.assertEquals("消息",2,hello.add(1,1));<br />
&nbsp;* protected void setUp() throws exception{}//相当于init方法，可以自动调用<img src ="http://www.blogjava.net/ywj-316/aggbug/300945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywj-316/" target="_blank">junly</a> 2009-11-03 17:44 <a href="http://www.blogjava.net/ywj-316/archive/2009/11/03/300945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>