﻿<?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-jasmine214--love-随笔分类-网管--拓扑图</title><link>http://www.blogjava.net/jasmine214--love/category/45454.html</link><description>微笑着思考</description><language>zh-cn</language><lastBuildDate>Thu, 15 Jul 2010 22:40:25 GMT</lastBuildDate><pubDate>Thu, 15 Jul 2010 22:40:25 GMT</pubDate><ttl>60</ttl><item><title>iTopoview Java网络拓扑图组件 ---官网</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/15/326155.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Wed, 14 Jul 2010 23:06:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/15/326155.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/326155.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/15/326155.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/326155.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/326155.html</trackback:ping><description><![CDATA[
		<p style="TEXT-INDENT: 2px" align="left">
				<b>
						<font size="4">原文：<a href="http://www.zhtelecom.com/itopoview.htm">http://www.zhtelecom.com/itopoview.htm</a><br />iTopoview Java网络拓扑图组件</font>
				</b>
		</p>
		<p style="TEXT-INDENT: 2px">
				<b>
						<font color="#00ff00" size="4">
								<a name="系统介绍">系统介绍</a>
						</font>
				</b>
				<br />    iTopoview是专门面向网络拓扑图领域的界面组件，采用Java技术开发，为软件开发人员准备。使用者 无需了解任何图形技术，无需借助其他脚本，通过简单的Java数据定义和操纵，即可创建出专业高效的网络拓扑图；并且提供了菜单、鼠标、用户业务数据、用户业务处理、告警等操作，让网络拓扑图的工作变得 愉悦高效。iTopoview附带了一个完整网络拓扑图界面源代码，供用户学习参考，可用于Java GUI、Web Applet或Ajax + iTopoview等环境中。</p>
		<p>
				<a name="在线体验">
						<font color="#00ff00" size="4">
								<b>在线</b>
						</font>
				</a>
				<font color="#00ff00" size="4">
						<b>
								<a name="在线体验">体验</a>
						</b>
				</font>
		</p>
		<p>
				<a href="http://www.zhtelecom.com/itopoview.jnlp">
						<img border="0" src="http://www.zhtelecom.com/image/webstart.png" width="88" height="23" />Java Web Start方式演示</a>(需Java插件)<a href="http://www.zhtelecom.com/itopoviewdemo.htm">           浏览器在线方式演示</a></p>
		<p style="TEXT-INDENT: 2px">
				<br />
				<font color="#00ff00" size="4">
						<b>
								<a name="示例程序概貌">iTopoview界面样例</a>
						</b>
				</font>
				<br />采用iTopoview API开发的界面<br /><img border="0" src="http://www.zhtelecom.com/pic/itopoview_sugarnms.PNG" width="528" height="374" /><br /></p>
<img src ="http://www.blogjava.net/jasmine214--love/aggbug/326155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-15 07:06 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/15/326155.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用wz_jsgraphics.js（javascript图形库）进行画矢量图,兼容多浏览器</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/14/326067.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Wed, 14 Jul 2010 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/14/326067.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/326067.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/14/326067.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/326067.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/326067.html</trackback:ping><description><![CDATA[
		<p>
				<span id="ArticleContent1_ArticleContent1_lblContent">
						<font size="2">原文：</font>
						<a href="http://squll.blogbus.com/logs/3932957.html">
								<font size="2">http://squll.blogbus.com/logs/3932957.html</font>
						</a>
						<br />
						<font size="2">序：在 </font>
						<a href="http://www.sitepoint.com/">
								<font color="#0000ff" size="2">www.sitepoint.com </font>
						</a>
						<font size="2">上看了 Simon 的一篇 BLOG ，引导我去了一个很棒的 Web 开发站点 </font>
						<a href="http://www.walterzorn.com/">
								<font color="#0000ff" size="2">http://www.walterzorn.com/ </font>
						</a>
						<font size="2">，并在那里获得了一个仅用 DHTML 和 Javscript 技术开发的一个高性能的矢量图形库 wz_jsgraphics.js （感谢 Walter Zorn 开发了这个图形库），使用它就可以在你的网页上画出漂亮的矢量图形了。进入这个图形库的介绍页面 </font>
						<a href="http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm">
								<font color="#0000ff" size="2">http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm </font>
						</a>
						<font size="2">，映入眼帘的是折线、多边形、圆等常见的一些几何图形，起初我以为不过是一些图片罢了，当我看到这行小字 These are not image files. Shapes &amp; text have been dynamically drawn with wz_jsgraphics.js 后，并细细阅读了关于它的说明后，才意识到除了VML 和 SVG可以在 网页上绘制显示矢量图形，仅用DHTML 和 Javascript 同样可以做到这一切！是不是觉得很吃惊呢？(双击一下这个文档，看看放大后的矢量图形吧)，ok!废话少说，下面我将详细介绍一下这个图形库。</font>
				</span>
		</p>
		<span>
				<span id="ArticleContent1_ArticleContent1_lblContent">
						<p>
								<strong>
										<font size="2">
												<span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10.5pt">★ </span>总览 (overview) </font>
								</strong>
						</p>
						<p>
								<font size="2">该图形库使用了 DHTML 和 Javascript 技术，它可以画线，圆，椭圆，折线，多边形，矩形。对于一个不太了解 Javascript 的人来说使用这个图形库也是非常容易的，另外，使用这个图形库画出的图形是完全被优化到像素级的！ </font>
						</p>
						<span id="ArticleContent1_ArticleContent1_lblContent">
								<p>
										<strong>
												<font size="2">
														<span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10.5pt">★ </span>浏览器的兼容性 </font>
										</strong>
								</p>
								<p>
										<font size="2">Linux 系统 : <br />Browsers with Gecko-Engine (Mozilla, Netscape 6+, Galeon), Konqueror 3.0.3 ( 非常慢 ), Netscape 4, Opera 5 and 6. <br /><br />Windows 系统 : <br />Gecko-Browsers, IE 4, 5 and 6, Netscape 4, Opera 5, 6 and 7. <br /></font>
								</p>
								<p>
										<font size="2">说明：如果在网页全部加载完成后，使用这个矢量图形库进行绘制，在 Opera 版本 7 以前的浏览器中不会执行， Netscape 版本 4 也不会执行。相反，当 HTML 页面正在被解析时， 使用这个图形库进行绘制是全部浏览器均能做到的。 <br /><br /></font>
								</p>
								<p>
										<strong>
												<font size="2">
														<span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10.5pt">★ </span>怎样使用这个矢量图形库？ </font>
										</strong>
								</p>
								<p>
								</p>
								<table bordercolor="#ffffff" cellpadding="0" bgcolor="#e6e6e6">
										<tbody>
												<tr>
														<td>
																<p>
																		<font size="2">1 ．包含这个库 </font>
																</p>
																<p>
																		<font size="2">插入下面的代码到你的 html 文件的开头部分（在 &lt;head&gt; 和 &lt;/head&gt; 之间）： </font>
																</p>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
												<tr>
														<td>
																<table cellspacing="0" cellpadding="0">
																		<tbody>
																				<tr>
																						<td>
																								<table cellspacing="1" cellpadding="0">
																										<tbody>
																												<tr>
																														<td>
																																<p>
																																		<font size="2">&lt;script type="text/javascript" src="wz_jsgraphics.js"&gt;&lt;/script&gt; </font>
																																</p>
																														</td>
																												</tr>
																										</tbody>
																								</table>
																						</td>
																				</tr>
																		</tbody>
																</table>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
												<tr>
														<td>
																<p>
																		<font size="2">2 ．使用层（ div 或 layer ）作为画布（ canvases ） <br />如果是当页面正被载入时，直接在 html 页面中绘制，那么这个步骤不是必须的。 </font>
																</p>
																<p>
																		<font size="2">如果在页面加载完成后绘制，应该设置几个具有绝对坐标的层，作为你的画布，每一个层应该有一个唯一的 id: <br />&lt;div id="myCanvas" style="position:relative;height:250px;width:100%;"&gt;&lt;/div&gt; <br />... <br />&lt;div id="anotherCanvas" style="position:relative;height:100px;width:300px;"&gt;&lt;/div&gt; </font>
																</p>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
												<tr>
														<td>
																<p>
																		<font size="2">3 ．下载并保存这个图形库 </font>
																</p>
																<p>
																		<font size="2">到这个地址 </font>
																		<a href="http://www.walterzorn.com/scripts/wz_jsgraphics.zip">
																				<font color="#0000ff" size="2">http://www.walterzorn.com/scripts/wz_jsgraphics.zip </font>
																		</a>
																		<font size="2">下载，将解压后的 wz_jagraphics.js 与你的 html 文件放至相同的目录中，如果你的 wz_jagraphics.js 与 html 文件处于不同的目录下，记得在 src=”wz_jsgraphics.js” 中指示 wz_jagraphics.js 的相对路径。 </font>
																</p>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
										</tbody>
								</table>
								<p>
										<strong>
												<font size="2">
												</font>
										</strong>
								</p>
								<p align="left">
										<font size="2">
												<strong>
														<span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10.5pt">★ </span>怎样使用这个矢量图形库中的绘制函数？ </strong>
												<strong>
												</strong>
										</font>
								</p>
								<p align="left">
										<font size="2">
												<strong>1 </strong>
												<strong>． </strong>
												<strong>创建一个 </strong>
												<strong>jsGraphics </strong>
												<strong>对象 </strong>
												<strong>
												</strong>
										</font>
								</p>
								<p>
								</p>
								<table cellpadding="0">
										<tbody>
												<tr>
														<td>
																<p align="left">
																		<font size="2">
																				<strong>a) </strong>
																				<strong>在页面完全载入后绘制： </strong>
																				<strong>
																				</strong>
																		</font>
																</p>
																<p align="left">
																		<font size="2">（这种方式不会在 Netscape 版本 4 和 Opera 版本小于 7 的浏览器中执行） </font>
																</p>
																<p align="left">
																		<font size="2">还记得前面用 div 元素创建的画布吗？看下面的示例， 需要为 div 创建相应的 jsGraphics 对象，这些代码必须插入到相关的 div 元素结束标志 &lt;/div&gt; 后面， 但必须在 &lt;/body&gt; 的前面， div 元素的 id 作为 new jsGraphics(); 的构造参数，像下面这样： </font>
																</p>
														</td>
												</tr>
												<tr>
														<td>
																<table cellspacing="0" cellpadding="0">
																		<tbody>
																				<tr>
																						<td>
																								<table cellspacing="1" cellpadding="0">
																										<tbody>
																												<tr>
																														<td bgcolor="#e6e6e6">
																																<p align="left">
																																		<font size="2">&lt;script type="text/javascript"&gt; <br />&lt;!-- <br /><br />var jg = new jsGraphics("myCanvas"); <br /><br />//--&gt; <br />&lt;/script&gt; </font>
																																</p>
																														</td>
																												</tr>
																										</tbody>
																								</table>
																						</td>
																				</tr>
																		</tbody>
																</table>
														</td>
												</tr>
												<tr>
														<td>
																<p align="left">
																		<font size="2">如果有多个 div 元素，每一个 div 都需要有它自已的 jsGraphics 对象： </font>
																</p>
														</td>
												</tr>
												<tr>
														<td>
																<table cellspacing="0" cellpadding="0">
																		<tbody>
																				<tr>
																						<td>
																								<table cellspacing="1" cellpadding="0">
																										<tbody>
																												<tr>
																														<td bgcolor="#e6e6e6">
																																<p align="left">
																																		<font size="2">&lt;script type="text/javascript"&gt; <br />&lt;!-- <br /><br />var jg = new jsGraphics("myCanvas"); <br />var jg2 = new jsGraphics("anotherCanvas"); <br /><br />//--&gt; <br />&lt;/script&gt; </font>
																																</p>
																														</td>
																												</tr>
																										</tbody>
																								</table>
																						</td>
																				</tr>
																		</tbody>
																</table>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
												<tr>
														<td>
																<p align="left">
																		<font size="2">
																				<strong>b ）在页面载入的时候绘制 </strong>
																				<br />（在 Netscape 4 和 Opera 5/6 可以执行） </font>
																</p>
																<p align="left">
																		<font size="2">只需要将构造参数设为空： </font>
																</p>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
												<tr>
														<td>
																<table cellspacing="0" cellpadding="0">
																		<tbody>
																				<tr>
																						<td>
																								<table cellspacing="1" cellpadding="0">
																										<tbody>
																												<tr>
																														<td bgcolor="#e6e6e6">
																																<p align="left">
																																		<font size="2">&lt;script type="text/javascript"&gt; <br />&lt;!-- <br /><br />var jg_doc = new jsGraphics(); <br /><br />//--&gt; <br />&lt;/script&gt; </font>
																																</p>
																														</td>
																												</tr>
																										</tbody>
																								</table>
																						</td>
																				</tr>
																		</tbody>
																</table>
																<p align="left">
																		<font size="2">你可以选择 jg,jg2 或 jg_doc 其它的变量名，只要不违反 Javascript 的命名规则就可以。 </font>
																</p>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
												<tr>
														<td>
																<font size="2">
																</font>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
										</tbody>
								</table>
								<p>
										<strong>
												<font size="2">
												</font>
										</strong>
								</p>
								<p align="left">
										<font size="2">
												<strong>2. </strong>
												<strong>图形绘制函数 </strong>
												<strong>
												</strong>
										</font>
								</p>
								<p>
								</p>
								<table cellpadding="0">
										<tbody>
												<tr>
														<td>
																<p align="left">
																		<font size="2">为确保所有浏览器能正确执行， 这里选择页面载入时进行绘制，即上文的 b 方式 </font>
																</p>
																<p align="left">
																		<font size="2">一旦产生这些图形对象（在这个示例中 jg, jg2 或 jg_doc ），就可以使用它来调用绘制图形的方法。由图形对象所绘制的图形将会在相关的 div 元素上显示（采用上文 a 方式构造图形对象）： </font>
																</p>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
												<tr>
														<td>
																<table cellspacing="0" cellpadding="0">
																		<tbody>
																				<tr>
																						<td>
																								<table cellspacing="1" cellpadding="0">
																										<tbody>
																												<tr>
																														<td bgcolor="#e6e6e6">
																																<p align="left">
																																		<font size="2">&lt;script type="text/javascript"&gt; <br />&lt;!-- <br />function myDrawFunction() <br />{ <br />jg_doc.setColor("#00ff00"); <em>// </em><em>选择绿色 </em><br />jg_doc.fillEllipse(100, 200, 100, 180); <em>// </em><em>坐标点相对于文档 </em><em>(document) </em><br />jg_doc.setColor("maroon"); <br />jg_doc.drawPolyline(new Array(50, 10, 120), new Array(10, 50, 70)); <br />jg_doc.paint(); <em>// </em><em>注意：直接在文档上绘制，而不与某个 </em><em>div </em><em>关联 </em><em>, </em><br /><br />jg.setColor("#ff0000"); <em>// </em><em>选择红色 </em><br />jg.drawLine(10, 113, 220, 55); <em>// </em><em>坐标点相对于 </em><em>div </em><em>元素 </em><em>"myCanvas" </em><br />jg.setColor("#0000ff"); <em>// </em><em>选择蓝色 </em><br />jg.fillRect(110, 120, 30, 60); <br />jg.paint(); <br /><br />jg2.setColor("#0000ff"); <em>// </em><em>选择蓝色 </em><br />jg2.drawEllipse(10, 50, 30, 100); <br />jg2.drawRect(400, 10, 100, 50); <br />jg2.paint(); <br />} <br /><br />var jg_doc = new jsGraphics(); <em>// </em><em>直接在文档上绘制 </em><br />var jg = new jsGraphics("myCanvas"); <br />var jg2 = new jsGraphics("anotherCanvas"); <br /><br />myDrawFunction(); <br /><br />//--&gt; <br />&lt;/script&gt; </font>
																																</p>
																														</td>
																												</tr>
																										</tbody>
																								</table>
																						</td>
																				</tr>
																		</tbody>
																</table>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
												<tr>
														<td>
																<p align="left">
																		<font size="2">开始画时应首先选择画笔颜色，否则，画笔的颜色取默认值－黑色。坐标值作为绘制图形方法的参数，如果采用上文的 a 方式构造图形对象，那么坐标值是相对于 div 元素的左上角的。每一个画布（图形对象），它的 paint 方法必须被显示的调用以产生 html 格式的图形，否则，在你的屏幕上什么都不会发生。 </font>
																</p>
														</td>
														<td>
																<font size="2">
																</font>
														</td>
												</tr>
										</tbody>
								</table>
								<br />
								<br />
								<table class="mytab" cellspacing="0" cellpadding="0">
										<tbody>
												<tr class="mytd">
														<td class="mytd" bgcolor="#e6e6e6" align="middle">
																<strong>
																		<font size="2">函数名（方法） </font>
																</strong>
														</td>
														<td class="mytd" bgcolor="#e6e6e6" align="middle">
																<font size="2">
																		<strong>示例代码（用 </strong>
																		<strong>jg </strong>
																		<strong>图形对象） </strong>
																</font>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>setColor( </strong>"#HexColor" <strong>); </strong><br />指定画笔颜色，一旦设置后，这个颜色会一直保留，直到下一次再重新指定画笔颜色，这个颜色值可以类似于 html 中的 #rrggbb 颜色表示，用名称表示颜色也可以，例如：“ maroon ” </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.setColor("#ff0000"); <br /><br />or with identical result <br /><br />jg.setColor("red"); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>setStroke( </strong>Number <strong>); </strong><br />指定画笔采用的线厚度，这个厚度一旦被设置，会一直保留，直到下一次重新指定一，默认厚度是 1px. <br />要设置点划线型，需要传 Stroke.DOTTED 参数，点划线型同样适用于矩形，多边型，折线和椭圆。 <br /><br /></font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.setStroke(3); <br /><br />or <br /><br />jg.setStroke(Stroke.DOTTED); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>drawLine( </strong>X1, Y1, X2, Y2 <strong>); </strong><br />画线。从第一个坐标点到第二个坐标点，线的厚度由 setStroke 设置。 </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.drawLine(20,50,453,40); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>drawPolyline( </strong>Xpoints, Ypoints <strong>); </strong><br />一条折线是一系列线段的集合， Xpoints 和 Ypoints 是每个点的 x 坐标和 y 坐标的数组集合，必须像下面这样声明： </font>
																</p>
																<p align="left">
																		<font size="2">var Xpoints = new Array(x1,x2,x3,x4,x5); <br />var YPoints = new Array(y1,y2,y3,y4,y5); </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">var Xpoints = new Array(10,85,93,60); <br />var YPoints = new Array(50,10,105,87); <br />jg.drawPolyline(Xpoints,Ypoints); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>drawRect( </strong>X, Y, width, height <strong>); </strong></font>
																</p>
																<p align="left">
																		<font size="2">一个矩形的外边线。参照左上角的坐标点，并指定矩形的宽度和高度。 </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.drawRect(20,50,70,140); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>fillRect( </strong>X, Y, width, height <strong>); </strong></font>
																</p>
																<p align="left">
																		<font size="2">填充矩形，参照左上角的坐标点，并指定矩形的宽度和高度。 </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.fillRect(20,50,453,40); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>drawPolygon( </strong>Xpoints, Ypoints <strong>); </strong><br />多边形。 Xpoints 和 Ypoints 是每个点的 x 坐标和 y 坐标的数组集合，必须像下面这样声明： </font>
																</p>
																<p align="left">
																		<font size="2">var Xpoints = new Array(x1,x2,x3,x4,x5); <br />var YPoints = new Array(y1,y2,y3,y4,y5); </font>
																</p>
																<p align="left">
																		<font size="2">如果始点和终点末被指定，多边线将会自动闭合。 </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">var Xpoints = new Array(10,85,93,60); <br />var Ypoints = new Array(50,10,105,87); <br />jg.drawPolygon(Xpoints, Ypoints); <br /><br />Instead of Xpoints and Ypoints you may use another name provided it follows the rules for variable names. </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>fillPolygon( </strong>Xpoints, Ypoints <strong>); </strong></font>
																</p>
																<p align="left">
																		<font size="2">填充矩形。参数作用见 drawPolygon() </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.fillPolygon(new Array(10,85,93,60), new Array(50,10,105,87)); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>drawEllipse( </strong>X, Y, width, height <strong>); </strong></font>
																</p>
																<p align="left">
																		<font size="2">画椭圆边线。参照椭圆的外接矩形， x 和 y 是这个外接矩形的左上角坐标 </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.drawEllipse(20,50,70,140); <br />or <br />jg.drawOval(20,50,70,140); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>fillEllipse( </strong>X, Y, width, height <strong>); </strong><br />填充椭圆。参数见 drawEllipse() </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.fillEllipse(20,50,71,141); <br />or <br />jg.fillOval(20,50,71,141); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>drawString( </strong>"Text", X, Y <strong>); </strong></font>
																</p>
																<p align="left">
																		<font size="2">写文本至由 x 和 y 坐标指定的位置。不同于 Java ，坐标值是第一行文本的左上角坐标值。如果文本中包含有 HTML 标记将被转义，举个例子： </font>
																</p>
																<p align="left">
																		<font size="2">"Some Text&lt;br&gt;more Text" 会被转义为两行 </font>
																</p>
																<p align="left">
																		<br />
																		<font size="2">
																				<strong>setFont( </strong>"font-family", "size+unit", Style <strong>); </strong><br />在 drawString() 之前调用。指定字体，大小，样式，字体和大小可以是与 HTML 中指示的一样，至于样式，可以使用的有： <br />Font.PLAIN 默认样式，非粗体和斜体 <br />Font.BOLD 粗体 <br />Font.ITALIC 斜体 </font>
																</p>
																<p align="left">
																		<font size="2">它们可以结合使用 </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.setFont("arial","15px",Font.BOLD); <br />jg.drawString("Some Text",20,50); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>drawImage( </strong>"src", X, Y, width, height <strong>); </strong><br />在指定的位置画图像， ”src” 参数指定图像所在路径， width 和 height 参数允许调整图像宽高。 </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.drawImage("friendlyDog.jpg", 20,50,100,150); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>paint(); </strong>
																				<br />必须显示调用，才能真正在 html 页面上画图形，不推荐每隔一段（每画一个图形）就调用一次。 </font>
																</p>
																<p align="left">
																		<font size="2">像下面这样的调用应该避免 : <br />jg.drawEllipse(0, 0, 100, 100); <br />jg.paint(); <br />jg.drawLine(200, 10, 400, 40); <br />jg.paint(); <br />... <br /></font>
																</p>
																<p align="left">
																		<font size="2">像下面这样的调用性能会很高 : <br />jg.drawEllipse(0, 0, 100, 100); <br />jg.drawLine(200, 10, 400, 40); <br />/*... 还有其它画的方法 ... */ <br />jg.paint(); // 最后调用 paint() </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.paint(); </font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<strong>
																				<font size="2">clear(); </font>
																		</strong>
																</p>
																<p align="left">
																		<font size="2">与图形对象关联的 div 画布中的图形被清除（在 div 中不是由这个图形对象创建的内容是不会被改变的） </font>
																</p>
														</td>
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">jg.clear(); <br /></font>
																</p>
														</td>
												</tr>
												<tr class="mytd">
														<td class="mytd" valign="top">
																<p align="left">
																		<font size="2">
																				<strong>setPrintable( </strong>true <strong>); </strong></font>
																</p>
																<p align="left">
																		<font size="2">默认情况下，打印这些图形是不太可行的，因为浏览器的默认打印设置中会关闭打印背景，调用 setPrintable() ，并设置参数为 true ，将重置图形为可打印的（至少在 Mozilla/Netscape 6+ and IE 中） </font>
																</p>
														</td>
												</tr>
										</tbody>
								</table>
						</span>
				</span>
		</span>
<img src ="http://www.blogjava.net/jasmine214--love/aggbug/326067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-14 11:22 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/14/326067.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZK + Spring + Hibernate最简单的例子</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325786.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Sun, 11 Jul 2010 08:25:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325786.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325786.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325786.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325786.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325786.html</trackback:ping><description><![CDATA[
		<div class="blog_content"> <br />原文：<a href="http://chanson.javaeye.com/blog/164786">http://chanson.javaeye.com/blog/164786</a><br />1、Spring+Hibernate配置起来很简单，具体就不细说了，网上多的是。 <br /><br />2、ZK显示页面 <br />【query.zul】 <br />&lt;?xml version="1.0" encoding="UTF-8"?&gt; <br />&lt;window&gt; <br />&lt;button label="查询"&gt;&lt;/button&gt; <br />&lt;vbox&gt; <br />  &lt;listbox id="testListID" width="800px" rows="5" use="chanson.common.web.ui.ListTestBean"&gt; <br />    &lt;listhead&gt; <br />      &lt;listheader label="姓名"/&gt; <br />      &lt;listheader label="性别"/&gt; <br />      &lt;listheader label="生日"/&gt; <br />      &lt;listheader label="薪资"/&gt; <br />    &lt;/listhead&gt; <br />    &lt;listitem value="${each.id}" forEach="${testList}"&gt; <br />      &lt;listcell label="${each.name}"/&gt; <br />      &lt;listcell label="${each.sex}"/&gt; <br />      &lt;listcell label="${each.birthday}"/&gt; <br />      &lt;listcell label="${each.money}"/&gt; <br />    &lt;/listitem&gt; <br />  &lt;/listbox&gt; <br />&lt;/vbox&gt; <br />&lt;/window&gt; <br /><br />《说明》： <br />A、&lt;?xml version="1.0" encoding="UTF-8"?&gt; <br />这个别忘记了，刚学的时候就是因为它报了不少错误。 <br />B、use="chanson.common.web.ui.ListTestBean" <br />这个类就是衔接前后台的关键类。 <br />C、${*.*}这个是标准的EL写法。 <br /><br /><br />3、ListTestBean——最关键的衔接类 <br />public class ListTestBean extends Listbox { <br /><br />    public void onCreate() { <br />      ITestLogic testLogic = (ITestLogic) SpringFactory <br />  .getBeanFactory().getBean("testLogic"); <br />      List testList = testLogic.find("from Test"); <br />        Iterator it = testList.iterator(); <br />        while(it.hasNext()) { <br />            Test test = (Test) it.next(); <br />            Long id = test.getId(); <br />            String name = test.getName(); <br />            Integer sex = test.getSex(); <br />            Date birthday =test.getBirthday(); <br />            Double money = test.getMoney();       <br /><br />            Listitem listitem = new Listitem(); <br />            listitem.setValue(id); <br />            listitem.setParent(this); <br /><br />            Listcell nameCell = new Listcell(name); <br />            Listcell sexCell = new Listcell(sex.toString()); <br />            Listcell birthdayCell = new Listcell(birthday.toString()); <br />            Listcell moneyCell = new Listcell(money.toString()); <br />            nameCell.setParent(listitem); <br />            sexCell.setParent(listitem); <br />            birthdayCell.setParent(listitem); <br />            moneyCell.setParent(listitem); <br />        } <br />     } <br />} <br />《说明》： <br />A、例子是一个简单的查询，所以看起来也比较简单。 <br />B、该类的作用有点像似servlet，只是省略了页面跳转 <br />C、setter/getter真是麻烦，得找找更简洁的方法 <br /><br /><br /><br />【附录】 <br />1）、数据库设计——test表 <br />CREATE TABLE `test` ( <br />  `id` decimal(22,0) NOT NULL default '0', <br />  `name` varchar(100) default NULL, <br />  `sex` int(1) default NULL, <br />  `birthday` datetime default NULL, <br />  `money` decimal(15,4) default NULL, <br />  PRIMARY KEY  (`id`) <br />) ENGINE=InnoDB DEFAULT CHARSET=utf8; <br />2）、其他应该没什么了吧？ <br />3）、页面效果图 <br /></div>
		<div class="attachments">
				<ul style="DISPLAY: none">
						<li>
								<a href="http://dl.javaeye.com/upload/attachment/15301/4175d538-7d7c-3284-9266-a707152cc0f9.gif" target="_blank">
										<img class="magplus" title="点击查看原始大小图片" src="http://dl.javaeye.com/upload/attachment/15301/4175d538-7d7c-3284-9266-a707152cc0f9-thumb.gif" />
								</a>
						</li>
						<li>描述: 页面效果图 
</li>
						<li>大小: 27.5 KB </li>
				</ul>
		</div>
<img src ="http://www.blogjava.net/jasmine214--love/aggbug/325786.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-11 16:25 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325786.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZK--学习研究1/2/3</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325785.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Sun, 11 Jul 2010 08:01:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325785.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325785.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325785.html</trackback:ping><description><![CDATA[原文：<a href="http://jerrysun.blog.51cto.com/745955/280525">http://jerrysun.blog.51cto.com/745955/280525</a><br />由于工作的变动，已经很久没有更新Blog了。来到新公司又马不停蹄的开始了自己的工作，现在终于可以忙里偷闲了，呵呵。
<div>　　虽然说新公司的业务和自己之前从事的是两个领域，不过好在技术还是Java，而且在新公司的第一个项目还和之前的一样，开发一个内容管理系统，哈哈，这个可是我比较擅长的。在经历两月的时间之后，终于满足了需求的内容，顺利上线。不过又出了新问题，就是界面比较难看，这时领导提议说“要不你用ZK改造吧，公司之前的系统也是ZK做的”。这个提议倒是不错，不过对于我来说又是一个挑战。</div><div>　　google了一下，发现ZK在国内使用的不是很多，资料也不是很全。只能是摸着河过石头了。不会写，还不会抄吗，先下载ZK官网的Demo看看再说<img onclick="window.open(&quot;http://blog.51cto.com/viewpic.php?refimg=&quot; + this.src)" border="0" alt="" src="http://blog.51cto.com/editor/icons/etc_17.gif" width="19" height="19" /></div><div>　　下了Demo，搭建环境，运行，发现ZK确实比较好用，非常类似于微软的.Net，它提供了很多组件，使用这些组件可以很快的进行开发。我认为ZK最好的地方在于code-behind，这一点和.Net是非常类似的。这样就不用再像写JSP的时候那样将一些具体的操作代码写到页面中，使页面代码非常难阅读；而它又比WebWork更加灵活，有些东西不需要再重新修改WebWork中的组件（由于敝人对于WebWork的使用不是很精通，请各位WebWork、Structs达人不要拍砖<img onclick="window.open(&quot;http://blog.51cto.com/viewpic.php?refimg=&quot; + this.src)" border="0" alt="" src="http://blog.51cto.com/editor/icons/etc_20.gif" width="19" height="19" />）。</div><div>　　也许是我接触的东西少吧（作为一个程序员，实在是惭愧啊），总之ZK让我觉得很容易上手，后面的应用也说明了这一点。</div><br />书接上回，前面说了那么多，到底ZK有啥好处呢？这个就只可意会不可言传了，呵呵。
<div>　　举个例子，假设有个列表需要显示，在页面中可以使用table或者是ul li来实现，table的代码如下：</div><div><div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 16px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 4px; FONT-FAMILY: verdana,宋体; COLOR: #000000; FONT-SIZE: 10pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px">&lt;table cellspacing=<font color="#800000">"0"</font> cellpadding=<font color="#800000">"0"</font> width=<font color="#800000">"90%"</font> border=<font color="#800000">"0"</font><font color="#0000ff">class</font>=<font color="#800000">"table_cont"</font>&gt; <br />  &lt;tbody&gt; <br />&lt;% <br />    <font color="#008000">//判断列表是否为空 </font><br />    <font color="#0000ff">if</font>(activeList==<font color="#0000ff">null</font> || activeList.isEmpty() || activeList.size()&lt;1) <br />    { <br />      <font color="#008000">//为空，显示提示信息 </font><br />      out.print(<font color="#800000">"&lt;tr&gt;&lt;td colspan=\"4\" style=\"width:400px;\"&gt;目前 "</font>+strProvinceName+<font color="#800000">" 还没有活动&lt;/td&gt;&lt;/tr&gt;"</font>); <br />    } <br />    <font color="#0000ff">else</font><br />    { <br />      <font color="#008000">//不为空，显示列表内容 </font><br />      out.println(<font color="#800000">"&lt;tr&gt;\n&lt;th style=\"width:40%;\"&gt;名称&lt;/th&gt;&lt;th style=\"width:30%;\"&gt;活动日期&lt;/th&gt;&lt;th style=\"width:10%;\"&gt;状态&lt;/th&gt;&lt;th style=\"width:20%;\"&gt;操作&lt;/th&gt;\n&lt;/tr&gt;"</font>); <br />      Iterator&lt;Active&gt; iter = activeList.iterator(); <br />      Active active = <font color="#0000ff">null</font>; <br />      <font color="#0000ff">while</font>(iter.hasNext()) <br />      { <br />        active = (Active)iter.next(); <br />        out.println(<font color="#800000">"&lt;tr&gt;"</font>); <br />        out.print(<font color="#800000">"&lt;td style=\"width:40%;\"&gt;"</font>+active.getTitle()+<font color="#800000">"&lt;/td&gt;"</font>); <br />        <font color="#0000ff">if</font>(active.getCreateDt()!=<font color="#0000ff">null</font>) <br />        { <br />          out.print(<font color="#800000">"&lt;td style=\"width:30%;\"&gt;"</font>+active.getCreateDt().toString().substring(0,10)+<font color="#800000">"&lt;/td&gt;"</font>); <br />        } <br />        <font color="#0000ff">else</font><br />        { <br />          out.print(<font color="#800000">"&lt;td style=\"width:10%;\"&gt; &lt;/td&gt;"</font>); <br />        } <br />        <font color="#0000ff">if</font>(active.getStatus()==1) <br />        { <br />          out.print(<font color="#800000">"&lt;td&gt;上线&lt;/td&gt;"</font>); <br />        } <br />        <font color="#0000ff">else</font><font color="#0000ff">if</font>(active.getStatus()==2) <br />        { <br />          out.print(<font color="#800000">"&lt;td&gt;下线&lt;/td&gt;"</font>); <br />        } <br />        out.print(<font color="#800000">"&lt;td style=\"width:20%;\"&gt;&lt;a href=\"activeUpdate.jsp?province="</font>+province+<font color="#800000">"&amp;activeId="</font>+active.getId()+<font color="#800000">"\"&gt;修改&lt;/a&gt;  "</font>); <br />        out.print(<font color="#800000">"&lt;a href=\"activeDel.jsp?province="</font>+province+<font color="#800000">"&amp;activeId="</font>+active.getId()+<font color="#800000">"\"&gt;删除&lt;/a&gt;&lt;/td&gt;"</font>); <br />        out.println(<font color="#800000">"&lt;/tr&gt;"</font>); <br />      } <br />    } <br />%&gt; <br />  &lt;/tbody&gt; <br />&lt;/table&gt;</div></div><div>　　效果图如下：</div><div><img onclick="window.open(&quot;http://blog.51cto.com/viewpic.php?refimg=&quot; + this.src)" border="0" alt="" src="http://img1.51cto.com/attachment/201005/201005141273833028094.jpg" /></div><div>　　可以看出其中有一些的判断，然后还要担心“&lt;%”和“%&gt;”是否匹配，“{”和“}”是否匹配等等情况。如果是ZK的话，这些不必要的担心就可以省去了。</div><div>　　页面（list.zul）代码：</div><div><div><div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 16px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 4px; FONT-FAMILY: verdana,宋体; COLOR: #000000; FONT-SIZE: 10pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><font color="#0000ff">&lt;?</font><font color="#800000">xml</font><font color="#ff0000">version</font><font color="#0000ff">="1.0"</font><font color="#ff0000">encoding</font><font color="#0000ff">="UTF-8"</font><font color="#0000ff">?&gt;</font><br /><font color="#0000ff">&lt;?</font><font color="#800000">page</font><font color="#ff0000">title</font><font color="#0000ff">="列表"</font><font color="#ff0000">contentType</font><font color="#0000ff">="text/html;charset=UTF-8"</font><font color="#0000ff">?&gt;</font><br /><font color="#0000ff">&lt;</font><font color="#800000">zk</font><font color="#0000ff">&gt;</font><br /><font color="#0000ff">&lt;</font><font color="#800000">window</font><font color="#ff0000">style</font><font color="#0000ff">="heigth:100%; border:0; text-align:center;"</font><font color="#ff0000">id</font><font color="#0000ff">="winList"</font><font color="#0000ff">&gt;</font><br />  <font color="#0000ff">&lt;</font><font color="#800000">style</font><font color="#ff0000">src</font><font color="#0000ff">="../styles/global.css"</font><font color="#0000ff">&gt;</font><font color="#0000ff">&lt;/</font><font color="#800000">style</font><font color="#0000ff">&gt;</font><br />  <font color="#0000ff">&lt;</font><font color="#800000">div</font><font color="#ff0000">style</font><font color="#0000ff">="padding-top:20px; vertical-align:bottom;"</font><font color="#0000ff">&gt;</font><br />    <font color="#0000ff">&lt;</font><font color="#800000">label</font><font color="#ff0000">value</font><font color="#0000ff">="列表"</font><font color="#0000ff">/&gt;</font><font color="#0000ff">&lt;</font><font color="#800000">separator</font><font color="#0000ff">/&gt;</font><br />  <font color="#0000ff">&lt;/</font><font color="#800000">div</font><font color="#0000ff">&gt;</font><br />  <font color="#0000ff">&lt;</font><font color="#800000">div</font><font color="#ff0000">style</font><font color="#0000ff">="padding:0px 0px 0px 0px;text-align:center;width:80%;"</font><font color="#0000ff">&gt;</font><br />    <font color="#0000ff">&lt;</font><font color="#800000">label</font><font color="#ff0000">id</font><font color="#0000ff">="lblTips"</font><font color="#ff0000">visible</font><font color="#0000ff">="false"</font><font color="#ff0000">style</font><font color="#0000ff">="color:#FF0000;"</font><font color="#0000ff">/&gt;</font><br />    <font color="#0000ff">&lt;</font><font color="#800000">listbox</font><font color="#ff0000">id</font><font color="#0000ff">="blacklistList"</font><font color="#ff0000">style</font><font color="#0000ff">="width:100%;"</font><font color="#0000ff">&gt;</font><br />      <font color="#0000ff">&lt;</font><font color="#800000">listhead</font><font color="#ff0000">style</font><font color="#0000ff">="text-align:center;"</font><font color="#0000ff">&gt;</font><br />        <font color="#0000ff">&lt;</font><font color="#800000">listheader</font><font color="#ff0000">label</font><font color="#0000ff">="用户号码"</font><font color="#ff0000">style</font><font color="#0000ff">="width:15%;"</font><font color="#0000ff">/&gt;</font><br />        <font color="#0000ff">&lt;</font><font color="#800000">listheader</font><font color="#ff0000">label</font><font color="#0000ff">="用户类别"</font><font color="#ff0000">style</font><font color="#0000ff">="width:15%;"</font><font color="#0000ff">/&gt;</font><br />        <font color="#0000ff">&lt;</font><font color="#800000">listheader</font><font color="#ff0000">label</font><font color="#0000ff">="说明"</font><font color="#ff0000">style</font><font color="#0000ff">="width:35%;"</font><font color="#0000ff">/&gt;</font><br />        <font color="#0000ff">&lt;</font><font color="#800000">listheader</font><font color="#ff0000">label</font><font color="#0000ff">="添加日期"</font><font color="#ff0000">style</font><font color="#0000ff">="width:15%;"</font><font color="#0000ff">/&gt;</font><br />        <font color="#0000ff">&lt;</font><font color="#800000">listheader</font><font color="#ff0000">label</font><font color="#0000ff">="操作"</font><font color="#ff0000">style</font><font color="#0000ff">="width:20%;"</font><font color="#0000ff">/&gt;</font><br />      <font color="#0000ff">&lt;/</font><font color="#800000">listhead</font><font color="#0000ff">&gt;</font><br />    <font color="#0000ff">&lt;/</font><font color="#800000">listbox</font><font color="#0000ff">&gt;</font><br />  <font color="#0000ff">&lt;/</font><font color="#800000">div</font><font color="#0000ff">&gt;</font><br />  <font color="#0000ff">&lt;</font><font color="#800000">zscript</font><font color="#ff0000">language</font><font color="#0000ff">="Java"</font><font color="#0000ff">&gt;</font><br />    &lt;![CDATA[ <br />             import com.zk.list; <br />             list ui = new list(); <br />             ui.setWinMain(winlList); <br />             ui.showAllBlacklist(); <br />    ]]&gt; <br />  <font color="#0000ff">&lt;/</font><font color="#800000">zscript</font><font color="#0000ff">&gt;</font><br /><font color="#0000ff">&lt;/</font><font color="#800000">window</font><font color="#0000ff">&gt;</font><br /><font color="#0000ff">&lt;/</font><font color="#800000">zk</font><font color="#0000ff">&gt;</font></div></div></div><div>　　逻辑处理代码（list.java）：</div><div><div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 16px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 4px; FONT-FAMILY: verdana,宋体; COLOR: #000000; FONT-SIZE: 10pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><font color="#0000ff">public</font><font color="#0000ff">void</font> showAllBlacklist() <br />{ <br />  <font color="#0000ff">try</font><br />  { <br />    <font color="#008000">// 得到列表 </font><br />    BlacklistIF blacklistIf = ServiceLocator.getBlacklistIF(); <br />    List&lt;Blacklist&gt; blacklistList = blacklistIf.findAllBlacklist(-1); <br />     <br />    <font color="#008000">// 判断列表是否为空 </font><br />    <font color="#0000ff">if</font>(blacklistList.size()&gt;0 &amp;&amp; !blacklistList.isEmpty()) <br />    { <br />      <font color="#0000ff">this</font>.showList(blacklistList); <br />    } <br />  } <br />  <font color="#0000ff">catch</font>(Exception ex) <br />  { <br />    ex.printStackTrace(); <br />  } <br />} <br /><br /><font color="#0000ff">private</font><font color="#0000ff">void</font> showList(List&lt;Blacklist&gt; blacklistList) <br />{ <br />  <font color="#008000">// 得到列表组件，用于显示群发安排列表 </font><br />  Listbox listbox = (Listbox)winMain.getFellow(<font color="#800000">"blacklistList"</font>); <br />    <br />  <font color="#008000">// 列表的行组件 </font><br />  Listitem listitem = <font color="#0000ff">new</font> Listitem(); <br />    <br />  <font color="#008000">// 列表的列组件 </font><br />  Listcell listcell = <font color="#0000ff">new</font> Listcell(); <br />    <br />  <font color="#0000ff">for</font>(<font color="#0000ff">int</font> i=0;i&lt;blacklistList.size();i++) <br />  { <br />    <font color="#008000">// 用户号码 </font><br />    listcell.setLabel(blacklistList.get(i).getMobile()); <br />    listitem.appendChild(listcell); <br />     <br />    <font color="#008000">// 用户类别 </font><br />    listcell = <font color="#0000ff">new</font> Listcell(); <br />    <font color="#0000ff">switch</font>(blacklistList.get(i).getType()) <br />    { <br />      <font color="#0000ff">case</font> 1: <br />        listcell.setLabel(<font color="#800000">"黑名单"</font>); <br />        <font color="#0000ff">break</font>; <br />      <font color="#0000ff">case</font> 2: <br />        listcell.setLabel(<font color="#800000">"黄名单"</font>); <br />        <font color="#0000ff">break</font>; <br />      <font color="#0000ff">case</font> 3: <br />        listcell.setLabel(<font color="#800000">"绿名单"</font>); <br />        <font color="#0000ff">break</font>; <br />      <font color="#0000ff">case</font> 4: <br />        listcell.setLabel(<font color="#800000">"非彩信用户"</font>); <br />        <font color="#0000ff">break</font>; <br />    } <br />    listitem.appendChild(listcell); <br />     <br />    <font color="#008000">// 说明 </font><br />    listcell = <font color="#0000ff">new</font> Listcell(); <br />    <font color="#0000ff">if</font>(blacklistList.get(i).getDescription().equals("")) <br />    { <br />      listcell.setLabel(<font color="#800000">"暂无"</font>); <br />    } <br />    <font color="#0000ff">else</font><br />    { <br />      listcell.setLabel(blacklistList.get(i).getDescription()); <br />    } <br />    listitem.appendChild(listcell); <br />     <br />    <font color="#008000">// 添加日期 </font><br />    listcell = <font color="#0000ff">new</font> Listcell(); <br />    listcell.setLabel(blacklistList.get(i).getCreateDate().toString().substring(0,10)); <br />    listitem.appendChild(listcell); <br />     <br />    <font color="#008000">// 显示操作按钮 </font><br />    Hbox hbox = <font color="#0000ff">new</font> Hbox(); <br />     <br />    <font color="#008000">// 彩信产品的id，添加事件监听时要用final修饰的变量 </font><br />    <font color="#0000ff">final</font><font color="#0000ff">int</font> id = Integer.parseInt(blacklistList.get(i).getId().toString().trim()); <br />    <font color="#008000">// 添加一个查看按钮 </font><br />    Button button = <font color="#0000ff">new</font> Button(); <br />    button.setLabel(<font color="#800000">"查看"</font>); <br />    <font color="#008000">// 为查看按钮添加一个 </font><br />    button.addEventListener(Events.ON_CLICK, <font color="#0000ff">new</font> EventListener() <br />    { <br />      <font color="#0000ff">public</font><font color="#0000ff">void</font> onEvent(Event arg0) <font color="#0000ff">throws</font> Exception { <br />        showBlacklistDetail(String.valueOf(id)); <br />      } <br />    }); <br />    button.setVisible(<font color="#0000ff">false</font>); <br />    hbox.appendChild(button); <br />     <br />    <font color="#008000">// 添加一个删除按钮 </font><br />    button = <font color="#0000ff">new</font> Button(); <br />    button.setLabel(<font color="#800000">"删除"</font>); <br />    <font color="#008000">// 为删除按钮添加一个 </font><br />    button.addEventListener(Events.ON_CLICK, <font color="#0000ff">new</font> EventListener() <br />    { <br />      <font color="#0000ff">public</font><font color="#0000ff">void</font> onEvent(Event arg0) <font color="#0000ff">throws</font> Exception { <br />        delBlacklist(String.valueOf(id)); <br />      } <br />    }); <br />    hbox.appendChild(button); <br />     <br />    listcell = <font color="#0000ff">new</font> Listcell(); <br />    listcell.appendChild(hbox); <br />    listitem.appendChild(listcell); <br />     <br />    <font color="#008000">// 将当前行在列表中显示 </font><br />    listbox.appendChild(listitem); <br />     <br />    listitem = <font color="#0000ff">new</font> Listitem(); <br />    listcell = <font color="#0000ff">new</font> Listcell(); <br />  } <br />}</div></div><div>　　效果图如下：</div><div><img onclick="window.open(&quot;http://blog.51cto.com/viewpic.php?refimg=&quot; + this.src)" border="0" alt="" src="http://img1.51cto.com/attachment/201005/201005141273833325054.jpg" /></div><div>　　可以看到，这样就达到了逻辑处理和页面显示的代码分离，使得页面显示的代码更加清晰，而逻辑处理类的作用也更加明显。 <br />前面已经看见效果了，咱们就来开始实际应用它吧。首先要做的是搭建开发环境，访问ZK的官方网站<a href="http://www.zkoss.org/"><font color="#000000">http://www.zkoss.org/</font></a>，在页面的顶部导航，或者右侧可以看到download，点击download进去，在页面的Downloads列表中选择第二项“ZK studio”，这时会进入另一个页面，此时我们只要在MyEclipse中的插件管理面板中将“Online Installation”下面的地址粘贴进去，点击OK就好了。接下来就是等待MyEclipse帮我们把ZK插件安装好。
<div>　　安装好以后，会弹出一个对话框，要输入用户名和密码，这个只要在ZK的网站上注册一下就好了。我尝试过不输入用户名、密码，结果ZK不能正常使用了<img onclick="window.open(&quot;http://blog.51cto.com/viewpic.php?refimg=&quot; + this.src)" border="0" alt="" src="http://jerrysun.blog.51cto.com/editor/icons/etc_06.gif" width="19" height="19" /></div><div>　　开发环境有了，接下来就是来编写我们的第一个ZK工程了。在MyEclipse中选择file-&gt;new-&gt;project 然后选择ZK Project，然后next，输入工程名，finish就可以了。这时会询问是否切换到ZK的编辑面板，这个就因人而异吧，自己喜欢就好。</div><div>　　在ZUL文件的代码中，你会看到“New Content Here!” 这句话，把它替换成你自己想写的内容，保存，然后部署到Tomcat下，访问这个ZUL文件，就能看到效果了。</div><div>　　效果图如下：</div><div><img onclick="window.open(&quot;http://blog.51cto.com/viewpic.php?refimg=&quot; + this.src)" border="0" alt="" src="http://img1.51cto.com/attachment/201005/201005181274154865791.jpg" /></div><div>　　代码如下：</div><div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 16px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 4px; FONT-FAMILY: verdana,宋体; COLOR: #000000; FONT-SIZE: 10pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><font color="#0000ff">&lt;?</font><font color="#800000">page</font><font color="#ff0000">title</font><font color="#0000ff">="new page title"</font><font color="#ff0000">contentType</font><font color="#0000ff">="text/html;charset=UTF-8"</font><font color="#0000ff">?&gt;</font><br /><font color="#0000ff">&lt;</font><font color="#800000">zk</font><font color="#0000ff">&gt;</font><br /><font color="#0000ff">&lt;</font><font color="#800000">window</font><font color="#ff0000">title</font><font color="#0000ff">="new page title"</font><font color="#ff0000">border</font><font color="#0000ff">="normal"</font><font color="#0000ff">&gt;</font><br />我的第一个ZK页面，hoho<br /><font color="#0000ff">&lt;/</font><font color="#800000">window</font><font color="#0000ff">&gt;</font><br /><font color="#0000ff">&lt;/</font><font color="#800000">zk</font><font color="#0000ff">&gt;</font></div><div>　　</div><div>　　嘿嘿，第一个ZK页面出来喽</div></div><img src ="http://www.blogjava.net/jasmine214--love/aggbug/325785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-11 16:01 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZK--如何使用JSP</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325784.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Sun, 11 Jul 2010 07:55:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325784.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325784.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325784.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325784.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325784.html</trackback:ping><description><![CDATA[
		<p>
				<span>原文：<a href="http://hi.baidu.com/zk_ajax/blog/item/883b0f36030da1dca3cc2bb3.html">http://hi.baidu.com/zk_ajax/blog/item/883b0f36030da1dca3cc2bb3.html</a><br />Zk</span>
				<span>使用的是</span>
				<span>zul</span>
				<span>，据说是</span>
				<span>xul</span>
				<span>的扩展，反正对于我这种用惯</span>
				<span>JSP</span>
				<span>的人实在不习惯，于是便尝试并搜索着如何将</span>
				<span>zk</span>
				<span>整合到</span>
				<span>JSP</span>
				<span>中，还真找到了，不过</span>
				<span>JSP</span>
				<span>文件就必须严格遵守</span>
				<span>XML</span>
				<span>格式了，例如</span>
				<span>&lt; br&gt;</span>
				<span>就得写成</span>
				<span>&lt;br /&gt;</span>
				<span>或</span>
				<span>&lt;br&gt;&lt;/br&gt;</span>
				<span>了，刚开始狂报错，基本上都是标签未关闭，实在不惯啊。哈，进正题了。</span>
		</p>
		<p>
				<span>
						<span>       </span>
				</span>
				<span>还记得那个</span>
				<span>zkajax</span>
				<span>工程吗，打开它，然后打开</span>
				<span>web.xml</span>
				<span>文件</span>
				<span>(</span>
				<span>如果不知道这个文件的位置，我就该哭了</span>
				<span>)</span>
				<span>，如果出现的是图形，就点下面</span>
				<span>Source</span>
				<span>即可出现代码。</span>
		</p>
		<p>
				<span>
						<span>       </span>
				</span>
				<span>在</span>
				<span>&lt;listener&gt;</span>
				<span>标签的前面添加如下的</span>
				<span>filter(Ctrl+Shift+F5</span>
				<span>可以对齐文本</span>
				<span>)</span>
		</p>
		<p style="TEXT-INDENT: 21pt">
				<span>&lt;filter&gt;</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;filter-name&gt;zkFilter&lt;/filter-name&gt;</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;filter-class&gt;</span>
		</p>
		<p>
				<span>
						<span>                     </span>org.zkoss.zk.ui.http.DHtmlLayoutFilter</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;/filter-class&gt;</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;init-param&gt;</span>
		</p>
		<p>
				<span>
						<span>                     </span>&lt;param-name&gt;extension&lt;/param-name&gt;</span>
		</p>
		<p>
				<span>
						<span>                     </span>&lt;param-value&gt;html&lt;/param-value&gt;</span>
		</p>
		<p>
				<span>
						<span>                     </span>&lt;!-- Use XHTML components as default. --&gt;</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;/init-param&gt;</span>
		</p>
		<p>
				<span>
						<span>       </span>&lt;/filter&gt;</span>
		</p>
		<p>
				<span>
						<span>       </span>&lt;filter-mapping&gt;</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;filter-name&gt;zkFilter&lt;/filter-name&gt;</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;</span>
		</p>
		<p>
				<span>
						<span>              </span>&lt;dispatcher&gt;ERROR&lt;/dispatcher&gt;</span>
		</p>
		<p>
				<span>
						<span>       </span>&lt;/filter-mapping&gt;</span>
		</p>
		<p>
				<span>
						<span>
						</span>
						<span>     </span>
				</span>
		</p>
		<p>
				<span>在</span>
				<span>WebContent</span>
				<span>目录下新建一个</span>
				<span>test_jsp</span>
				<span>文件</span>
				<span>，</span>
				<span>内容如下</span>
				<span>
				</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">&lt;%@ page language="java" pageEncoding="UTF-8"%&gt;</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">
				</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">&lt;html xmlns:x="http://www.zkoss.org/2005/zul"&gt;</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">&lt;head&gt;</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">&lt;title&gt;</span>
				<span style="FONT-SIZE: 10pt">测试</span>
				<span style="FONT-SIZE: 10pt">zk jsp&lt;/title&gt;</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">&lt;/head&gt;</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">&lt;body&gt;</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">&lt;x:window id="test" title="</span>
				<span style="FONT-SIZE: 10pt">测试</span>
				<span style="FONT-SIZE: 10pt">zk jsp" border="normal" width="100px"&gt;</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">测试</span>
				<span style="FONT-SIZE: 10pt">zk jsp</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">&lt;/x:window&gt;</span>
		</p>
		<p style="TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 10pt">&lt;/body&gt;</span>
		</p>
		<p>
				<span style="FONT-SIZE: 10pt">&lt;/html&gt;</span>
		</p>
		<p>
				<span>
				</span>
		</p>
		<p>
				<span>在这文件上点右键</span>
				<span>-&gt;Rin As-&gt;Run on server,</span>
				<span>，即可看到运行结果，大概是下图的样子：</span>
		</p>
		<div forimg="1">
				<a href="http://hiphotos.baidu.com/zk_ajax/pic/item/5ede4cfaa6db249258ee907b.jpg" target="_blank">
						<img class="blogimg" border="0" src="http://hiphotos.baidu.com/zk_ajax/abpic/item/5ede4cfaa6db249258ee907b.jpg" width="200" height="141" small="1" />
				</a>
		</div>
		<p>
		</p>
		<p>
				<span>是不是字体很小？我觉得太小了，于是我修改</span>
				<span>css</span>
				<span>文件中的字体，我把大部分该成了</span>
				<?XML:NAMESPACE PREFIX = ST1 /?>
				<st1:chmetcnv unitname="pt" sourcevalue="10" hasspace="False" negative="False" numbertype="1" tcsc="0">
						<span>10pt</span>
				</st1:chmetcnv>
				<span>(</span>
				<span>原来为</span>
				<span>x-small</span>
				<span style="FONT-SIZE: 10pt">
				</span>
				<span style="FONT-SIZE: 10pt">或</span>
				<span style="FONT-SIZE: 10pt">xx-small</span>
				<span>)</span>
				<span>，此文件为与</span>
				<span>zul.jar\web\zul\css\normie.css.dsp</span>
				<span>，然后再运行就是下图的样子了：</span>
		</p>
		<div forimg="1">
				<a href="http://hiphotos.baidu.com/zk_ajax/pic/item/d8a51deec78b57feb3fb957b.jpg" target="_blank">
						<img class="blogimg" border="0" src="http://hiphotos.baidu.com/zk_ajax/abpic/item/d8a51deec78b57feb3fb957b.jpg" width="200" height="144" small="1" />
				</a>
		</div>
		<br />
		<p>
				<span>感觉到变化了吧。</span>
		</p>
<img src ="http://www.blogjava.net/jasmine214--love/aggbug/325784.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-11 15:55 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325784.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZK DEMO--在本地部署环境</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325783.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Sun, 11 Jul 2010 07:53:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325783.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325783.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325783.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325783.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325783.html</trackback:ping><description><![CDATA[
		<p>
				<span>原文：<a href="http://hi.baidu.com/zk_ajax/blog/item/05c0f61133ce3d7fcb80c476.html">http://hi.baidu.com/zk_ajax/blog/item/05c0f61133ce3d7fcb80c476.html</a><br />班主任让人帮忙做一个教师管理系统，我看着是一个机会，就跟一位同学去了。算是接下了一个项目。另我吃惊的是可以有一小笔收入，心中暗喜。</span>
		</p>
		<p>
				<span>
						<span>       </span>
				</span>
				<span>接下来不好过了，后台技术足够了</span>
				<span>, </span>
				<span>缺一个做界面的，要是</span>
				<span>dorado</span>
				<span>不付费早用它了。接下来费了好大劲终于找到了一个开源的东西</span>
				<span>---zk</span>
				<span>，一个作界面的不二之选。</span>
		</p>
		<p>
				<span>
						<span>       </span>
				</span>
				<span>扯远了，接下来是正题。</span>
		</p>
		<p>
				<span>
						<span>    </span>
				</span>
				<span>可以在</span>
				<span>
						<a href="http://www.zkoss.org/">http://www.zkoss.org/</a>
				</span>
				<span>上下到有关</span>
				<span>zk</span>
				<span>需要的东西，</span>
				<span>我用的版本是</span>
				<span>zk-<?XML:NAMESPACE PREFIX = ST1 /?><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.3.0</st1:chsdate>.zip</span>
				<span>。</span>
		</p>
		<p>
				<span>下面介绍如何在</span>
				<span>eclipse</span>
				<span>部署</span>
				<span>zk</span>
				<span>环境</span>
		</p>
		<p style="TEXT-INDENT: -18pt; MARGIN-LEFT: 18pt">
				<span>
						<span>(1)<span>    </span></span>
				</span>
				<span>打开</span>
				<span>eclipse, File-&gt;New-&gt;Project-&gt;Web-&gt;Dynamic Web Project</span>
				<span>，即新建一个动态网站，工程名为</span>
				<span>zkajax</span>
				<span>。我个人倾向于在</span>
				<span>Java Psrspective</span>
				<span>环境下工作。</span>
		</p>
		<p style="TEXT-INDENT: -18pt; MARGIN-LEFT: 18pt">
				<span>
						<span>(2)<span>    </span></span>
				</span>
				<span>将</span>
				<span>zk-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.3.0</st1:chsdate>\demo\src\zkdemo\WebContent </span>
				<span>下的文件放在工程中的对应位置</span>
		</p>
		<p style="TEXT-INDENT: -18pt; MARGIN-LEFT: 18pt">
				<span>
						<span>(3)<span>    </span></span>
				</span>
				<span>将</span>
				<span>zk-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.3.0</st1:chsdate>\zk-2.3.0\dist\lib </span>
				<span>下的所有</span>
				<span>jar</span>
				<span>引入路径</span>
				<span>(</span>
				<span>放在</span>
				<span>WEB-INF/lib </span>
				<span>下</span>
				<span>)</span>
		</p>
		<p style="TEXT-INDENT: -18pt; MARGIN-LEFT: 18pt">
				<span>
						<span>(4)<span>    </span></span>
				</span>
				<span>将</span>
				<span>zk-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.3.0</st1:chsdate>\demo\src\zkdemo\src </span>
				<span>下的</span>
				<span>java</span>
				<span>文件放在</span>
				<span>工程的</span>
				<span>三</span>
				<span>src</span>
				<span>下</span>
		</p>
		<p style="TEXT-INDENT: -18pt; MARGIN-LEFT: 18pt">
				<span>
						<span>(5)<span>    </span></span>
				</span>
				<span>最后是下图的样子</span>
		</p>
		<p style="TEXT-INDENT: -18pt; MARGIN-LEFT: 18pt">
				<span>
				</span>
		</p>
		<div forimg="1">
				<a href="http://hiphotos.baidu.com/zk_ajax/pic/item/d041cfd46e507a05a18bb7e1.jpg" target="_blank">
						<img class="blogimg" border="0" src="http://hiphotos.baidu.com/zk_ajax/abpic/item/d041cfd46e507a05a18bb7e1.jpg" width="200" height="140" small="1" />
				</a>
		</div>
		<br />
		<p>
		</p>
		<p style="TEXT-INDENT: -18pt; MARGIN-LEFT: 18pt">
				<span>
						<span>(6)<span>    </span></span>
				</span>
				<span>运行，在工程</span>
				<span>zkajax</span>
				<span>上点右键</span>
				<span>-&gt;Run As-&gt;Run on Server</span>
				<span>，选中</span>
				<span>tomcat</span>
				<span>，点</span>
				<span>Finish</span>
				<span>即可，网页出来后点</span>
				<span>Zk Demo </span>
				<span>，效果图如下：</span>
		</p>
		<div forimg="1">
				<a href="http://hiphotos.baidu.com/zk_ajax/pic/item/75e6f71c594d5c8f87d6b6e1.jpg" target="_blank">
						<img class="blogimg" border="0" src="http://hiphotos.baidu.com/zk_ajax/abpic/item/75e6f71c594d5c8f87d6b6e1.jpg" small="1" />
				</a>
		</div>
<img src ="http://www.blogjava.net/jasmine214--love/aggbug/325783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-11 15:53 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/11/325783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>10种加速Ajax开发的主流框架</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/08/325515.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Thu, 08 Jul 2010 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/08/325515.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325515.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/08/325515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325515.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325515.html</trackback:ping><description><![CDATA[原文：http://www.slfans.com/?action-viewnews-itemid-17119　<br />1. <a href="http://www.slfans.com/?action-category-catid-14" target="_blank">APS.NET</a>的官方解决方案<br />　　ASP.NET <a href="http://www.slfans.com/?action-category-catid-38" target="_blank">AJAX
 </a><br />　　网址：ajax.asp.net
<p>　　ASP.NET AJAX是微软.NET平台上的解决方案，提供涵盖伺服器端与用户端所需的AJAX技术与<a href="http://www.slfans.com/?action-category-catid-33" target="_blank">JavaScript</a>整
合机制。</p><p>　　透过与下载与安装ASP.NET AJAX到Visual Studio 
2005当中，即可利用预设的控制项，开发出一些视觉特效与非同步传输的应用。</p><p>　　另外，ASP.NET AJAX也提供控制项的Toolkit，包含开发人员想自行开发AJAX应用时所需的基底类别与专案范本。</p><p>　　ASP.NET 
AJAX除了处理浏览器的相容性问题，也让用户端的JavaScript在开发时加入物件导向特性，例如型别系统、资料型别、命名空间、事件等，使得程式
码更容易除错、维护与重复使用。</p><p>　　虽然ASP.NET AJAX提供伺服器与用户端的解决方案，透过Visual 
Studio2005加持，也让开发、除错的难度降低，不过和其他AJAX框架相比，许多AJAX效果和功能都还在测试阶段（在CTP版本中供用户测
试），可以应用的功能有限。</p><p>　　2.支援「上一页」与加入「我的最爱」功能<br />　　Dojo <br />　　网址：dojotoolkit.org</p><p>　　一些轻巧的Ajax框架，用意在解决JavaScript遇到的易用性或特效问题，相较之下，Dojo更像是个面面俱到的JavaScript
工具套餐，号称可以降低网页或网页应用程式前端开发速度。</p><p>　　Dojo支援拖拉、淡出、淡入、移动、透明、操作SVG图档等动态效果，它的Widget也让使用者可以轻易使用选单，分页标签（tab）、树
状结构、日历、文字编辑器等效果，当然也支援非同步处理的Ajax功能。</p><p>　　另外，Ajax由于以动态的方式操作文件物件，导致使用者习于使用上一页、下一页的功能无法使用，也无法利用像是「我的最爱」的功能，将使用者
所需的页面留下正确的书签，但这些需求Dojo都已有解法。</p><p>　　比起其他轻巧型的Ajax框架，要摸熟Dojo显然要下较多的功夫才能掌握，目前文件较少也是个问题。不过由于它的功能更为完整，因此开发人员
需要自行加工的地方就相对较少。</p><p>　　3.可由JavaScript呼叫Java语法<br />　　DWR(Direct Web Remoting) <br />　　网
址：www.getahead.ltd.uk/dwr</p><p>　　DWR是设计给Java语言的Ajax框架，让开发人员可以利用JavaScript程式呼叫Java语法。</p><p>　　DWR的运作可分为两个部分，一方面用在浏览器上，处理连接伺服器端Java程式，另一部分则是用来展示回传资料。透过DWR呼叫Java的函
式，它会处理连接处理的细节，而当资料被处理完成后，DWR就会执行回呼函式，以进行后续呈现的处理。</p><p>　　在安装DWR时必须编辑Web应用程式的部署描述档案，而且也要编辑DWR特定档案。 
DWR配置档案指定了可以远端建立和呼叫的类别。档案中包含伺服器程式码的JAR档案，另外还有JavaScript档案，提供一些辅助函式，处理互动呈
现的效果。</p><p>　　DWR最大的好处就在于让Java开发人员可以利用熟悉的语法来处理页面与资料，并且能配合Struts、Tapestry来使用。不过从用户
端呼叫远端伺服器的Java程式，仍存在一些安全上的疑虑，在使用时必须注意。</p><p>　　4.以易用性、简化语法为目标<br />　　jQuery <br />　　网址：jquery.com</p><p>　　jQuery是最近大受瞩目的Ajax框架，它以Prototype为本，简化并提升JavaScript语法的功能。</p><p>　　jQuery有点像是将Prototype所做的事再推向极端，让使用者改变原有撰写JavaScript的方法。它最为人称道的地方，就在于
强大的存取页面元素功能，无论是文件的节点、CSS的选取子或Xpath表达式，都能利用「$（ ）」函式快速存取，并赋予它更多的功能。</p><p>　　此外，它的chainable方法能将一串处理函式结合在一起，让程式码更为简洁。另外jQuery也提供一些动态效果，不过和其他框架相比，
这部分就显得阳春许多。</p><p>　　jQuery的优劣其实都在同一件事情上，一方面它简化JavaScript的语法，让撰写程式更为简便，就好用的目的而言，的确是相当成功。
然而这却让JavaScript的程式码会发展成另一种样子，对于初学者而言，一开始学习时，必须要花点时间去适应。</p><p>　　5.依功能需求，下载模组化工具<br />　　MooTools <br />　　网址：mootools.net</p><p>　　前身是以轻巧著称的Moo.fx，与Prototype有着相似的概念和语法，但在物件导向上做得更为彻底，而且在动画效果和互动行为上，提供
更多的功能与应用，能让使用者更快的写出物件导向概念的JavaScript语法。</p><p>　　MooTools的下载档依模组分为核心、类别、原生语法、网页元素、浏览器视窗、动画效果、拖曳、远端传输与外挂程式，除了核心程式是必要下
载之外，其他可依使用者需求，下载所需的JavaScript档案，借此减少档案的体积。</p><p>　　虽然MooTools将JavaScirpt物件导向化的结果做得更彻底，有利于程式的扩展与维护，不过也挑战原先熟悉JavaScript物
件观的人，需要较多的时间适应。</p><p>　　不过无论是网站本身呈现、程式语法展示，甚至是模组下载介面，MooTools都展现相当精致的动态效果，参与网站的示范，很快就能实作。</p><p>　　6.大大扩充JavaScript基本功能<br />　　Prototype <br />　　网址：prototype.conio.net</p><p>　　Prototype不像其他框架，有许多炫人耳目的动态效果，而是专注在改良JavaScript本身的功能，让JavaScript更容易使
用，也更具物件导向风格。</p><p>　　Prototype在简化JavaScript方法上，提供许多方便的语法，最著名的如「$（ 
）」函式，只要将DOM节点的ID传入这个函式，就能取得这个节点物件，简化了DOM的操作方法。而这个方式也几乎成为其他开发框架延用的功能。其他如
「$F（ ）」函数能直接处理Web表单元件的值，「$A（ ）」函数能将列举的字串转换成阵列等，都是Prototype经典功能。</p><p>　　在非同步处理上，它也提供了Ajax.Request、Ajax.Updater等类别，让开发人员在处理非同步运作时可以利用它提供的方法，
让沟通行为更为容易、正确。</p><p>　　虽然Prototype没有太多花俏的功能，不过它简化JavaScript的特性，仍让许多Web开发人员衷情于它。</p><p>　　7.平顺、丰富的动画效果<br />　　Rico <br />　　网址：openrico.org</p><p>　　Rico是基于Prototype之上的Ajax框架，在西班牙文中，「rico」即为「rich」的意思，这也说明Rico的目标是提供开发
人员利用JavaScript达到丰富的网页元件与应用。</p><p>　　Rico提供非同步的Ajax应用，可让非同步回应绕送到一个或多个回呼以操作DOM或JavaScript物件。在动画效果方面，支援如拖曳
功能、缩放、过场、进度指标和黄褪技术等，可立即套用丰富的效果。</p><p>　　由于Rico志在让JavaScript也能表现出Flash般的动画效果，因此像是网页元件的颜色、形状或下拉效果的变化都相当平滑，也能让
DIV方块做出圆角的效果，让视觉表现更具Web 2.0风格。</p><p>　　Rico的LiveGrid功能同样是为人所称道之处。它能让表单资料产生更多元的表现方式，突破表格的检视行为。例如它可以让使用者在触动卷
动轴时，动态下载资料，利用这种方式，可以分段下载，就无需采用分页检视的手法。</p><p>　　8. RoR与CakePHP的指定框架<br />　　Script.aculo.us <br />　　网址：Script.aculo.us</p><p>　　Script.aculo.us是建立在Prototype之上的Ajax框架，是解决视觉效果与互动行为的轻巧框架，Ruby on 
Rails及PHP上的开发框架CakePHP等，都是使用Script.aculo.us作为Ajax的解决方案。</p><p>　　在视觉效果上，Script.aculo.us利用改变透明度、大小、位置以及结合以上三种元素，产生更多种变化，例如淡进、淡出、闪动、提示
等数十种视觉效果，可让页面效果更具变化，引导使用者与介面程式互动等。</p><p>　　在互动介面方面，提供了拖曳元件、就地编辑元件（In-Place 
Editor）、水平、垂直拉动卷轴、自动完成、元件排序、购物车等，这些预先打包成套的功能，解决了浏览器相容性的问题，也让使用者很容易可以直接导入
在现有的专案功能中，节省自行开发的时间。</p><p>　　此外，Script.aculo.us包含单元测试（Unit 
Test）框架，可以利用本身的test物件，用来验证程式执行的状态，并且支援模拟滑鼠与键盘的功能。</p><p>　　9.有Yahoo!网站服务背书的框架<br />　　Yahoo! User Interface <br />　　网
址：developer.yahoo.com/yui/</p><p>　　Yahoo! User 
Interface（YUI）是Yahoo!所提供的Ajax框架，提供便捷的开发方式与许多JavaScript函式库，使用者可以利用它来开发互动式
的介面与Ajax效果。 YUI可分为三大部分，包含工具、<a href="http://www.slfans.com/?action-category-catid-32" target="_blank">CSS</a>和
控制元件等函式库，工具部分是核心物件，负责一些较底层的处理功能，CSS则提供像版面规画、字体工具。而控制元件则有自动完成、月历、树状结构这些工
具。</p><p>　　由于YUI实际应用在Yahoo!的网站中，因此实作的可靠性相当不错，在YUI网站上也提供不少范例与文件，能协助使用者快速上手。虽然
YUI是由Yahoo!所推出，不过它遵循JavaScript的语法规则，并将样式、内容与行为分离，开发人员如果要扩充功能，也相当容易。</p><p>　　一般Ajax框架都需要置放在网站的伺服器端，随着页面一起下载，YUI除了采取这种方式之外，也提供使用连结的方式，使用者只要在应用的页面
中将路径指向YUI主机即可。</p><p>　　10.适合Java开发环境的企业级解决方案<br />　　ZK <br />　　网址：www.zkoss.org</p><p>　　ZK是基于Ajax、XUL（XML User Interface 
Language）、Java网页应用程式的开发框架，让网页的操作行为可以像是桌面应用程式一般。</p><p>　　不同于用户端的Ajax解决方案，ZK由伺服器端出发，利用ZK处理Ajax互动的引擎，处理用户端的页面行为，也因此大为降低利用
JavaScript作为动态开发语法时，常遇到的浏览器相容问题。</p><p>　　ZK提供超过70个XUL组件及80个XHTML组件，因此一些网页或应用程式常见的功能，ZK都提供现成的工具可让使用者立即应用，只需利用
ZK以XML为基础的使用介面设计语言，即可产生这些组件。应用的人则可在后端利用Java语言进行来处理程式逻辑与资料传递。</p><p>　　由于ZK利用Java语言开发，属于以伺服器为中心的解决方案，因此必须安装支援Java的应用程式伺服器（如Tomcat）才能执行。</p><img src ="http://www.blogjava.net/jasmine214--love/aggbug/325515.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-08 09:19 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/08/325515.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZK框架学习总结</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325495.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Wed, 07 Jul 2010 12:32:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325495.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325495.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325495.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325495.html</trackback:ping><description><![CDATA[
		<h1 style="text-align: left;">
				<font size="5">原文：http://qa.taobao.com/?p=7145&amp;cpage=1</font>
				<br />
		</h1>
		<h1 style="text-align: left;">1、ZK框架简介</h1>
		<p style="text-align: left;">ZK框架是一个用JAVA实现的简单但是功能强大的表现层框架。它包括了一个基于Ajax的
事件驱动引擎、这也是它的最大特色。可以做到没有JavaScript，只通过ZUML(ZK User Interface Markup 
Language)这种标识语言即可做到界面创建和事件响应。</p>
		<p style="text-align: left;">ZK的实现完全用java实现，开发过程中不会有任何的JavaScript代码，但是通过
将zul文件（ZK的源文件，类似于jsp文件）通过ZK引擎编译后查看页面源代码，结果还是可以看到，ZK实现的本质还是通过
JavaScript+CSS来处理异步请求的。</p>
		<p style="text-align: left;">组件是ZK中最常见的元素。有点类似于JAVA 
Swing或者VB这样的基于组件的编程。结合ZK Studio，可以达到可视化和动态地查看页面效果。</p>
		<p style="text-align: left;">特征：</p>
		<ol style="text-align: left;">
				<li>它是一个表现层工具。可以与hibernate,iBatis，spring等凡是与JAVA有关的结合构建一个完整的WEB应用。</li>
				<li>以服务端为中心的框架。它封装了Ajax的后台处理技术。服务端由两个重要部分实现：ZK加载器，ZK异步更新引擎。前者负责解析URL请求，生
成HTML页面；后者负责监听和处理客户端的Ajax请求，同时更新ZK组件的属性，然后将Ajax响应发回给客户端。</li>
				<li>基于组件的GUI。页面的可视部分都是由组件构成。类似于HTML标签，但是比HTML标签更灵活。</li>
		</ol>
		<p style="text-align: left;">不足之处：</p>
		<ol style="text-align: left;">
				<li>ZK与JAVA结合紧密。由于ZK的组件都是由JAVA实现，所以对组件的控制也仅限于用JAVA语言。无法与控制层解耦。</li>
				<li>学习资料和文档比较少。最全面的ZK应用其实还是官方的DEMO。连《ZK框架——Ajax开发实践》一书都是用的官方例子。所以对有些事件或者
属性只有自己探索。</li>
				<li>ZK的测试比较薄弱。对页面无法用工具进行测试。只能用手动测试。调试也不方便。出错了的话错误信息不明确，无法很快定位问题。</li>
		</ol>
		<h1 style="text-align: left;">2、安装部署开发环境</h1>
		<h2 style="text-align: left;">2.1    工具及安装</h2>
		<p style="text-align: left;">需要安装的工具有JDK、Tomcat（或者其他服务器）、My 
Eclipse（或者Eclipse）、 ZK开发包、ZK Studio。JDK、Tomcat、My 
Eclipse安装都不用介绍了，主要介绍ZK相关的部门。我的环境是JDK 1.6.0_16+Tomcat 6+My Eclipse 6.0。</p>
		<p style="text-align: left;">准备工作：</p>
		<ul style="text-align: left;">
				<li>l  下载ZK包和demo。<a href="http://www.zkoss.org/download/zk.dsp">http://www.zkoss.org/download/zk.dsp</a>。
在Windows下开发选择<a href="https://sourceforge.net/projects/zk1/files/ZK/zk-5.0.2/zk-bin-5.0.2.zip/download"><code>zk-bin-5.0.2.zip</code></a>，Linux
下选择zk-bin-5.0.2.tar.gz。下载好后还需要下载一个demo包。这个demo包里面包含了一些xml模板，创建ZK页面时可以根据模
板快速生成。demo下载选择zk-demo-5.0.2.zip。</li>
		</ul>
		<ul style="text-align: left;">
				<li>然后下载ZK Studio。ZK Studio是My 
Eclipse一个插件。提供了对ZK文件的时时查看和组件的可视化编辑以及一些通用页面原型。最好还是下载这个插件，方便开发。这个插件可在线安装或者
直接下载。安装步骤可参考页面：
<div id="attachment_7148" class="wp-caption aligncenter" style="width: 568px;"><a href="http://qa.taobao.com/wp-content/uploads/2010/06/pic1.jpg"><img class="size-full wp-image-7148" src="http://qa.taobao.com/wp-content/uploads/2010/06/pic1.jpg" alt="ZK &#xD;&#xA;Studio界面1" width="558" height="258" /></a><p class="wp-caption-text">ZK 
Studio界面1 </p></div></li>
		</ul>
		<h2 style="text-align: left;">
				<div id="attachment_7204" class="wp-caption aligncenter" style="width: 277px;">
						<a href="http://qa.taobao.com/wp-content/uploads/2010/06/23.jpg">
								<img class="size-full wp-image-7204" src="http://qa.taobao.com/wp-content/uploads/2010/06/23.jpg" alt="ZK &#xD;&#xA;Studio界面2" width="267" height="497" />
						</a>
						<p class="wp-caption-text">ZK 
Studio界面2</p>
				</div>
				<p>2.2    ZK环境的配置</p>
		</h2>
		<ul style="text-align: left;">
				<li>解压<a href="https://sourceforge.net/projects/zk1/files/ZK/zk-5.0.2/zk-bin-5.0.2.zip/download"><code>zk-bin-5.0.2.zip</code></a>，
创建用户自定义库：在My Eclipse里面选择windows-&gt;Preferences-&gt;JAVA-&gt;Build 
Path-&gt;User Libraries。添加3个用户库。名字随便取，可以分别叫：ZK Ajax Frame、ZK Ajax 
Framework Extendsion以及ZK Ajax Framework Forge 
Library。分别对应zk-bin-5.0.2目录结构中dist下的lib、lib/ext以及lib/zkforget中的jar包。配置好后的
用户库如下图：</li>
		</ul>
		<p style="text-align: left;">
		</p>
		<div class="mceTemp" style="text-align: left;">
				<dl>
						<dt>
								<a href="http://qa.taobao.com/wp-content/uploads/2010/06/pic3.jpg">
										<img class="size-full wp-image-7151" src="http://qa.taobao.com/wp-content/uploads/2010/06/pic3.jpg" alt="自定义的用户库" width="389" height="311" />
								</a>
						</dt>
						<dd>自定义的用户库</dd>
				</dl>
		</div>
		<p style="text-align: left;">
		</p>
		<ul style="text-align: left;">
				<li>添加xsd到用户xml catalog entry里。这是为了确保可以更好的地使用My Eclipse XML 
Editor的功能。打开window-&gt;preferences-&gt;My Eclipse-&gt;Files and 
Editors-&gt;XML-&gt;XML Catalog。添加zk-bin-5.0.2/dist/xsd/zul.xsd。</li>
		</ul>
		<ul style="text-align: left;">
				<li>添加xml文件模板：将zkdemo\WebContent\WEB-INF下的lang-addon.xml、
portlet.xml，zk.xml和web.xml四个文件复制到My 
Eclipse安装目录下的myeclipse\eclipse\plugins
\com.genuitec.eclipse.wizards_6.0.1.zmyeclipse601200710\templates\xml。文件
夹名字可能因为My 
Eclipse版本不同而不同。只要以com.genuitec.eclipse.wazardsXXX这样开头的文件夹就行。然后将这四个文件分别改名
为：LangAddon.vtl、Portlet.vtl、ZK.vtl、ZKWeb.vtl。打开四个文件，将&lt;?xml 
version=”1.0″ encoding=”UTF-8″?&gt;这一行都改成&lt;?xml version=”1.0″ 
encoding=”$encoding”?&gt;。继续在这个xml文件夹里面新建一个名为ZUL.vtl的文件。内容如下：</li>
		</ul>
		<table style="text-align: left;" border="1" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td valign="top" width="568">&lt;?xml version=”1.0″ 
encoding=”$encoding”?&gt;&lt;?page title=”title” ?&gt;&lt;zk 
xmlns=”http://www.zkoss.org/2005/zul”
<p>xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”</p><p>xsi:schemaLocation=”http://www.zkoss.org/2005/zul 
http://www.zkoss.org/2005/zul “&gt;</p><p style="text-align: left;">&lt;/zk&gt;</p></td>
						</tr>
				</tbody>
		</table>
		<ul style="text-align: left;">
				<li>修改 My 
Eclipse安装目录下的myeclipse\eclipse\plugins
\com.genuitec.eclipse.wizards_6.0.1.zmyeclipse601200710 \ 
templates.xml。在&lt;!– XML templates –&gt;后面添加如下代码：</li>
		</ul>
		<table style="text-align: left;" border="1" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td style="text-align: left;" valign="top" width="568">&lt;templatecontext=”com.genuitec.eclipse.wizards.xml”script=”templates/xml/ZKWeb.vtl”
<p>name=”XML template for a web.xml file with ZK capability”/&gt;</p><p style="text-align: left;">&lt;template</p><p>context=”com.genuitec.eclipse.wizards.xml”</p><p>script=”templates/xml/LangAddon.vtl”</p><p>name=”XML template for a lang-addon.xml file for ZK”/&gt;</p><p>&lt;template</p><p>context=”com.genuitec.eclipse.wizards.xml”</p><p>script=”templates/xml/Portlet.vtl”</p><p>name=”XML template for a port-let.xml file for ZK”/&gt;</p><p>&lt;template</p><p>context=”com.genuitec.eclipse.wizards.xml”</p><p>script=”templates/xml/ZK.vtl”</p><p>name=”XML template for a zk.xml file”/&gt;</p><p>&lt;template</p><p>context=”com.genuitec.eclipse.wizards.xml”</p><p>script=”templates/xml/ZUL.vtl”</p><p style="text-align: left;">name=”XML template for a *.zul file”/&gt;</p></td>
						</tr>
				</tbody>
		</table>
		<ul style="text-align: left;">
				<li>添加新的文件类型。打开window-&gt;preferences-&gt;general-content types，给Java 
Source 
File添加*.zs，给XML添加*.zul，给JSP添加*.dsp，给HTML添加*.zhtml。到此，ZK环境完全搭建完成。开发好的ZK应用
可以直接打成war包进行部署。十分地简单。</li>
		</ul>
		<h1 style="text-align: left;">3、 快速搭建页面</h1>
		<p style="text-align: left;">有两种方式创建ZK Project。第一种方式是直接在ZK Welcome 
Page里面新建一个ZK工程，这样不用再添加ZK库。第二种方式是先创建一个Web Project，然后在Build 
Path里面添加刚才添加的三个User Libraries。然后在WebRoot里面添加zul文件即可。添加zul文件要选择新建XML 
Advanced Tempaltes文件。</p>
		<p style="text-align: left;">打开zul文件可以选择Open with Zul Editor。这样便可以利用zk 
studio的可视化编程进行开发。</p>
		<p style="text-align: left;">除了ZK自己提供的一些组件外，html的标签在ZK中完全可以继续用。但是为了避免ZK解
释HTML标签，通常要使用&lt;![CDATA[ 和 
]]&gt;将HTML标签围入其中。换言之，他们并不是子组件。而是被存储在content属性内。</p>
		<p style="text-align: left;">组件可以从zk 
palet直接拖拉进代码区，然后可以在中查看和设置组件支持的所有属性和事件。其特点就是<strong>高效地组建页面</strong>。如果不添
加任何JAVA代码，那么创建一个页面的效率不亚于直接用Axure创建界面原型。图4是一个界面demo。无任何js和CSS代码。当然，ZK框架并不
排斥使用CSS代码。利用style属性可以设置CSS样式，还可以通过&lt;style src=” CSS文件”/&gt;加载CSS文件。</p>
		<p style="text-align: left;">
		</p>
		<div class="mceTemp mceIEcenter" style="text-align: left;">
				<dl>
						<dt>
								<a href="http://qa.taobao.com/wp-content/uploads/2010/06/pic4.jpg">
										<img class="size-full wp-image-7156" src="http://qa.taobao.com/wp-content/uploads/2010/06/pic4.jpg" alt="快速创建页面范例" width="556" height="291" />
								</a>
						</dt>
						<dd>快速创建页面范例</dd>
				</dl>
		</div>
		<p style="text-align: left;">
		</p>
		<h1 style="text-align: left;">4、帮助文档</h1>
		<p style="text-align: left;">最好的帮助文档其实是zkoss官网的一些文档。比如：开发手册（<a href="http://zh.zkoss.org/doc/devguide/index.html">http://zh.zkoss.org/doc/devguide/index.html</a>）。
但是对于开发人员来说，官方的帮助文档其实还不够的。ZK总提供上百个组件和13个指令。每个组件都会有10到60个不同的属性和事件响应。所以，对于这
些属性及用法没有一个好的类似java api文档那样的东西，实在是会不知所措。所以在zkoss官方还提供了zkoss组件的java api（<a href="http://www.zkoss.org/javadoc/latest/zk/">http://www.zkoss.org/javadoc/latest/zk/</a>），
方便开发人员。</p>
		<h1 style="text-align: left;">5、不用写Javascript的事件响应</h1>
		<h2 style="text-align: left;">5.1    组件的事件</h2>
		<p style="text-align: left;">每个组件都支持一些事件。如onClick、onOK,onClose等。以下是
window组件所支持的事件：</p>
		<p style="text-align: left;">
		</p>
		<div class="mceTemp mceIEcenter" style="text-align: left;">
				<dl>
						<dt>
								<a href="http://qa.taobao.com/wp-content/uploads/2010/06/pic5.jpg">
										<img class="size-full wp-image-7157" src="http://qa.taobao.com/wp-content/uploads/2010/06/pic5.jpg" alt="组件：“window”所支持的事件" width="154" height="276" />
								</a>
						</dt>
						<dd>组件：“window”所支持的事件</dd>
				</dl>
		</div>
		<p style="text-align: left;">
		</p>
		<p style="text-align: left;">在ZK异步更新引擎的支持下，组件的属性可以被动态改变。首先获得组件对象，然后设
置值。获得组件可以通过JAVA代码或者EL表达式。同一ID空间中的可以用getFellow（组件id），还有一种方法是利用
org.zkoss.zk.ui.api包中的Path类可以很方便地获取组件。Path.getComponent(组件路径)。如获取以下页面的
label组件的value值可以这样写：</p>
		<table style="text-align: left;" border="1" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td valign="top" width="568">&lt;?page id=”page1”?&gt;&lt;window 
id=”winA”&gt;&lt;label id=”labelA” value=”Label A” /&gt;
<p>&lt;/window&gt;</p><p>&lt;zscript&gt;&lt;![CDATA[</p><p>alert(Path.getComponent(“/winA/labelA.value”));</p><p style="text-align: left;">]]&gt;&lt;/zscript&gt;</p></td>
						</tr>
				</tbody>
		</table>
		<p style="text-align: left;">跨页面的组件访问可以用//表示当前桌面。如要在page2中访问page1的id为
winA的window组件，可以这样写Path.getComponent(“//page1/winA”)。</p>
		<p style="text-align: left;">当然，ZK也不排除使用javascript。如：</p>
		<table style="text-align: left;" border="1" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td valign="top" width="568">&lt;script 
type=”text/javascript”&gt;function testAlert() 
{alert(“调用javascript成功！”);
<p>}</p><p>&lt;/script&gt;</p><p>&lt;button label=”SayHello”&gt;</p><p>&lt;attribute name=”onClick”&gt;</p><p>&lt;![CDATA[</p><p>Clients.evalJavaScript("testAlert();");</p><p>]]&gt;</p><p>&lt;/attribute&gt;</p><p style="text-align: left;">&lt;/button&gt;</p></td>
						</tr>
				</tbody>
		</table>
		<p style="text-align: left;">事件还可以在JAVA代码中进行注册。注册后与直接写在zul页面中的效果是一样的。比如我
们可以先定义一个事件类：</p>
		<table style="text-align: left;" border="1" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td valign="top" width="568">
										<strong>public</strong>
										<strong>class</strong>
 MyListener <strong>implements</strong> EventListener{@Override<strong>public</strong><strong>void</strong> onEvent(Event event) <strong>throws</strong> 
Exception {
<p>// <strong>TODO</strong> add some methods</p><p>……</p><p>}</p><p>}</p></td>
						</tr>
				</tbody>
		</table>
		<p style="text-align: left;">然后可以在另外一个类中注册它。</p>
		<table style="text-align: left;" border="1" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td valign="top" width="568">
										<strong>public</strong>
										<strong>class</strong>
 ShowMessage <strong>extends</strong> Window {<strong>public</strong><strong>void</strong>
 onCreate() <strong>throws</strong> InterruptedException{ //does 
initialization
<p>getFellow(“btnAddUser”).addEventListener(“onClick”, <strong>new</strong>
 MyListener());</p><p>}</p><p style="text-align: left;">}</p></td>
						</tr>
				</tbody>
		</table>
		<p style="text-align: left;">这样我们就可以通过use=”ibatis.ShowMessage”来调用
MyListener里面定义的一些方法了。</p>
		<h2 style="text-align: left;">5.2        组件与控制器</h2>
		<p style="text-align: left;">将组件和组件的控制代码最好进行分离。利用组件的<strong>use或者applay</strong>属
性将JAVA代码和zul页面进行关联。如：&lt;window width=”100%” height=”100%” 
apply=”zktest.borderlayout.BorderLayoutComposer”&gt;或者&lt;listbox 
width=”800px” rows=”5″ use=”zktest.jianer.ListTestBean”&gt;。</p>
		<p style="text-align: left;">我们知道，一个经典的MVC框架中，视图，控制器和模型都是必须要有的。在一个WEB工程中
DAO层的引入比较容易，比如说hibernate或者说淘宝现在用的比较多的iBatis。而控制器从何而来。视图如何与控制器互相传递数据？这里就用
到了zul页面和java代码的分离。分离出java代码后，java代码可以很容易与DAO层打交道，而获取视图层的数据也可以轻松通过
getFllow获取到组件进行操作。这样MVC三层便实现了。另外，在Web工程中还可以配置Spring进行类管理。</p>
		<h1 style="text-align: left;">6、搭建一个完整的WEB应用</h1>
		<h2 style="text-align: left;">6.1    整合持久层</h2>
		<p style="text-align: left;">要想程序与数据库打交道，有很多种方式。直接写JDBC当然是最笨的一种，现在淘宝的
JAVA应用普遍采用iBatis作为持久层，没有采用hibernate是因为考虑到hibernate的效率问题，所以我也试着将iBatis配置进
工程里面。</p>
		<p style="text-align: left;">首先当然是有一个ZK的工程。参照前面第3章的内容。在My 
Eclipse里面新建好一个Web工程。然后在Build 
Path里面配置需要的包。这里我用到的是MySQL的JDBC包和iBatis的包。都加入到Build 
Path里面：。然后进行iBatis的配置。</p>
		<p style="text-align: left;">要使iBatis跑起来，至少需要3个配置文件。。SqlMap.properties用来
配置数据库连接的相关信息。如用户名，密码，连接字符串等。SqlMapConfig.xml用来指定数据源、SqlMap.properties的位置
和用到的sqlMap。而这个User.xml就是一个sqlMap。用来配置sql语句、返回类型，传入参数和名字的。在sqlMap类里面就通过名字
对sql语句进行调用。一切配置好后就可以开始正式编码了。</p>
		<h2 style="text-align: left;">6.2    整合Spring</h2>
		<p style="text-align: left;">在MyEclipse里面添加Spring相当容易。直接在工程上点右键，选择My 
Eclipse-&gt;Add Spring 
Capabilities。这样就将Spring的包引入了进来，并且自动生成了Spring的配置文
件：applicationContext.xml。在applicationContext.xml里面便可以进行bean的配置。更多Spring的
用法可以参照相关的资料。在此便不多说。</p>
		<p style="text-align: left;">通过配置iBatis和Spring后便可分层对一个Web应用进行开发了。JAVA代码处
理业务逻辑，充当控制层。ZK负责界面展示。iBatis负责持久层。</p>
		<h1 style="text-align: left;">7、附录</h1>
		<ul style="text-align: left;">
				<li>
						<strong>ZK</strong>
						<strong>开发手册</strong>：<a href="http://zh.zkoss.org/doc/devguide/index.html">http://zh.zkoss.org/doc/devguide/index.html</a>
 （这个写得相当好）</li>
				<li>ZK JAVA API：<a href="http://www.zkoss.org/javadoc/latest/zk/">http://www.zkoss.org/javadoc/latest/zk/</a></li>
				<li>ZK技术分享：<a href="http://gaojiewyh.javaeye.com/category/67379">http://gaojiewyh.javaeye.com/category/67379</a>
 (not only zk)</li>
		</ul>
<img src ="http://www.blogjava.net/jasmine214--love/aggbug/325495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-07 20:32 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>zk学习资源</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325492.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Wed, 07 Jul 2010 12:09:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325492.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325492.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325492.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325492.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325492.html</trackback:ping><description><![CDATA[
		<p>
				<span style="color: rgb(153, 204, 0);">
						<strong>
								<span style="font-size: medium;">原文：http://sunflowers.javaeye.com/blog/467142<br /></span>
						</strong>
				</span>
		</p>
		<p>
				<span style="color: rgb(153, 204, 0);">
						<strong>
								<span style="font-size: medium;">zk学习篇</span>
						</strong>
				</span>
		</p>
		<p> </p>
		<p>1，首先是zk的官方网站首页：zk版本发布信息，新闻，demo入口，学习文档入口，zk爱好者开发examples入口</p>
		<p> </p>
		<p>
				<a href="http://www.zkoss.org/" target="_blank">   
http://www.zkoss.org</a>
		</p>
		<p> </p>
		<p>2，文档入口</p>
		<p> </p>
		<p>  <a href="http://docs.zkoss.org/wiki/Documentation" target="_blank">http://docs.zkoss.org/wiki/Documentation</a></p>
		<p> </p>
		<p> </p>
		<p>2，zk学习开发手册</p>
		<p> </p>
		<p>  <a href="http://zh.zkoss.org/doc/devguide/" target="_blank">http://zh.zkoss.org/doc/devguide/</a>  <span style="white-space: pre;"></span>中文</p>
		<p> </p>
		<p>  <a href="http://zkoss.org/doc/devguide-single/index.html" target="_blank">http://zkoss.org/doc/devguide-single/index.html</a>  英文</p>
		<p> </p>
		<p>
				<a href="http://www.zkoss.org/download/download.zul?file=pdf/ZK-devguide.pdf&amp;link=/doc&amp;source=devguide_pdfdownload" target="_blank">  http://www.zkoss.org/download/download.zul?file=pdf/ZK-devguide.pdf&amp;link=/doc&amp;source=devguide_pdfdownload</a>
				<span style="background-color: rgb(255, 255, 255);"> pdf版</span>
		</p>
		<p> </p>
		<p>3，zk开发向导</p>
		<p> </p>
		<p>  <span style="white-space: pre;"><a href="http://docs.zkoss.org/wiki/Developer%27s_Reference" target="_blank">http://docs.zkoss.org/wiki/Developer's_Reference</a></span>  </p>
		<p> </p>
		<p>   <a href="http://www.zkoss.org/download/download.zul?file=pdf/ZK-devref.pdf&amp;link=/doc&amp;source=defref_pdfdownload" target="_blank">http://www.zkoss.org/download/download.zul?file=pdf/ZK-devref.pdf&amp;link=/doc&amp;source=defref_pdfdownload</a>  
                    pdf版</p>
		<p> </p>
		<p>4，zk样式手册</p>
		<p> </p>
		<p>   <a href="http://docs.zkoss.org/wiki/Style_Guide" target="_blank">http://docs.zkoss.org/wiki/Style_Guide</a></p>
		<p> </p>
		<p> </p>
		<p>5，zk组件开发手册</p>
		<p> </p>
		<p>   <a href="http://www.zkoss.org/doc/compdevguide/" target="_blank">http://www.zkoss.org/doc/compdevguide/</a></p>
		<p> </p>
		<p> </p>
		<p>6，关于zk的small talks，非常实用，如果开发文档看完了，可以到这里进阶</p>
		<p> </p>
		<p>   <a href="http://docs.zkoss.org/wiki/Small_Talks" target="_blank"> http://docs.zkoss.org/wiki/Small_Talks</a></p>
		<p> </p>
		<p> </p>
		<p>7,zk在线java doc</p>
		<p> </p>
		<p>  <a href="http://zkoss.org/javadoc/" target="_blank"> http://zkoss.org/javadoc/</a></p>
		<p> </p>
		<p>8,zk二进制开发包，source ,documentation,and others</p>
		<p> </p>
		<p>   <a href="http://zkoss.org/download/zk.dsp" target="_blank">http://zkoss.org/download/zk.dsp</a></p>
		<p> </p>
		<p>9,zk demo集合</p>
		<p> </p>
		<p>   <a href="http://zkoss.org/demo/" target="_blank">http://zkoss.org/demo/</a></p>
		<p> </p>
		<p>10，zk论坛</p>
		<p> </p>
		<p> <a href="http://zkoss.org/forum" target="_blank"> http://zkoss.org/forum</a></p>
		<p> </p>
		<p>11，zk架构</p>
		<p> </p>
		<p>    <a href="http://zh.zkoss.org/doc/devguide/ch03.html#id404475" target="_blank"> http://zh.zkoss.org/doc/devguide/ch03.html#id404475</a></p>
		<p> </p>
		<p>12，zk组件活动周期</p>
		<p> </p>
		<p>  <a href="http://zh.zkoss.org/doc/devguide/ch04.html" target="_blank">  http://zh.zkoss.org/doc/devguide/ch04.html</a></p>
		<p> </p>
		<p>13，zk事件处理</p>
		<p> </p>
		<p>   <a href="http://zh.zkoss.org/doc/devguide/ch05.html" target="_blank">http://zh.zkoss.org/doc/devguide/ch05.html</a></p>
		<p> </p>
		<p>
				<span style="color: rgb(153, 255, 0);">
						<span style="font-size: medium;">
								<strong>zk进阶篇</strong>
						</span>
				</span>
		</p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p style="margin: 0px;">一，开发环境的搭建</p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;">   1)  Eclipse中开发 zk，如果你是最新的开发web的eclipse，第一步可省略</p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;">  <span style="white-space: pre;"></span><a href="http://docs.zkoss.org/wiki/Develop_ZK_Applications_with_Eclipse" target="_self"> http://docs.zkoss.org/wiki/Develop_ZK_Applications_with_Eclipse</a></p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;">   2)  NetBean</p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;"> <span style="white-space: pre;"><a href="http://docs.zkoss.org/wiki/How_to_build_your_first_ZK_application_with_NetBeans" target="_blank">http://docs.zkoss.org/wiki/How_to_build_your_first_ZK_application_with_NetBeans</a></span></p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;">   3) ZK开发的Eclipse插件 编辑器</p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;">
				<span style="white-space: pre;">
				</span>1 @ zk 
Studio 安装</p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;">
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/ZK_Studio_Installation_Guide" target="_blank">http://docs.zkoss.org/wiki/ZK_Studio_Installation_Guide</a>
				</span>
		</p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;">  <span style="white-space: pre;"></span>2 @ 
zk快速上手</p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;">
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/QuickStart_Guide" target="_blank">http://docs.zkoss.org/wiki/QuickStart_Guide</a>
				</span>
		</p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;">        3 @ ZK Studio 用户手册</p>
		<p style="margin: 0px;"> </p>
		<p style="margin: 0px;">
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/Studio_userguide" target="_blank">http://docs.zkoss.org/wiki/Studio_userguide</a>
				</span>
		</p>
		<p style="margin: 0px;"> </p>
		<p>二，基于zk的MVC架构</p>
		<p>    <br />   1) ZK Composer 介绍,特别是最后一张图，非常重要：如果清楚认识这个图，对以后数据处理等非常有益</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/An_Introduction_of_ZK_Composer" target="_blank">http://docs.zkoss.org/wiki/An_Introduction_of_ZK_Composer</a>
				</span>
		</p>
		<p> </p>
		<p>   2) 最佳MVC模式，提示：其中的AfterComposer方法内时间绑定现在已过时，zk有更好的实现,见4</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
						<br />http://docs.zkoss.org/wiki/Best_Model-View-Controller_Patterns</span>
		</p>
		<p> </p>
		<p>   3)  MVC三部曲，呵呵，作者的标题很有意思，冒险呢</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/The_Trilogy_of_ZK%27s_MVC_Adventure" target="_blank">http://docs.zkoss.org/wiki/The_Trilogy_of_ZK's_MVC_Adventure</a>
				</span>
		</p>
		<p> </p>
		<p>   4) 轻松实现MVC，对于学习架构设计理念非常好的一个例子</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/ZK_MVC_Made_Easy" target="_blank">http://docs.zkoss.org/wiki/ZK_MVC_Made_Easy</a>
				</span>
		</p>
		<p> </p>
		<p>   5)一个基于spring的联系人列表的事例，</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
				</span>注：其中时间绑定已过时， &lt;button 
label="Register" onClick="loginWnd.onRegister()" /&gt;</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
				</span>     
官方推荐forward="onXXX=onYYY",等号前的为js事件，onYYY对应Controller class方法</p>
		<p> </p>
		<p>              forward默认是onClick事件，所以可简写为forward="onYYY"</p>
		<p>
				<span style="white-space: pre;">
				</span>
		</p>
		<p>
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/Contact_List_with_ZK_and_Spring" target="_blank">http://docs.zkoss.org/wiki/Contact_List_with_ZK_and_Spring</a>
				</span>
		</p>
		<p>
				<span style="white-space: pre;">
				</span>
		</p>
		<p>   6) 使用Zk Studio六步轻松实现CRUD</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/Build_CRUD_Application_with_ZK_Studio_in_6_Steps" target="_blank">http://docs.zkoss.org/wiki/Build_CRUD_Application_with_ZK_Studio_in_6_Steps</a>
				</span>
		</p>
		<p> </p>
		<p>   7) SHZ  z为ZK</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/Hibernate_%2B_Spring_%2B_ZK" target="_blank">http://docs.zkoss.org/wiki/Hibernate_%2B_Spring_%2B_ZK</a>
				</span>
		</p>
		<p> </p>
		<p>   8)  spring+jpa+zk  mvc</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/ZK_With_Spring_JPA_And_A_Model-View-Controller_Pattern" target="_blank">http://docs.zkoss.org/wiki/ZK_With_Spring_JPA_And_A_Model-View-Controller_Pattern</a>
				</span>
		</p>
		<p> </p>
		<p>   9)  基于ZK注解的数据绑定的四个个例子</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
				</span>1，ZK数据绑定实现</p>
		<p> </p>
		<p>     <span style="white-space: pre;"></span><a href="http://docs.zkoss.org/wiki/Data-Binding_Implementation_for_ZK" target="_self">http://docs.zkoss.org/wiki/Data-Binding_Implementation_for_ZK</a></p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
				</span>2，使用zk注解，实现双向数据绑定</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
				</span>
				<a href="http://docs.zkoss.org/wiki/Two-way_Data_Binding_with_ZUML_Annotations" target="_self">http://docs.zkoss.org/wiki/Two-way_Data_Binding_with_ZUML_Annotations</a>
		</p>
		<p> </p>
		<p>        3，使用zk注解实现零代码数据绑定</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
				</span>
				<a href="http://docs.zkoss.org/wiki/Zero_Code_Data_Binding_with_ZUML_Annotations" target="_blank">http://docs.zkoss.org/wiki/Zero_Code_Data_Binding_with_ZUML_Annotations</a>
		</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
				</span>4，使用zk注解绑定集合数据</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/Data_Binding_Collection_Data_with_ZUML_Annotations" target="_blank">http://docs.zkoss.org/wiki/Data_Binding_Collection_Data_with_ZUML_Annotations</a>
				</span>
		</p>
		<p> </p>
		<p>   10) zk 各种监听器的作用</p>
		<p> </p>
		<p>
				<span style="white-space: pre;">
						<a href="http://docs.zkoss.org/wiki/Developer_reference_Appendix_B._WEB-INF/zk.xml_Overview_The_listener_Element" target="_blank">http://docs.zkoss.org/wiki/Developer_reference_Appendix_B._WEB-INF/zk.xml_Overview_The_listener_Element</a>
				</span>
		</p>
		<p> </p>
		<p>  更多资源请看<a href="http://docs.zkoss.org/wiki/Small_Talks" target="_blank">http://docs.zkoss.org/wiki/Small_Talks</a></p>
<img src ="http://www.blogjava.net/jasmine214--love/aggbug/325492.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-07 20:09 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325492.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax框架之 zk -demo1</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325491.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Wed, 07 Jul 2010 11:32:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325491.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325491.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325491.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325491.html</trackback:ping><description><![CDATA[原文：http://blog.csdn.net/txyhl/archive/2007/04/24/1577295.aspx<br />前一段在网上看查找资料，无意间发现了一个 ajax框架的在线demo，被其华美的外表及简洁的代码风格所吸引，就开始了zk学习之路，经过两天的研究，发现这个框架确实不错，特别是它提供的例子，基本实现了所有web开发的需要，它还对google map进行了封装，使其使用更加容易，不过，经这两天的学习，发现它的学习资料不是太多，找好长时间也找不到多少有用的，只好研究它自带的demo了，呵呵，一段时间的研究，终于写出了一个小实例，现在提供出来，希望能对大家有帮助。该实例在 eclipse3.2+myeclipse+tomcat5.5+jdk5.0上运行成功。<br />欢迎转载，有问题请联系我：txyhl@126.com<br />首先，为了让大家对其有一个感性的认识，就先去看看它的demo，相信你也会被它华美的外表所吸引<img alt="" src="http://blog.csdn.net/Editor/FCKeditor/editor/images/smiley/msn/teeth_smile.gif" />，<br /><span style="COLOR: rgb(255,0,0)">demo:</span><span style="COLOR: rgb(255,0,0)"></span>http://www.potix.com/zkdemo/userguide/<br />OK,ZK 学习之路开始了。<br />当然，要先去下载ZK，推荐网站：http://www.zkoss.org<br />需要下载<span style="FONT-FAMILY: monospace">:<span style="COLOR: rgb(255,0,0)">zk-2.3.0.zip</span>，现在的最高版本<br />如果有兴趣，也可以下载</span><span style="FONT-FAMILY: monospace">zk- demo-2.3.0.zip，里面有它的各种应用示例。<br />新建一个WEB工程，工程名为：zktest<br />然后将<span style="COLOR: rgb(255,0,0)">zk-2.3.0\dist\lib，zk-2.3.0\dist\lib \ext，zk-2.3.0\dist\lib\zkforge</span>目录下面的jar包引入到工程中（怎么引入我不用说了吧）<br />然后就开始写程序了......<br /><span style="COLOR: rgb(255,0,0)">web.xml<br /><div style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 5.4pt; WIDTH: 95%; PADDING-RIGHT: 5.4pt; BACKGROUND: rgb(230,230,230) 0% 50%; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; PADDING-TOP: 4px; -moz-background-size: auto auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"><div><span style="COLOR: rgb(0,0,255)">&lt;?</span><span style="COLOR: rgb(255,0,255)">xml version="1.0" encoding="UTF-8"</span><span style="COLOR: rgb(0,0,255)">?&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">web-app </span><span style="COLOR: rgb(255,0,0)">version</span><span style="COLOR: rgb(0,0,255)">="2.4"</span><span style="COLOR: rgb(255,0,0)"> <br />    xmlns</span><span style="COLOR: rgb(0,0,255)">="http://java.sun.com/xml/ns/j2ee"</span><span style="COLOR: rgb(255,0,0)"> <br />    xmlns:xsi</span><span style="COLOR: rgb(0,0,255)">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="COLOR: rgb(255,0,0)"> <br />    xsi:schemaLocation</span><span style="COLOR: rgb(0,0,255)">="http://java.sun.com/xml/ns/j2ee <br />    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">listener</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">description</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">Used to cleanup when a session is destroyed</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">description</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">display-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">ZK Session Cleaner</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">display-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">listener-class</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">org.zkoss.zk.ui.http.HttpSessionListener</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">listener-class</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">listener</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">filter</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />      </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">filter-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">zkFilter</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">filter-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />      </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">filter-class</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">org.zkoss.zk.ui.http.DHtmlLayoutFilter</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">filter-class</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />      </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">init-param</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">param-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">extension</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">param-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">param-value</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">html</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">param-value</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,128,0)">&lt;!--</span><span style="COLOR: rgb(0,128,0)"> Use XHTML components as default. </span><span style="COLOR: rgb(0,128,0)">--&gt;</span><span style="COLOR: rgb(0,0,0)"><br />      </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">init-param</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">filter</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">filter-mapping</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />      </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">filter-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">zkFilter</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">filter-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />      </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">url-pattern</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">*.jsp</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">url-pattern</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />      </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">dispatcher</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">REQUEST</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">dispatcher</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />      </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">dispatcher</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">INCLUDE</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">dispatcher</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />      </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">dispatcher</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">FORWARD</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">dispatcher</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />      </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">dispatcher</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">ERROR</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">dispatcher</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">filter-mapping</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">description</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">ZK loader for ZUML pages</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">description</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">zkLoader</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet-class</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">org.zkoss.zk.ui.http.DHtmlLayoutServlet</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet-class</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,128,0)">&lt;!--</span><span style="COLOR: rgb(0,128,0)"> Must. Specifies URI of the update engine (DHtmlUpdateServlet).<br />        It must be the same as &lt;url-pattern&gt; for the update engine.<br />        </span><span style="COLOR: rgb(0,128,0)">--&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">init-param</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />            </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">param-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">update-uri</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">param-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />            </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">param-value</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">/zkau</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">param-value</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">init-param</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">load-on-startup</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">1</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">load-on-startup</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet-mapping</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">zkLoader</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">url-pattern</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">*.zul</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">url-pattern</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet-mapping</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet-mapping</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">zkLoader</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">url-pattern</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">*.zhtml</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">url-pattern</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet-mapping</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">description</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">The asynchronous update engine for ZK</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">description</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">auEngine</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet-class</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">org.zkoss.zk.au.http.DHtmlUpdateServlet</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet-class</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet-mapping</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">servlet-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">auEngine</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet-name</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">url-pattern</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">/zkau/*</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">url-pattern</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">servlet-mapping</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,128,0)">&lt;!--</span><span style="COLOR: rgb(0,128,0)"> //// </span><span style="COLOR: rgb(0,128,0)">--&gt;</span><span style="COLOR: rgb(0,0,0)"><br /><br />    </span><span style="COLOR: rgb(0,128,0)">&lt;!--</span><span style="COLOR: rgb(0,128,0)"> /////////// </span><span style="COLOR: rgb(0,128,0)">--&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,128,0)">&lt;!--</span><span style="COLOR: rgb(0,128,0)"> Miscellaneous </span><span style="COLOR: rgb(0,128,0)">--&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">session-config</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">session-timeout</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">120</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">session-timeout</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">session-config</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    <br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">welcome-file-list</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">welcome-file</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">index.zul</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">welcome-file</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">welcome-file-list</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">web-app</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span></div></div><br /></span>index.zul(该文件同web-inf同一级目录)<br /><div style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 5.4pt; WIDTH: 95%; PADDING-RIGHT: 5.4pt; BACKGROUND: rgb(230,230,230) 0% 50%; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; PADDING-TOP: 4px; -moz-background-size: auto auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"><div><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">window </span><span style="COLOR: rgb(255,0,0)">title</span><span style="COLOR: rgb(0,0,255)">="yhltest demo"</span><span style="COLOR: rgb(255,0,0)"> border</span><span style="COLOR: rgb(0,0,255)">="normal"</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">zscript</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">{<br />        //引入Test类<br />        import test.*;<br />        void submit() {<br />            Test test = new Test();<br />             //调用Test类的方法getTestStr，并将返回值赋给mylabel<br />            mylabel.value=test.getTestStr(text1.value);    <br />        }<br />    }</span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">zscript</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">grid</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">rows</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">row</span><span style="COLOR: rgb(0,0,255)">&gt;&lt;</span><span style="COLOR: rgb(128,0,0)">label </span><span style="COLOR: rgb(255,0,0)">id</span><span style="COLOR: rgb(0,0,255)">="mylabel"</span><span style="COLOR: rgb(255,0,0)"> value</span><span style="COLOR: rgb(0,0,255)">="test"</span><span style="COLOR: rgb(0,0,255)">/&gt;&lt;/</span><span style="COLOR: rgb(128,0,0)">row</span><span style="COLOR: rgb(0,0,255)">&gt;<br />       //输入1 或 2<br /></span><span style="COLOR: rgb(0,0,0)">        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">row</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)">input(1or2) </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">textbox </span><span style="COLOR: rgb(255,0,0)">id</span><span style="COLOR: rgb(0,0,255)">="text1"</span><span style="COLOR: rgb(0,0,255)">/&gt;&lt;/</span><span style="COLOR: rgb(128,0,0)">row</span><span style="COLOR: rgb(0,0,255)">&gt;<br />       //提交，调用函数submit<br /></span><span style="COLOR: rgb(0,0,0)">        </span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">row</span><span style="COLOR: rgb(0,0,255)">&gt;&lt;</span><span style="COLOR: rgb(128,0,0)">button </span><span style="COLOR: rgb(255,0,0)">label</span><span style="COLOR: rgb(0,0,255)">="submit"</span><span style="COLOR: rgb(255,0,0)"> onClick</span><span style="COLOR: rgb(0,0,255)">="submit()"</span><span style="COLOR: rgb(0,0,255)">/&gt;&lt;/</span><span style="COLOR: rgb(128,0,0)">row</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">rows</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">grid</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">window</span><span style="COLOR: rgb(0,0,255)">&gt;</span></div></div><br />如果有一点web开发功底，想信上边的代码并不难理解。<br /><br />Test.java(该文件位于test包下面)<br /><div style="BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 5.4pt; WIDTH: 95%; PADDING-RIGHT: 5.4pt; BACKGROUND: rgb(230,230,230) 0% 50%; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid; PADDING-TOP: 4px; -moz-background-size: auto auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"><div><span style="COLOR: rgb(0,0,255)">package</span><span style="COLOR: rgb(0,0,0)"> test;<br /><br /></span><span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">class</span><span style="COLOR: rgb(0,0,0)"> Test {<br />    </span><span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> String getTestStr(String flag)<br />    {<br />        </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(flag.equals(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">1</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">))<br />        {<br />            </span><span style="COLOR: rgb(0,0,255)">return</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">this</span><span style="COLOR: rgb(0,0,0)">.getTestStr1();<br />        }</span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(flag.equals(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">2</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">))<br />        {<br />            </span><span style="COLOR: rgb(0,0,255)">return</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">this</span><span style="COLOR: rgb(0,0,0)">.getTestStr2();<br />        }</span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"><br />        {<br />            </span><span style="COLOR: rgb(0,0,255)">return</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">请输入正确的参数</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />        }<br />    }<br />    </span><span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> String getTestStr1()<br />    {<br />        </span><span style="COLOR: rgb(0,0,255)">return</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">调用类Test的getTestStr1方法</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />    }<br />    </span><span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> String getTestStr2()<br />    {<br />        </span><span style="COLOR: rgb(0,0,255)">return</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">调用类Test的getTestStr2方法</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />    }<br />}<br /></span></div></div><br /></span><a onclick="urchinTracker('/download/std/2.3.0')" href="http://prdownloads.sourceforge.net/zk1/zk-2.3.0.zip?download"><code></code></a>编写工作到此完成。<br />将其发布到tomcat下面，然后在浏览器中输入：http://localhost:8080/zktest/即可测试该功能。<br />现在jsp和zk页的整合还没有研究出来，希望有过这方面开发经验的大虾指点一二，可以用邮箱和我联系。<img src ="http://www.blogjava.net/jasmine214--love/aggbug/325491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-07 19:32 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/07/325491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JfreeChart --详细的介绍和3种使用方法</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/06/325386.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Tue, 06 Jul 2010 09:43:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/06/325386.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325386.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/06/325386.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325386.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325386.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文:http://ltc603.javaeye.com/blog/30207自己最近学习了JfreeChart的使用，觉得这个冬冬的功能非常强大，总结一下。主要介绍JfreeChart生成图片的几种方式先从网上找点介绍。一、简介    WW 的发展使得基于因特网的应用程序不再局限于静态或者简单的动态内容提供。传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网上。但是这...&nbsp;&nbsp;<a href='http://www.blogjava.net/jasmine214--love/archive/2010/07/06/325386.html'>阅读全文</a><img src ="http://www.blogjava.net/jasmine214--love/aggbug/325386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-06 17:43 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/06/325386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JfreeChart--demo1</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/06/325384.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Tue, 06 Jul 2010 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/06/325384.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325384.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/06/325384.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325384.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325384.html</trackback:ping><description><![CDATA[转自：<a href="http://hi.baidu.com/zh_m_zhou/blog/item/2772d017d9f39059f3de3218.html" target="_blank">http://hi.baidu.com/zh_m_zhou/blog/item/2772d017d9f39059f3de3218.html</a><br />
作者：pocky<br /><br />
JFreeChart是利用已知数据生成饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘的一个开源项
目。本demo的就是关于如何结合数据生成一个与之对应的饼图。<br /><br />
1. 环境：<br />
windowsXP，<br />
eclipse3.3，<br />
tomcat6.0，<br />
jfreechart-1.0.12<br /><br />
2，下载。到以下地址下载jfreechart-1.0.12的zip包<br />
http://www.jfree.org/jfreechart/index.html<br /><br />
3. 
在eclipse下新建一个web工程，解压刚下载的zip包，将其中的jcommon-1.0.15.jar和jfreechart-
1.0.12.jar复制到web工程的lib目录下<br /><br />
4. 新建一个servlet，方法如下：<br />
在web.xml中添加：<br /><font color="#3366ff">      &lt;servlet&gt;<br />
            &lt;servlet-name&gt;IndexServlet&lt;/servlet-name&gt;<br />
            
&lt;servlet-class&gt;com.demo.IndexServlet&lt;/servlet-class&gt;<br />
      &lt;/servlet&gt;<br />
      &lt;servlet-mapping&gt;<br />
            &lt;servlet-name&gt;IndexServlet&lt;/servlet-name&gt;<br />
            &lt;url-pattern&gt;/index.do&lt;/url-pattern&gt;<br />
      &lt;/servlet-mapping&gt;</font><br />
新建类，内容如下：<br /><font color="#3366ff">package com.demo;<br /><br />
import java.awt.Font;<br />
import java.io.IOException;<br />
import javax.servlet.ServletException;<br />
import javax.servlet.http.HttpServlet;<br />
import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;<br />
import org.jfree.chart.ChartFactory;<br />
import org.jfree.chart.ChartUtilities;<br />
import org.jfree.chart.JFreeChart;<br />
import org.jfree.chart.plot.PiePlot;<br />
import org.jfree.chart.title.TextTitle;<br />
import org.jfree.data.general.DefaultPieDataset;<br /><br />
public class IndexServlet extends HttpServlet{<br /><br />
      /**<br />
       * 获取一个演示用的简单数据集对象<br />
       * @return<br />
       */<br />
      private static DefaultPieDataset getDataSet() {<br />
          DefaultPieDataset dataset = new DefaultPieDataset();<br />
          dataset.setValue("苹果",100);<br />
          dataset.setValue("梨子",200);<br />
          dataset.setValue("葡萄",300);<br />
          dataset.setValue("香蕉",400);<br />
          dataset.setValue("荔枝",500);<br />
          return dataset;<br />
      }<br /><br />
      @Override<br />
      protected void doGet(HttpServletRequest req, HttpServletResponse 
resp)<br />
                  throws ServletException, IOException {<br />
            this.doPost(req,resp);<br />
      }<br /><br />
      @Override<br />
      protected void doPost(HttpServletRequest req, HttpServletResponse 
resp)<br />
                  throws ServletException, IOException {<br />
            resp.setCharacterEncoding("gb2312");<br />
            resp.setContentType("image/jpeg");<br />
          DefaultPieDataset data=getDataSet();<br />
          <br />
          JFreeChart chart=ChartFactory.createPieChart3D("水果产量图", data, 
true, false, false);<br />
          <br />
          Font font = new Font("SimSun", 10, 20); <br />
          TextTitle txtTitle = null; <br />
          txtTitle = chart.getTitle(); <br />
          txtTitle.setFont(font); <br />
          PiePlot pieplot = (PiePlot)chart.getPlot(); <br />
          pieplot.setLabelFont(font); <br />
          chart.getLegend().setItemFont(font); <br />
          <br />
          try {<br />
              ChartUtilities.writeChartAsJPEG(resp.getOutputStream(), 
chart, 600, 400);<br />
              System.out.print("OK");<br />
              
//this.getServletContext().getRequestDispatcher("/index2.jsp").forward(req,
 resp);<br />
          } catch (IOException e) {<br />
              // TODO Auto-generated catch block<br />
              e.printStackTrace();<br />
          }<br />
      } <br />
}<br /></font><br />
5.将工程部署到tomcat下，启动tomcat，访问http://server/appName/index.do。至此，一个简单的demo完
成。<br /><br />
参考文档：<br />
JFREECHART DEMO1<br />
http://blog.sina.com.cn/s/blog_4ce6c3f80100bydr.html<br />
JFREECHART DEMO2<br />
http://hi.baidu.com/javafanc/blog/item/7da708b544fc16c936d3cade.html<br />
JFREECHART 乱码<br />
http://topic.csdn.net/u/20071207/11/41ef3b10-043b-496e-8dd6-a501b4c2932c.html<img src ="http://www.blogjava.net/jasmine214--love/aggbug/325384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-06 17:33 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/06/325384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轻量级java snmp设备网管软件开发技术</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/04/325219.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Sun, 04 Jul 2010 13:35:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/04/325219.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325219.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/04/325219.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325219.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325219.html</trackback:ping><description><![CDATA[
		<p>Java技术，在网络管理系统中的应用已经比较普遍。网管软件的分类有很多种，有侧重于业务应用的，有侧重于管理设备的，有侧重于网络的，有侧重于桌面管理的，每种网管软件虽然外在的具体表现形式都不同，但其实内部的技术都大同小异。这其中的设备网管软件就是一个最典型的技术代表，一个全面的设备网管软件基本上要包含网络拓扑图、设备配置、故障管理、性能管理、安全管理、业务管理，也就是FCAPS 这几大块功能。</p>
		<p>一、 技术架构的变迁<br />     在网管软件最早的年代，基本上都是从电信管理网的那一套发展起来的，按TMN规范定义的模型来处理，像什么Q接口、F接口、X接口、CORBA、NMS/EMS、FCAPS功能划分，都是这种模型的代表。这种模型对于大型的电信网络来说是必须的，可是对于企业级别的设备网管软件来说，就显得过于笨重，花费的成本是无法接受的。<br />     于是对于设备网管软件的架构，逐步向实用化、工程化发展，也就是轻量级技术的发展。轻量级的技术，沿用了FCAPS的功能模型，也是用户关心的问题。而在内部技术上，突破了TMN的种种限制，好的就借用，不好的就抛弃。在这种轻量级技术的影响下，根据用户的需求，灵活选择JAVA技术、数据库技术、SNMP协议，就是这一技术的代表。</p>
		<p>二、 轻量级技术架构<br />     选择C/S，还是B/S？这是首选问题。C/S的客户端功能很强大，界面表现力很好，而且故障的反应能实时处理。B/S在集成网络拓扑图的界面展示上会打折扣，好在报表分析这块上。最好的建议是用Applet+服务端的模式，兼顾两者的优缺点。因为网管软件的网络服务特性、实时处理特性、大量任务监视、事件分发特性，不适合采用J2EE的模型，用普通JAVA做服务端是最恰当的。</p>
		<p>三、 模块级技术选择<br />1.通信协议选择：C/S架构的，可以选择RMI；Applet架构的可选XML-RPC或RMI技术，B/S架构不存在这个问题。</p>
		<p>2.数据库技术选择：O-R Mapping是最佳选择，Hibernate是这个领域最成熟的组件，比只用JDBC简便很多。</p>
		<p>3.网管客户端：这个是最容易被忽略的问题，真正在网管开发中，界面的复杂度和工作量比服务端大很多，而且对于用户体验来说，界面更加重要。界面当中最重要非网络拓扑图不可，基本上大多数的网管软件界面都是围绕着网络拓扑图来开发的。目前可以用商业的ilong视图组件，因为功能涉及面比较广，API比较复杂，报表系统做的很多，每个客户端都要收运行费用。喜欢轻量级开发的，可以用itopoview网络拓扑图组件，专门针对网管软件，很多网管系统常用的界面处理都内置了，上手也快，组件库小巧灵活，只收开发费。两个组件都可以用于applet环境。</p>
		<p>4.WEB客户端：如果选用B/S，可以考虑flex或SGV或ajax技术的web拓扑图，flex更成熟一些，用的人比较多。但是所有WEB 拓扑图都有一个缺点，都是100% java技术的，这样的话，团队中需要懂其他技术的开发人员。这是我再次推荐用Applet的原因。</p>
		<p>5.网管协议：目前运用的最多是SNMP协议，相关的java协议栈也比较多，像SNMP4j就是比较好的JAVA SNMP协议栈。如果想加快SNMP的开发，可以考虑ObjectSNMP组件，采用O/M Mapping技术（和O/R Mapping类似），这样的话，开发SNMP的主要工作就是定义普通JAVA对象，当然ObjectSNMP底层可能采用如SNMP4J这样的协议栈。</p>
		<p>6.客户端报表分析：毫无疑问，jfreechar肯定能满足需求，而且是免费的（只收文档费用）。还有一个选择，用JRobin，可以快速做出漂亮的流量图，但是JRobin是基于文件的数据存储，与系统的集成度不好，将来做数据分析也不方面，仅限用于救急。</p>
		<p>7.故障、事件分发机制：网管的事件分发不是很复杂，用一个JMS的产品如OpenJMS就可以；如果嫌JMS的存储多余，可以考虑JGroup消息广播机制。</p>
		<p>8.任务机制：是网管就不可避免的会设计到监控任务、定时任务。如果你对线程和时间处理的很好的，可以用java只带的就可以；否着的话，可以选择Quartz，再复杂的任务都能处理。</p>
		<p>其他体会：<br />不要迷信j2ee，对于设备级网管来说，只会帮倒忙，而且处处别扭；即使是B/S的架构，J2EE在处理任务、故障事件、SNMP服务方面也无能为力。设计一个灵活但简单的界面架构，用户的很多需求都针对界面的。(bitsCN.com原创/文jianlong/转载请保留) </p>
		<p>
				<br />文章转载自网管网：<a href="http://www.bitscn.com/pdb/java/200905/161526.html">http://www.bitscn.com/pdb/java/200905/161526.html</a></p>
<img src ="http://www.blogjava.net/jasmine214--love/aggbug/325219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-04 21:35 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/04/325219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>无线路由/AP/网桥---区别详解篇</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/07/04/325202.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Sun, 04 Jul 2010 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/07/04/325202.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/325202.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/07/04/325202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/325202.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/325202.html</trackback:ping><description><![CDATA[原文：<a href="http://net.csai.cn/Wireless_Config/200801170913031209.htm">http://net.csai.cn/Wireless_Config/200801170913031209.htm</a><br />通过<a href="http://www.csai.cn/incsearch/search.asp?key=%CE%DE%CF%DF" target="_blank">无线</a>上网冲浪，现在已经不是新鲜的事情，随着近一两年无线网络的飞速发展，从企业到家庭都开始在不同的领域体验着“自由上网”的乐趣，笔者接触无线网络也有一段时间了，经常在一些无线论坛逛游，无论是在现实生活还是在论坛中，总会有朋友不断的问这样的问题：什么是无线AP，什么是<a href="http://www.csai.cn/incsearch/search.asp?key=%CE%DE%CF%DF%C2%B7%D3%C9" target="_blank">无线路由</a>器，什么又是无线网桥，我想家里上网该用哪一种设备?今天笔者就详细的谈谈这几者之间的区别，以解初识无线的朋友的心中之惑。
<p>　　<strong>一、由名称看区别</strong></p><p>　　首先来看无线AP，AP是英文ACCESS POINT的首字母所写，翻译过来就是“无线访问点”或“无线接入点”，从名字上看就是通过它，能把你的拥有无线网卡的机器接入到网络中来。它主要是提供无线工作站对有线局域网和从有线局域网对无线工作站的访问，在访问接入点覆盖范围内的无线工作站可以通过它进行相互通信。通俗的讲，无线AP是无线网和有线网之间<a href="http://www.csai.cn/incsearch/search.asp?key=%B9%B5%CD%A8" target="_blank">沟通</a>的桥梁。由于无线AP的覆盖范围是一个向外扩散的圆形区域，因此，应当尽量把无线AP放置在无线网络的中心位置，而且各无线客户端与无线AP的直线距离最好不要超过太长，以避免因通讯信号衰减过多而导致通信失败。</p><p>　　无线AP相当于一个无线集线器(HUB)，接在有线<a href="http://www.csai.cn/incsearch/search.asp?key=%BD%BB%BB%BB" target="_blank">交换</a>机或<a href="http://www.csai.cn/incsearch/search.asp?key=%C2%B7%D3%C9" target="_blank">路由</a>器上，为跟它连接的无线网卡从路由器那里分得IP。</p><p>　　无线路由器，从名称上我们就可以知道这种设备具有路由的功能，大家可能对有线的宽带路由器有所了解，那么我们可以说无线路由器是单纯型AP与宽带路由器的一种结合;它借助于路由器功能，可实现家庭无线网络中的Internet连接共享，实现ADSL和小区宽带的无线共享接入 ，另外，无线路由器可以把通过它进行无线和有线连接的终端都分配到一个子网，这样子网内的各种设备交换数据就非常方便。</p><p>　　无线路由器就是AP、路由功能和集线器的集合体，支持有线无线组成同一子网，直接接上上层交换机或ADSL猫等，因为大多数无线路由器都支持PPOE拨号功能。</p><p>　　说到无线网桥，首先大家要了解网桥的概念，网桥(Bridge)又叫桥接器，它是一种在链路层实现局域网互连的<a href="http://www.csai.cn/incsearch/search.asp?key=%B4%E6%B4%A2" target="_blank">存储</a>转发设备。网桥有在不同网段之间再生信号的功能，它可以有效地联接两个LAN(局域网)，使本地通信限制在本网段内，并转发相应的信号至另一网段。网桥通常用于联接数量不多的、同一类型的网段。</p><p>　　无线网桥顾名思义就是无线网络的桥接，它可在两个或多个网络之间搭起通信的桥梁(无线网桥亦是无线AP的一种分支)。无线网桥除了具备上述有线网桥的基本特点之外，比其它有线网络设备更方便部署。</p><p>　　很多用过无线AP和无线路由器的朋友可能会说，现在很多无线AP和无线路由器也有网桥的功能，和无线网桥有什么区别?确实，从原理上来讲，上述两种设备的网桥功能和无线网桥的工作原理是一样的，如果说到不同的话，那就是一般单独说到无线网桥的时候，是专指那些适合室外远距离传输的“无线AP”，一般拥有专门的天线、功率放大器和一些适合室外工作的特点。<strong>二、初识三种设备外观</strong></p><p>　　通过上面的介绍，相必大家对这三种设备有了初步模糊的认识，OK，那下面我们再来真实的看一下三种设备的外观，以求有更进一步的直观了解。</p><p><strong>　　<a href="http://www.csai.cn/incsearch/search.asp?key=%CE%DE%CF%DF" target="_blank">无线</a>AP</strong></p><p>　　单纯型无线AP的外观比较简单，通常有一个接有线的RJ45网口、电源接口、配置口(usb口或通过<a href="http://www.csai.cn/incsearch/search.asp?key=web" target="_blank">web</a>界面配置)和几个状态指示灯。</p><p align="center"><img src="http://net.csai.cn/Wireless_Config/images/20081173675.jpg" />　　</p><p align="center">无线AP外观图</p><p><strong>　　<a href="http://www.csai.cn/incsearch/search.asp?key=%CE%DE%CF%DF%C2%B7%D3%C9" target="_blank">无线路由</a>器</strong></p><p>　　与无线AP相比，从外观上看，市面上的无线<a href="http://www.csai.cn/incsearch/search.asp?key=%C2%B7%D3%C9" target="_blank">路由</a>器最大的不同之处是多了四个有线网口，一般有一个WAN口用于上联上级网络设备，四个LAN口可以用于连接处于内网中的带有线网卡的计算机，相应的指示灯也同样多了一些。</p><p align="center"><img src="http://net.csai.cn/Wireless_Config/images/20081177959.jpg" />　　</p><p align="center">无线路由器外观图</p><p><strong>　　无线网桥</strong></p><p>　　由于无线网桥室外工作、远距离传输的需要，所以组成部件要必无线AP和无线路由器多不少，在设备组成上，无线网桥主要由无线网桥主设备(无线收发器)和天线组成。无线收发器由发射机和接收机组成，发射机将从局域网获得的数据编码，变成特定的频率信号，再通过天线发送出去;接收机则相反，将从天线获取的频率信号解码，还原成数据，再送到局域网中。</p><p>　　由于室外工作，所以一般在天线和无线网桥主设备之间时候，会一些小部件来起到防水、防雷击的作用。</p><p align="center"><img src="http://net.csai.cn/Wireless_Config/images/20081174378.jpg" />　　</p><p align="center">无线网桥外观图</p><p>　　<strong>三、组网拓扑</strong></p><p>　　对三种设备有了概念上的认识和直观上的产品外观认识了，下面我们再来看一下在具体组网的时候他们的各自的组网拓扑是什么样子的，严格的说，在这儿我们要讲的是一种理想的拓扑结构情况，因为实际中有很多<a href="http://www.csai.cn/incsearch/search.asp?key=%CE%DE%CF%DF" target="_blank">无线</a>AP或<a href="http://www.csai.cn/incsearch/search.asp?key=%CE%DE%CF%DF%C2%B7%D3%C9" target="_blank">无线路由</a>器也有桥的功能，所以在设成桥模式的情况下，也可以按网桥的结构来组网，不过在此为了行文方便，暂且不考虑此。</p><p>　　无线AP作为一个无线局域网的中心设备，以星型连接其覆盖范围内的具有无线网卡的计算机，然后通过无线AP上的双绞线链接到有线网络中的<a href="http://www.csai.cn/incsearch/search.asp?key=%BD%BB%BB%BB" target="_blank">交换</a>机或HUB上，所以结构非常简单。</p><p align="center"><img src="http://net.csai.cn/Wireless_Config/images/20081178352.jpg" />　　</p><p align="center">无线AP组网结构图</p><p>　　无线<a href="http://www.csai.cn/incsearch/search.asp?key=%C2%B7%D3%C9" target="_blank">路由</a>器结构与无线AP组网结构类似，不同的是他还可以通过双绞线以有线的方式链接计算机，轻松实现有线和无线的互相通信。</p><p align="center">　<img src="http://net.csai.cn/Wireless_Config/images/20081178057.jpg" />　</p><p align="center">无线路由器组网结构</p><p>　　无线网桥一般用于距离比较远的两栋或更多建筑物之间的互联互通。其典型组网结构如下图：</p><p align="center"><img src="http://net.csai.cn/Wireless_Config/images/20081179517.jpg" />　　</p><p align="center">无线网桥组网结构(点对点)<strong>四、适用环境及投资成本分析</strong></p><p>　　<a href="http://www.csai.cn/incsearch/search.asp?key=%CE%DE%CF%DF" target="_blank">无线</a>AP的投资成本最低，现在市面上最简单的无线AP一般都不到200元，适合那些家庭中有笔记本的朋友体验无线上网的乐趣，以及都一些小型的soho办公环境。另外一些室外无线AP还可以让你体验室外上网的新鲜体验。</p><p>　　与无线AP相比，<a href="http://www.csai.cn/incsearch/search.asp?key=%CE%DE%CF%DF%C2%B7%D3%C9" target="_blank">无线路由</a>器价格稍微高一点，但是其提供了与价格相比更全面更强大的功能，适合组建既有笔记本又有台式机的有线无线混合网络。另外通常在无线<a href="http://www.csai.cn/incsearch/search.asp?key=%C2%B7%D3%C9" target="_blank">路由</a>器中都有无线<a href="http://www.csai.cn/incsearch/search.asp?key=%B7%C0%BB%F0%C7%BD" target="_blank">防火墙</a>、虚拟<a href="http://www.csai.cn/incsearch/search.asp?key=%B7%FE%CE%F1%C6%F7" target="_blank">服务器</a>等功能，对于家庭及soho族们来说，可以说是最佳选择。</p><p>　　无线宽带路由器已逐步取带单纯型无线AP成为市场上的主流，所以建议目前在组网时不管你所使用的MODEM是否带路由都可首选无线宽带路由器。</p><p>　　专门的无线网桥价格相对前两者来说，价格要贵不少，具体价格和产品品牌及功能相差很大，几千到几万不等。但是对于哪些需要远距离传输的环境来说，要么自己铺设光缆，要么租用光缆，其成本却相对较小，而且可再利用性很强。还有可以克服有线无法克服的障碍问题。</p><p><strong>　　结论</strong></p><p>　　平常生活中我们都追求时尚，那么无线上网是提高我们网络体验的最佳选择，对于家庭来说，只需要花费可能是我们平常和朋友一顿饭的的投资，就可以让你立即体现到无线给你带来的便利和方便，而且还等什么呢?对于企业来说，同一城市不同办公地点互联困难?不<a href="http://www.csai.cn/incsearch/search.asp?key=%B0%B2%C8%AB" target="_blank">安全</a>?那么考虑一下无线网桥是否能帮您解决棘手的难题吧。</p><img src ="http://www.blogjava.net/jasmine214--love/aggbug/325202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-07-04 16:41 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/07/04/325202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>B/S--网管--拓扑图系统的实现--高手的一种方法</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/06/28/324663.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Mon, 28 Jun 2010 05:44:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/06/28/324663.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/324663.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/06/28/324663.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/324663.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/324663.html</trackback:ping><description><![CDATA[原文：http://blog.csdn.net/jinxfei/archive/2009/08/10/4430298.aspx<br />06年初还不像现在，WEB方面没有那么多成熟的框架，ajax也远没有今天这么普及， <br />
 为了改善用户体验，我准备在展示层所有的关键页面都使用AJAX技术， <br />
 我也是05年才开始学习WEB相关的东西，对js,css等等都不太熟悉， <br />
 于是在很短的时间内，研究了如下技术： <br />
 DWR、CSS、VML、DOJO、JSON，XSLT， <br />
 最终确定了用DWR作为数据传输手段，json作为数据传输编码格式，用DOJO来完成前台控件开发这样一个模式。 <br />
 （我有一篇简单的<a href="http://blog.csdn.net/jinxfei/archive/2009/08/09/4429150.aspx" target="_blank" title="关于DOJO的文章">关于DOJO的文章</a>
，提到DOJO在js面向对象封装方面有独到之处） <br /><br />
 我用DOJO开发了三套控件，其中最有特色的是一个拓扑图编辑和展示系统， <br />
 我对比过，在06年，很多网管都有拓扑图系统，但基本上都是基于C/S的， <br />
 我们实现的纯B/S的拓扑系统，在当时还是有一定的先进性的，这一设计，后来变成了我的研究生论文。 <br /><br />
 这个拓扑系统在浏览器中实现了MVC模式， <br />
 model是XML的拓扑描述，通过dwr加载和保存，描述拓扑图上的节点、连接线等信息， <br />
 view是VML，用于把模型展示层图形， <br />
 controller是javascript，当然使用DOJO做了封装，响应用户的操作， <br />
 然后修改模型，从而改变拓扑图的展示，比如拖拽、缩放、画线等等。 <br />
 这一部分从可研到设计到完成，只用了四周的时间，光js代码就超过了200K， <br />
 也算是我比较神奇的发挥了，如果没有DOJO框架，真不知道会乱成什么样。<img src ="http://www.blogjava.net/jasmine214--love/aggbug/324663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-06-28 13:44 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/06/28/324663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网管软件---网络拓扑模块</title><link>http://www.blogjava.net/jasmine214--love/archive/2010/06/28/324662.html</link><dc:creator>幻海蓝梦</dc:creator><author>幻海蓝梦</author><pubDate>Mon, 28 Jun 2010 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/jasmine214--love/archive/2010/06/28/324662.html</guid><wfw:comment>http://www.blogjava.net/jasmine214--love/comments/324662.html</wfw:comment><comments>http://www.blogjava.net/jasmine214--love/archive/2010/06/28/324662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasmine214--love/comments/commentRss/324662.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasmine214--love/services/trackbacks/324662.html</trackback:ping><description><![CDATA[原文：http://edu.5151doc.com/diannao/HTML/306141.html<br />网络拓扑是网管软件重要模块之一，一个好的网管软件不仅仅要能够快速的对全网发现，也需要在展现的时候，准确地展现出网络中的问题，方便管理人员快
速发现问题，并快速解决问题。因此，用户对网络拓扑的要求也越来越高。 <p>　　现如今，市面上各个厂家的网管软件层出不穷，较早期的网管软件
均是基于C/S架构、基于C/S架构的网管软件已经是很古老的产品了，其有两大弊病：一个是需要安装繁琐的客户端，另外一个就是不能满足用户在任何一点均
可访问的需求；因此，随着网管软件的竞争日趋激烈，以及软件技术的日新月异，有远见卓识的厂家已经开始推出支持B/S架构的网管软件。通过分析摩卡软件有
限公司的Mocha BSM的网络拓扑模块，来了解一下当今已经被广泛应用的B/S架构的网络拓扑相关软件的具体优势：</p><p>　　1．无需安装客
户端，从任何一点都可以登录访问</p><p>　　凡是使用过计算机的用户都清楚地知道，C/S架构即客户端/服务器架构，意味着凡是C/S架构的软件，
都是需要安装客户端的；而B/S架构的软件即浏览器/服务器，只需要在服务器端安装网管软件，就可以通过浏览器输入域名或者IP地址，即可访问。这样，只
要任何一台桌面终端安装了浏览器，即可从任何一点快速访问网管软件，即使是管理人员在家休息，在紧急的时候，也可以通过网络远程访问网管软件，来达到快速
解决问题的目的。</p><p>　　2．根据权限对网络拓扑进行统一管理</p><p>　　无论是政府机构和企业，随着分支机构的增加，其对网络的管理也
随之变得复杂。比如一个省级单位，下辖了多个地市分支机构，每个地市下面又会辖多个地县单位，因此这种典型的三级架构，从网络管理的角度来说，就一定要有
严格的权限划分，其权限应该是省级网络管理者可以看到整个省级单位，各地市单位以及地县单位的网络状态；而地市级网络管理者，则需要看到该地市网络和其所
辖的地县网络状态，他不能看到平级地市单位的网络，也不能看到省级的地市单位的网络；针对这种情况，C/S架构的网管软件是不可能做到的，而B/S架构的
网络拓扑展现，即可以通过权限划分来进行分级式管理。如今，新疆邮政信息局正式通过摩卡的网络拓扑来对全疆的网络系统管理者的权限进行划分和管理。</p><p>　　3．配置文件和发现信息实现集中统一管理和共享</p><p>　　C/S架构的网络管理软件，都是需要在客户端进行网络拓扑发现的配置
工作，配置内容包括网络发现时的共同体名、发现方式、发现范围等，而这些配置的信息以及拓扑发现后的展现信息，都是保存在客户端的机器上的，无法实现共
享，因此通过B/S架构的网管软件，可以很方便的进行配置信息统一管理和共享。</p><p>　　4．支持手工绘制拓扑图，随需而变</p><p>　　摩
卡网络拓扑展现，不仅仅支持自动二层和三层网络拓扑的发现，也支持手工绘制拓扑图，针对网络监控的不同需求，进行展现。可以定制骨干线路监控，也可以订制
备用线路监控视图，摩卡网络拓扑内置常见的各种网络设备图标、机房元素、线路元素、中国地图、各省地图以及各种背景，因此通过摩卡网络拓扑模块，可以快速
实现手工网络网络拓扑定制，随着监控需求而灵活变化。并且，一旦用户的网络环境发生变化需要调整，管理员也可以方便的进行网络的调整。</p><p>　　
5．支持管理拓扑图，方便安装管理区域进行监控管理</p><p>　　针对网络拓扑的监控需求及功能来说，一个大的企业网络是由很多部门在使用的，而某些
设备发生故障影响到的仅仅是某个部门或者区域，因此如何将网络拓扑和企业的各个职能部门相关联，通过这种按职能和权限进行划分的管理拓扑图，可以快速的发
现某些故障的影响和根本原因。</p><p>　　6．B/S架构展现的不仅仅是网络拓扑，可展现机房监控视图和业务视图</p><p>　　通过摩卡软件的
网管软件，不仅仅可以展现网络拓扑，还可以根据用户的机房实际设计图，来展现企业的真实机房监控图，以及业务逻辑监控视图。</p><p>　　摩卡软件为
用户提供灵活的机房监控视图，根据企业的具体情况，定制总部的机房至分支机构的机房监控视图。如果北京的机房出现故障，则可以通过双击北京机房图标，查看
在北京具体是哪个机房出现故障。通过双击中关村机房，可以进一步查看中关村机房的具体问题。管理人员甚至可以通过中关村机房监控视图，进一步查看，哪个具
体机柜上，到底是哪个设备有问题。</p><p>　　7．适合于划分了网管网段的企业和机构进行统筹管理</p><p>　　对于较大型的网
管项目来说，企业或者机构在建立企业内部网络的时候，都预先规划了专用的网管网段，只有在网管网段内的网管服务器才能够对全网进行网络发现和网络配置。因
此C/S架构的网管软件一旦放置在网管网段内，管理人员要想从工作区对网络进行监控，就比较麻烦。而支持B/S架构的网络拓扑管理软件，只需要将网管服务
器放置到网管网段，直接通过工作区的浏览器访问即可。这也是为何，当今B/S架构的浏览器会大行其道的原因之一。</p><p>　　8．拓扑图和网络实时
状态直接关联，快速发现问题</p><p>　　通过摩卡的网络拓扑展现，和设备各个指标状态相关联，管理者无需在不同的页签和模块之间来回切换，帮助管理
人员快速的了解整个网络的健康状态。如下图所示：用户可以直接从网络拓扑察看到设备的物理链接信息、设备接口一览、IT资产信息、背板信息、以及设备的详
细技术指标等。并可以通过拓扑图实现对设备的TELNET操作、MIB信息查看操作、PING、TraceRoute操作等，大大的提高了管理人员的效
率。</p><img src ="http://www.blogjava.net/jasmine214--love/aggbug/324662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasmine214--love/" target="_blank">幻海蓝梦</a> 2010-06-28 13:30 <a href="http://www.blogjava.net/jasmine214--love/archive/2010/06/28/324662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>