﻿<?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-passyt-随笔分类-资料收集</title><link>http://www.blogjava.net/passyt/category/9358.html</link><description>&lt;/br&gt;&lt;font color="#6faf30" &gt;没有做不到只有想不到&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;a href="javascript:window.external.AddFavorite('http://www.blogjava.net/passyt/','与笑凌的博客')"&gt;&lt;font color="#6faf30"&gt;加入收藏夹&lt;/font&gt;&lt;/a&gt;
&lt;font color="#6faf30" size="1"&gt;在线人数:1
&lt;!--
&lt;script src=http://fastonlineusers.com/online.php?d="passyt"&gt;&lt;/script&gt;
--&gt;
人&lt;/font&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 31 Oct 2007 16:50:16 GMT</lastBuildDate><pubDate>Wed, 31 Oct 2007 16:50:16 GMT</pubDate><ttl>60</ttl><item><title>转:Patterns in Java</title><link>http://www.blogjava.net/passyt/archive/2006/06/22/54480.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Thu, 22 Jun 2006 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/06/22/54480.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/54480.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/06/22/54480.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/54480.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/54480.html</trackback:ping><description><![CDATA[
		<h3 align="center">
				<font size="2">设计模式(Patterns in Java)</font>
		</h3>
		<br />
		<font size="2">　　板桥里人的设计模式讲解是国内媒体（包括书籍和网站）中最早的成体系介绍，本系列介绍纯为免费传播(转载本站文章，请保留作者和网址)，尽量做到言简意赅，通俗易懂，但是难免有所疏漏敬请来信或论坛讨论，不断完善。 </font>
		<p>
		</p>
		<p>
				<font size="2">　　真正掌握设计模式需要在实践中不断研究和使用，关于设计模式在具体实例的应用，可以阅读板桥里人的书籍《</font>
				<a href="http://www.jdon.com/mybook/index.htm">
						<font size="2">Java实用系统开发指南</font>
				</a>
				<font size="2">》。书籍中8个实例都从设计模式、框架等高度对系统进行崭新的设计和实现，这种应用理念正是现在以及将来软件设计和编程的根本之道。 </font>
		</p>
		<table border="0" cellpadding="5" cellspacing="5" width="100%">
				<tbody>
						<tr>
								<td>
										<table border="0" cellpadding="3" cellspacing="3" width="90%">
												<tbody>
														<tr>
																<td bgcolor="#8ca5b7">
																		<font color="#ffffff" size="2">
																				<b>1:前言</b>
																		</font>
																</td>
														</tr>
														<tr>
																<td>
																		<p>
																				<font size="2">
																						<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																				</font>
																				<a href="http://www.jdon.com/designpatterns/patternsimportant.htm">
																						<font size="2">学习GoF设计模式的重要性</font>
																				</a>
																				<font size="2">
																				</font>
																		</p>
																		<p>
																				<font size="2">
																						<img src="http://www.jdon.com/images/top.gif" border="0" height="9" width="9" />
																				</font>
																				<a href="http://www.jdon.com/designpatterns/architecture.htm">
																						<font size="2">建筑和软件中模式之异同</font>
																				</a>
																				<font size="2">
																				</font>
																		</p>
																		<p>
																				<font size="2">
																						<img src="http://www.jdon.com/images/top.gif" border="0" height="9" width="9" />
																				</font>
																				<a href="http://www.jdon.com/artichect/ifelse.htm" target="_blank">
																						<font size="2">你还在用if else吗？ </font>
																				</a>
																		</p>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
						<tr>
								<td>
										<table border="0" cellpadding="3" cellspacing="3" width="90%">
												<tbody>
														<tr>
																<td bgcolor="#8ca5b7">
																		<font color="#ffffff" size="2">
																				<b>2:GoF设计模式</b>
																		</font>
																</td>
														</tr>
														<tr>
																<td>
																		<font size="2">A.<b>创建模式</b></font>
																		<table align="center" border="0" cellpadding="3" cellspacing="3" width="95%">
																				<tbody>
																						<tr>
																								<td bgcolor="#fbfce9">
																										<p>
																												<font size="2">
																														<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																												</font>
																												<a href="http://www.javaolympus.com/java/JavaDesignDirectory.html" target="_blank">
																												</a>
																												<a href="http://www.jdon.com/designpatterns/designpattern_factory.htm">
																														<font size="2">设计模式之Factory(工厂模式)<br /></font>
																												</a>
																												<font size="2">使用工厂模式就象使用new一样频繁.<font color="#ff0000">2002/10/9更新</font></font>
																										</p>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#ffffff">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/prototype.htm">
																												<font size="2">设计模式之Prototype(原型模式)</font>
																										</a>
																										<br />
																										<font size="2">用原型实例指定创建对象的种类，并且通过拷贝这些原型创建新的对象。</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#fbfce9">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/builder.htm">
																												<font size="2">设计模式之Builder</font>
																										</a>
																										<br />
																										<font size="2">汽车由车轮 方向盘 发动机很多部件组成，同时，将这些部件组装成汽车也是一件复杂的工作，Builder模式就是将这两种情况分开进行。</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#ffffff">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/singleton.htm">
																												<font size="2">设计模式之Singleton(单态模式)</font>
																										</a>
																										<br />
																										<font size="2">保证一个类只有一个实例,并提供一个访问它的全局访问点 <font color="#ff0000">2002/10/9更新</font></font>
																								</td>
																						</tr>
																				</tbody>
																		</table>
																		<br />
																		<font size="2">
																				<b>B.结构模式</b>
																		</font>
																		<table align="center" border="0" cellpadding="3" cellspacing="3" width="95%">
																				<tbody>
																						<tr>
																								<td bgcolor="#fbfce9">
																										<p>
																												<font size="2">
																														<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																												</font>
																												<a href="http://www.jdon.com/designpatterns/designpattern_Facade.htm">
																														<font size="2">设计模式之Facade</font>
																												</a>
																												<br />
																												<font size="2">可扩展的使用JDBC针对不同的数据库编程,Facade提供了一种灵活的实现.</font>
																										</p>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#ffffff">
																										<p>
																												<font size="2">
																														<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																												</font>
																												<a href="http://www.jdon.com/designpatterns/designpattern_proxy.htm">
																														<font size="2">设计模式之Proxy</font>
																												</a>
																												<br />
																												<font size="2">以Jive为例,剖析代理模式在用户级别授权机制上的应用</font>
																										</p>
																								</td>
																						</tr>
																						<tr bgcolor="#fbfce9">
																								<td bgcolor="#fbfce9">
																										<p>
																												<font size="2">
																														<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																												</font>
																												<a href="http://www.jdon.com/designpatterns/adapter.htm">
																														<font size="2">设计模式之Adapter</font>
																												</a>
																												<br />
																												<font size="2">使用类再生的两个方式:组合(new)和继承(extends),这个已经在"thinking in java"中提到过.</font>
																										</p>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#ffffff">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/composite.htm">
																												<font size="2">设计模式之Composite</font>
																										</a>
																										<br />
																										<font size="2">就是将类用树形结构组合成一个单位.你向别人介绍你是某单位，你是单位中的一个元素，别人和你做买卖，相当于和单位做买卖。文章中还对Jive再进行了剖析。</font>
																								</td>
																						</tr>
																						<tr bgcolor="#fbfce9">
																								<td bgcolor="#fbfce9">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/decorator.htm">
																												<font size="2">设计模式之Decorator</font>
																										</a>
																										<br />
																										<font size="2">Decorator是个油漆工,给你的东东的外表刷上美丽的颜色.</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#ffffff">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/bridge.htm">
																												<font size="2">设计模式之Bridge</font>
																										</a>
																										<br />
																										<font size="2">将"牛郎织女"分开(本应在一起,分开他们,形成两个接口),在他们之间搭建一个桥(动态的结合)</font>
																								</td>
																						</tr>
																						<tr bgcolor="#fbfce9">
																								<td bgcolor="#fbfce9">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/flyweight.htm">
																												<font size="2">设计模式之Flyweight</font>
																										</a>
																										<br />
																										<font size="2">提供Java运行性能,降低小而大量重复的类的开销.</font>
																								</td>
																						</tr>
																				</tbody>
																		</table>
																		<br />
																		<font size="2">
																				<b>C.行为模式</b>
																		</font>
																		<table align="center" border="0" cellpadding="5" cellspacing="3" width="95%">
																				<tbody>
																						<tr>
																								<td bgcolor="#ffffff">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/template.htm">
																												<font size="2">设计模式之Template</font>
																										</a>
																										<br />
																										<font size="2">实际上向你介绍了为什么要使用Java 抽象类,该模式原理简单,使用很普遍.</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#fbfce9">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/memento.htm">
																												<font size="2">设计模式之Memento</font>
																										</a>
																										<br />
																										<font size="2">很简单一个模式,就是在内存中保留原来数据的拷贝. </font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#ffffff">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/observer.htm">
																												<font size="2">设计模式之Observer<br /></font>
																										</a>
																										<font size="2">介绍如何使用Java API提供的现成Observer</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#fbfce9">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/cor.htm">
																												<font size="2">设计模式之Chain of Responsibility</font>
																										</a>
																										<br />
																										<font size="2">各司其职的类串成一串,好象击鼓传花,当然如果自己能完成,就不要推委给下一个.</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#ffffff">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/command.htm">
																												<font size="2">设计模式之Command</font>
																										</a>
																										<br />
																										<font size="2">什么是将行为封装,Command是最好的说明.</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#fbfce9">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/designpattern_State.htm">
																												<font size="2">设计模式之State<br /></font>
																										</a>
																										<font size="2">状态是编程中经常碰到的实例,将状态对象化,设立状态变换器,便可在状态中轻松切换.</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#ffffff">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/designpattern_Strategy.htm">
																												<font size="2">设计模式之Strategy</font>
																										</a>
																										<br />
																										<font size="2">不同算法各自封装,用户端可随意挑选需要的算法.</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#fbfce9">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/mediator.htm">
																												<font size="2">设计模式之Mediator</font>
																										</a>
																										<br />
																										<font size="2">Mediator很象十字路口的红绿灯,每个车辆只需和红绿灯交互就可以.</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#ffffff">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/interpreter.htm">
																												<font size="2">设计模式之Interpreter</font>
																										</a>
																										<br />
																										<font size="2">主要用来对语言的分析,应用机会不多.</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#fbfce9">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																										</font>
																										<a href="http://www.jdon.com/designpatterns/visitor.htm">
																												<font size="2">设计模式之Visitor</font>
																										</a>
																										<br />
																										<font size="2">访问者在进行访问时,完成一系列实质性操作,而且还可以扩展.</font>
																								</td>
																						</tr>
																						<tr>
																								<td bgcolor="#ffffff">
																										<font size="2">
																												<img src="http://www.jdon.com/images/top.gif" height="9" width="9" /> 设计模式之Iterator<br />这个模式已经被整合入Java的Collection.在大多数场合下无需自己制造一个Iterator,只要将对象装入Collection中，直接使用Iterator进行对象遍历。</font>
																								</td>
																						</tr>
																				</tbody>
																		</table>
																		<p align="center"> </p>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
						<tr>
								<td>
										<table border="0" cellpadding="3" cellspacing="3" width="90%">
												<tbody>
														<tr>
																<td bgcolor="#8ca5b7">
																		<font color="#ffffff" size="2">
																				<b>3:英文资料</b>
																		</font>
																</td>
														</tr>
														<tr>
																<td>
																		<table border="0" cellpadding="3" cellspacing="3" width="100%">
																				<tbody>
																						<tr>
																								<td bgcolor="#ffffff">
																										<p>
																												<font size="2">
																														<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																												</font>
																												<a href="http://www.jdon.com/designpatterns/TIPatterns/html/Index.html">
																														<font size="2">Thinking in Patterns with Java</font>
																												</a>
																												<font size="2">Thinking in Java的作者</font>
																												<a href="http://www.mindview.net/" target="_blank">
																														<font size="2">Eckel</font>
																												</a>
																												<font size="2">又一著作!</font>
																										</p>
																										<p>
																												<font size="2">
																														<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																												</font>
																												<a href="http://www.research.umbc.edu/%7Etarr/dp/fall00/cs491.html">
																														<font size="2">CMSC491D Design Patterns In Java </font>
																												</a>
																												<br />
																												<font size="2">
																														<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																												</font>
																												<a href="http://www.mindspring.com/%7Emgrand/pattern_synopses.htm" target="_blank">
																														<font size="2">Overview of Design Patterns</font>
																												</a>
																												<font size="2">精确定义各个模式以及他们的关系<br /><img src="http://www.jdon.com/images/top.gif" height="9" width="9" /></font>
																												<a href="http://www.patterndepot.com/put/8/JavaPatterns.htm" target="_blank">
																														<font size="2">Design Patterns Java Companion</font>
																												</a>
																												<font size="2">
																												</font>
																										</p>
																								</td>
																						</tr>
																				</tbody>
																		</table>
																</td>
														</tr>
												</tbody>
										</table>
										<table border="0" cellpadding="3" cellspacing="3" width="90%">
												<tbody>
														<tr>
																<td bgcolor="#8ca5b7">
																		<font color="#ffffff" size="2">
																				<b>4:J2EE设计模式</b>
																		</font>
																</td>
														</tr>
														<tr>
																<td>
																		<table border="0" cellpadding="3" cellspacing="3" width="100%">
																				<tbody>
																						<tr>
																								<td bgcolor="#ffffff">
																										<p>
																												<font size="2">
																														<img src="http://www.jdon.com/images/top.gif" height="9" width="9" />
																												</font>
																												<a href="http://www.jdon.com/designpatterns/ejb.htm">
																														<font size="2">设计模式在EJB中应用</font>
																												</a>
																												<font size="2">这是板桥里人banq发表在《程序员》第6期的文章。<br /><img src="http://www.jdon.com/images/top.gif" height="9" width="9" /></font>
																												<a href="http://www.jdon.com/books/ejbdesignpatterns.pdf">
																														<font size="2">EJB设计模式(英文)</font>
																												</a>
																												<font size="2">从设计模式去理解EJB或J2EE我认为是个非常有效的办法. </font>
																										</p>
																								</td>
																						</tr>
																				</tbody>
																		</table>
																</td>
														</tr>
												</tbody>
										</table>
										<p align="center"> </p>
								</td>
						</tr>
				</tbody>
		</table>
		<ul>
				<li>
						<font size="2">感谢台湾「</font>
						<a href="http://www.dotspace.idv.tw/" target="_blank">
								<font size="2">点空间</font>
						</a>
						<font size="2">」将本站设计模式文章翻译成</font>
						<a href="http://www.dotspace.idv.tw/Patterns.htm" target="_blank">
								<font size="2">繁体字并转载</font>
						</a>
						<font size="2">
						</font>
				</li>
				<li>
						<font size="2">感谢网友David Yu将本站设计模式制作成PDF文件，</font>
						<a href="http://www.jdon.com/designpatterns/PatternsInJava.pdf">
								<font size="2">这里下载PDF文件</font>
						</a>
				</li>
		</ul>
		<p align="center">
				<font color="#a52a2a" size="2">
						<em>原文参看:http://www.jdon.com/designpatterns/index.htm</em>
				</font>
		</p>
<img src ="http://www.blogjava.net/passyt/aggbug/54480.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-06-22 13:55 <a href="http://www.blogjava.net/passyt/archive/2006/06/22/54480.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转:使用Tomcat建立基于主机名的虚拟主机</title><link>http://www.blogjava.net/passyt/archive/2006/06/08/51481.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Thu, 08 Jun 2006 13:09:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/06/08/51481.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/51481.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/06/08/51481.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/51481.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/51481.html</trackback:ping><description><![CDATA[
		<div style="text-indent: 21pt;">
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">浏览器与</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">服务器建立连接后，除了将请求</span>
								<span lang="EN-US">
										<font face="Times New Roman">URL</font>
								</span>
								<span style="font-family: 宋体;">中的资源路径发送给</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">服务器外，还会将</span>
								<span lang="EN-US">
										<font face="Times New Roman">URL</font>
								</span>
								<span style="font-family: 宋体;">中的主机名部分作为</span>
								<span lang="EN-US">
										<font face="Times New Roman">HTTP</font>
								</span>
								<span style="font-family: 宋体;">请求消息的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Host</font>
								</span>
								<span style="font-family: 宋体;">头发送给</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">服务器。例如，在浏览器地址栏中输入</span>
								<span lang="EN-US">
										<font face="Times New Roman">http://www.it315.org</font>
								</span>
								<span style="font-family: 宋体;">，浏览器发送给</span>
								<span lang="EN-US">
										<font face="Times New Roman">www.it315.org</font>
								</span>
								<span style="font-family: 宋体;">主机上的</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">服务器的请求消息内容如下：</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span lang="EN-US">
										<font face="Times New Roman">
												<span style="">       </span>GET<span style="">  </span>/<span style="">  </span>HTTP/1.1&lt;</font>
								</span>
								<span style="font-family: 宋体;">回车</span>
								<span lang="EN-US">
										<font face="Times New Roman">&gt;</font>
								</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span lang="EN-US">
										<font face="Times New Roman">
												<span style="">       </span>Host:<span style="">  </span>www.it315.org&lt;</font>
								</span>
								<span style="font-family: 宋体;">回车</span>
								<span lang="EN-US">
										<font face="Times New Roman">&gt;</font>
								</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span lang="EN-US">
										<font face="Times New Roman">
												<span style="">       </span>&lt;</font>
								</span>
								<span style="font-family: 宋体;">回车</span>
								<span lang="EN-US">
										<font face="Times New Roman">&gt;</font>
								</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">服务器接收到浏览器的访问请求消息后，根据</span>
								<span lang="EN-US">
										<font face="Times New Roman">Host</font>
								</span>
								<span style="font-family: 宋体;">头字段中所设置的主机名，就知道该选择哪个</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">站点来进行响应，因此，可以使用不同的主机名来作为区分同一个</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">服务器上的不同站点的标识信息。</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span lang="EN-US">
										<font face="Times New Roman">Tomcat</font>
								</span>
								<span style="font-family: 宋体;">的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Server.xml</font>
								</span>
								<span style="font-family: 宋体;">配置文件中有一个</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素，一个</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素用于建立一个</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">站点，使用多个</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素则可以建立多个</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">站点。</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素的父级元素为</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Engine&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素，嵌套在同一个</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Engine&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素中的多个</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素的</span>
								<span lang="EN-US">
										<font face="Times New Roman">name</font>
								</span>
								<span style="font-family: 宋体;">属性不能相同，</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素的</span>
								<span lang="EN-US">
										<font face="Times New Roman">name</font>
								</span>
								<span style="font-family: 宋体;">属性指定</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">站点所对应的主机名称。</span>
								<span lang="EN-US">
										<font face="Times New Roman">Tomcat</font>
								</span>
								<span style="font-family: 宋体;">的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Server.xml</font>
								</span>
								<span style="font-family: 宋体;">配置文件中初始设置的</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素内容如下：</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font size="2">
										<font face="Times New Roman">&lt;Host name="localhost" appBase="webapps" …&gt;</font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font size="2">
										<font face="Times New Roman">…</font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font size="2">
										<font face="Times New Roman">&lt;/Host&gt;</font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素中的</span>
								<span lang="EN-US">
										<font face="Times New Roman">appBase</font>
								</span>
								<span style="font-family: 宋体;">属性指定了一个路径，该路径将作为嵌套在它里面的</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Context&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素的</span>
								<span lang="EN-US">
										<font face="Times New Roman">docBase</font>
								</span>
								<span style="font-family: 宋体;">属性中设置的相对路径的基准路径。</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span style="font-family: 宋体;">当</span>
								<span lang="EN-US">
										<font face="Times New Roman">Tomcat</font>
								</span>
								<span style="font-family: 宋体;">接收到访问请求时，将比较请求消息中的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Host</font>
								</span>
								<span style="font-family: 宋体;">头字段的值与</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素的</span>
								<span lang="EN-US">
										<font face="Times New Roman">name</font>
								</span>
								<span style="font-family: 宋体;">属性值，并以匹配的</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素所创建的</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">站点来响应。如果</span>
								<span lang="EN-US">
										<font face="Times New Roman">Server.xml</font>
								</span>
								<span style="font-family: 宋体;">文件中没有与请求消息的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Host</font>
								</span>
								<span style="font-family: 宋体;">头字段匹配的</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素，</span>
								<span lang="EN-US">
										<font face="Times New Roman">Tomcat</font>
								</span>
								<span style="font-family: 宋体;">将以默认的</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">站点来响应。只要</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Engine&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素的</span>
								<span lang="EN-US">
										<font face="Times New Roman">defaultHost</font>
								</span>
								<span style="font-family: 宋体;">属性设置为嵌套在它里面的某个</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素的</span>
								<span lang="EN-US">
										<font face="Times New Roman">name</font>
								</span>
								<span style="font-family: 宋体;">属性值，该</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素所创建的</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">站点就成了该引擎的默认</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">站点。例如，</span>
								<span lang="EN-US">
										<font face="Times New Roman">Tomcat</font>
								</span>
								<span style="font-family: 宋体;">的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Server.xml</font>
								</span>
								<span style="font-family: 宋体;">文件中的</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Engine&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素的默认设置如下：</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font size="2">
										<font face="Times New Roman">&lt;Engine name="Standalone" defaultHost="localhost" debug="0"&gt;</font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font size="2">
										<font face="Times New Roman">…</font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font face="Times New Roman">
										<font size="2">
												<span style="">       </span>&lt;Host name="localhost" appBase="webapps" …&gt; </font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font face="Times New Roman">
										<font size="2">
												<span style="">       </span>… </font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font face="Times New Roman">
										<font size="2">
												<span style="">       </span>&lt;/Host&gt; </font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font size="2">
										<font face="Times New Roman">…</font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font size="2">
										<font face="Times New Roman">&lt;/Engine&gt;</font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span style="font-family: 宋体;">上面的这段配置信息说明，该引擎的默认</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">站点为嵌套在</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Engine&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素中的</span>
								<span lang="EN-US">
										<font face="Times New Roman">name</font>
								</span>
								<span style="font-family: 宋体;">属性为“</span>
								<span lang="EN-US">
										<font face="Times New Roman">localhost</font>
								</span>
								<span style="font-family: 宋体;">”的</span>
								<span lang="EN-US">
										<font face="Times New Roman">&lt;Host&gt;</font>
								</span>
								<span style="font-family: 宋体;">元素所创建的</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">站点。</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span style="font-family: 宋体;">在同一台计算机上建立了多个基于主机名的虚拟主机后，</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">浏览器要访问其中的某个虚拟主机的资源时，在访问</span>
								<span lang="EN-US">
										<font face="Times New Roman">URL</font>
								</span>
								<span style="font-family: 宋体;">中必须采用主机名，而不能采用</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址。这是因为</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">浏览器要将</span>
								<span lang="EN-US">
										<font face="Times New Roman">URL</font>
								</span>
								<span style="font-family: 宋体;">中的主机名部分作为</span>
								<span lang="EN-US">
										<font face="Times New Roman">HTTP</font>
								</span>
								<span style="font-family: 宋体;">请求消息的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Host</font>
								</span>
								<span style="font-family: 宋体;">头发送给</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">服务器，如果</span>
								<span lang="EN-US">
										<font face="Times New Roman">URL</font>
								</span>
								<span style="font-family: 宋体;">中的主机名部分使用的是</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址，那么，浏览器发出的请求消息中的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Host</font>
								</span>
								<span style="font-family: 宋体;">头字段的值就是这个</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址，而在同一台计算机上建立的多个基于主机名的虚拟主机共享同一个</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址，在</span>
								<span lang="EN-US">
										<font face="Times New Roman">Host</font>
								</span>
								<span style="font-family: 宋体;">头字段使用</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址根本就无法区分不同的站点。</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span style="font-family: 宋体;">即使在</span>
								<span lang="EN-US">
										<font face="Times New Roman">URL</font>
								</span>
								<span style="font-family: 宋体;">中指定的是主机名时，</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">浏览器还是要先获得该主机名所对应的</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址，然后再使用这个</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">去连接</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">服务器。所以，在建立基于主机名的虚拟主机时，除了要在</span>
								<span lang="EN-US">
										<font face="Times New Roman">Tomcat</font>
								</span>
								<span style="font-family: 宋体;">的</span>
								<span lang="EN-US">
										<font face="Times New Roman">server.xml</font>
								</span>
								<span style="font-family: 宋体;">文件中进行设置外，还需要在整个网络系统中建立主机名与</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址的映射关系，即必须将主机名添加到名称解析系统，以便</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">浏览器能够从名称解析系统中查询出主机名所对应的</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址。建立主机名与</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址的映射关系的惯用方式有两种：一是使用客户机本地的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Hosts </font>
								</span>
								<span style="font-family: 宋体;">文件，二是使用</span>
								<span lang="EN-US">
										<font face="Times New Roman">DNS(Domain Name System</font>
								</span>
								<span style="font-family: 宋体;">，域名系统</span>
								<span lang="EN-US">
										<font face="Times New Roman">)</font>
								</span>
								<span style="font-family: 宋体;">服务器。</span>
								<span lang="EN-US">
										<font face="Times New Roman">Hosts </font>
								</span>
								<span style="font-family: 宋体;">文件和</span>
								<span lang="EN-US">
										<font face="Times New Roman">DNS</font>
								</span>
								<span style="font-family: 宋体;">的作用都是允许用户使用“友好”的、文本格式的主机名称，而不是数字格式的</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址来访问网络中的计算机。</span>
								<span lang="EN-US">
										<font face="Times New Roman">Hosts</font>
								</span>
								<span style="font-family: 宋体;">文件可用于小型的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Intranet</font>
								</span>
								<span style="font-family: 宋体;">（企业内部网），网络中的所有计算机上都需要使用</span>
								<span lang="EN-US">
										<font face="Times New Roman">Hosts</font>
								</span>
								<span style="font-family: 宋体;">文件。</span>
								<span lang="EN-US">
										<font face="Times New Roman">DNS</font>
								</span>
								<span style="font-family: 宋体;">通常用于大型的网络，特别是</span>
								<span lang="EN-US">
										<font face="Times New Roman">Internet</font>
								</span>
								<span style="font-family: 宋体;">上对外提供服务的计算机都是通过</span>
								<span lang="EN-US">
										<font face="Times New Roman">DNS</font>
								</span>
								<span style="font-family: 宋体;">来建立其主机名与</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址的映射关系。客户机首先在本地的</span>
								<span lang="EN-US">
										<font face="Times New Roman">Hosts</font>
								</span>
								<span style="font-family: 宋体;">文件中查找主机名称所映射的</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址，如果没有找到，再去查询</span>
								<span lang="EN-US">
										<font face="Times New Roman">DNS</font>
								</span>
								<span style="font-family: 宋体;">服务器。为了简单起见，这里仅介绍一下</span>
								<span lang="EN-US">
										<font face="Times New Roman">Hosts</font>
								</span>
								<span style="font-family: 宋体;">文件。对于</span>
								<span lang="EN-US">
										<font face="Times New Roman">Windows 2000</font>
								</span>
								<span style="font-family: 宋体;">系统，</span>
								<span lang="EN-US">
										<font face="Times New Roman">Hosts </font>
								</span>
								<span style="font-family: 宋体;">文件位于操作系统根目录（取决操作系统所在的分区，通常是</span>
								<span lang="EN-US">
										<font face="Times New Roman">c:\winnt</font>
								</span>
								<span style="font-family: 宋体;">）下的</span>
								<span lang="EN-US">
										<font face="Times New Roman">System32\Drivers\Etc</font>
								</span>
								<span style="font-family: 宋体;">子目录中，默认情况下，该文件中有如下一行内容：</span>
						</font>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<span lang="EN-US">
								<font face="Times New Roman">
										<font size="2">
												<span style="">       </span>127.0.0.1<span style="">       </span>localhost </font>
								</font>
						</span>
				</p>
				<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
						<font size="2">
								<span style="font-family: 宋体;">这行文本的作用就是将</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址（</span>
								<span lang="EN-US">
										<font face="Times New Roman">127.0.0.1</font>
								</span>
								<span style="font-family: 宋体;">）映射成主机名（</span>
								<span lang="EN-US">
										<font face="Times New Roman">localhost</font>
								</span>
								<span style="font-family: 宋体;">），这也就是在</span>
								<span lang="EN-US">
										<font face="Times New Roman">IE</font>
								</span>
								<span style="font-family: 宋体;">浏览器地址栏中可以使用</span>
								<span lang="EN-US">
										<font face="Times New Roman">localhost</font>
								</span>
								<span style="font-family: 宋体;">访问本地</span>
								<span lang="EN-US">
										<font face="Times New Roman">WEB</font>
								</span>
								<span style="font-family: 宋体;">服务器的原因。如果要增加更多的主机名与</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址的映射，可以在</span>
								<span lang="EN-US">
										<font face="Times New Roman">Hosts</font>
								</span>
								<span style="font-family: 宋体;">文件中增加更多的行，然后参照上面这行内容的格式在每行中填写</span>
								<span lang="EN-US">
										<font face="Times New Roman">IP</font>
								</span>
								<span style="font-family: 宋体;">地址和相应的主机名。</span>
						</font>
				</p>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">（1）用UltraEdit打开&lt;Tomcat主目录&gt;/conf目录下的Server.xml文件，使用“查找”菜单查找内容为“&lt;/Host&gt;”的行，紧接该行下面增加一对&lt;Host&gt;&lt;/Host&gt;标签。参照前面的&lt;Host&gt;标签的属性设置情况，设置新增的&lt;Host&gt;标签的属性，并在它里面嵌套一个设置该WEB站点根目录的&lt;Context&gt;元素，最终的内容如下： </font>
		</div>
		<div style="text-indent: 21pt;">
				<span>
						<font size="2">       &lt;Host name="site1" debug="0" appBase="d:\VirtualHost1"&gt; </font>
				</span>
		</div>
		<div style="text-indent: 21pt;">
				<span>
						<font size="2">              &lt;Context path="" docBase="." debug="0"/&gt; </font>
				</span>
		</div>
		<div style="text-indent: 21pt;">
				<span>
						<font size="2">       &lt;/Host&gt; </font>
				</span>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">这样，将创建一个新的WEB站点。上面的&lt;Context&gt;元素的docBase属性值被设置为一个点（.），即表示使用&lt;Host&gt;元素的appBase属性中所设置的路径作为这个&lt;Context&gt;所映射的目录。 </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">（2）在上面新增的&lt;Host&gt;&lt;/Host&gt;标签对下面再增加一对&lt;Host&gt;&lt;/Host&gt;标签，并将它设置为如下形式： </font>
		</div>
		<div style="text-indent: 21pt;">
				<span>
						<font size="2">       &lt;Host name="site2" debug="0" appBase="d:\VirtualHost2"&gt; </font>
				</span>
		</div>
		<div style="text-indent: 21pt;">
				<span>
						<font size="2">              &lt;Context path="" docBase="." debug="0"/&gt; </font>
				</span>
		</div>
		<div style="text-indent: 21pt;">
				<span>
						<font size="2">       &lt;/Host&gt; </font>
				</span>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">这又创建了一个新的WEB站点，该站点的主机名称为site2，根目录对应的本地文件系统目录为d:\VirtualHost2。 </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">（3）在d:盘下创建名称为VirtualHost1和VirtualHost2两个目录，并在这两个目录中分别创建一个名为test.html的文件，在d:\VirtualHost1\test.html文件中写入如下一行内容： </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<em>
								<span>    </span>
						</em>
						<em>这是</em>d:\VirtualHost1<em>目录中的<span>test.html文件</span></em></font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">在d:\VirtualHost2\test.html文件中写入如下一行内容： </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<em>
								<span>    </span>
						</em>
						<em>这是</em>d:\VirtualHost2<em>目录中的<span>test.html文件</span></em></font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">（4）保存修改后的Server.xml文件，重新启动Tomcat WEB服务器程序。打开一个新的命令行窗口中，并在这个命令行窗口中执行如下命令： </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">telnet 127.0.0.1 8080 </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">接着在连接成功的telnet程序命令窗口中，输入如下内容： </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       GET /test.html HTTP/1.1&lt;</span>回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       Host:&lt;</span>空格&gt;site1&lt;回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       &lt;</span>回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">这时在telnet程序窗口中可以看到，WEB服务器返回内容的正文部分为d:\VirtualHost1\test.html文件中的内容。接着WEB服务器返回内容的下边，输入如下内容： </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       GET /test.html HTTP/1.1&lt;</span>回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       Host:&lt;</span>空格&gt;site2&lt;回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       &lt;</span>回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">在telnet程序窗口中又可以看到，WEB服务器这次返回内容的正文部分为d:\VirtualHost2\test.html文件中的内容。接着WEB服务器返回内容的下边，输入如下内容： </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       GET /test.html HTTP/1.1&lt;</span>回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       Host:&lt;</span>空格&gt;&lt;回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       &lt;</span>回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">在telnet程序窗口中又可以看到，WEB服务器这次返回内容的正文部分为d:\test\test.html文件中的内容。接着WEB服务器返回内容的下边，再次输入如下内容： </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       GET /test.html HTTP/1.1&lt;</span>回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       Host:&lt;</span>空格&gt;xxx&lt;回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<span>       &lt;</span>回车&gt; </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">在telnet程序窗口中又可以看到，WEB服务器这次返回内容的正文部分仍然为d:\test\test.html文件中的内容。 </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">上面的整个交互过程如图2.34所示，Tomcat根据第1次和第2次请求中所指定Host头的值，查找Server.xml文件中与之相匹配的&lt;Host&gt;元素的name属性值，并以匹配的&lt;Host&gt;元素所设置的WEB站点来响应；在第3次和第4次请求中所指定Host头的值，在Server.xml文件中没有与之对应的&lt;Host&gt;元素的name属性值，Tomcat将以默认的WEB站点来响应。<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/zhangxiaoxiang/i10.jpg" /></font>
		</div>
		<div align="center">
				<font size="2">图2.34 </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">（5）在Windows 2000系统中，用记事本程序打开c:\winnt\System32\Drivers\Etc\Hosts文件，可以看到有如下一行内容： </font>
		</div>
		<div style="text-indent: 21pt;">
				<span>
						<font size="2">       127.0.0.1       localhost </font>
				</span>
		</div>
		<div>
				<font size="2">紧接这行文本的下面，用它复制出两行文本，并将这两行文本中的localhost分别修改成site1和site2，这样，就使用Hosts文件为当前计算机设置了多个主机名。如果要用site1和site2这个两主机名访问其他计算机上的WEB站点，则应将127.0.0.1修改成其他计算机的实际IP地址。保存Hosts文件后，在命令行窗口中执行“ping site1<span><span>”</span>和“ping site2<span>”</span>命令，查看该主机名是否被正确解析到了相应的IP</span>地址上。建立site1和site2与计算机IP地址的映射后，在IE浏览器地址栏中输入http://localhost:8080/test.html、http://site1:8080/test.html和http://site2:8080/test.html，可以看到浏览器将显示出各自站点中的test.html网页文件的内容。 </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
				</font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">可见，使用主机名的方式在同一台WEB服务器上创建多个虚拟主机后，在WEB浏览器中使用主机名访问Web服务器时，Web服务器将选择与该主机名关联的WEB站点进行响应。通过这种方式，多个WEB站点可以共享同一个IP地址和相同的端口号，唯一不足的就是WEB浏览不能通过IP地址去访问这些WEB站点。基于主机名的虚拟主机是目前Internet上的大多数虚拟主机业务提供商所通常采用的方式。只要找出几个小型公司或个人的网站，如果在WEB浏览器地址栏中输入“http://主机名”可以访问到该WEB站点，接着在命令行窗口中执行“ping 主机名”，查看到该域名对应的IP地址，然后在WEB浏览器地址栏中输入“http://IP地址”时，却无法访问这个WEB站点了，那么，这个WEB站点就是一个基于主机名的虚拟主机，它与其他一些WEB站点共享一台WEB服务器，而不是自己独享一台WEB服务器。 </font>
		</div>
		<div style="text-indent: 21pt;">
				<font size="2">
						<strong>注意</strong>：当使用安全套接字层 (SSL) 时，不能使用主机头字段来实现虚拟主机，这是因为使用SSL的HTTP请求有加密保护。主机头字段是加密内容的一部分，不能被解释和路由到正确的站点。<br /><br />原文参看:http://blog.csdn.net/zhangxiaoxiang/archive/2006/06/02/769416.aspx </font>
		</div>
<img src ="http://www.blogjava.net/passyt/aggbug/51481.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-06-08 21:09 <a href="http://www.blogjava.net/passyt/archive/2006/06/08/51481.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006年中国软件收入规模前100家企业名单</title><link>http://www.blogjava.net/passyt/archive/2006/05/30/49078.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Tue, 30 May 2006 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/30/49078.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/49078.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/30/49078.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/49078.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/49078.html</trackback:ping><description><![CDATA[
		<p align="center">
				<strong>2006年中国软件收入规模前100家企业名单</strong>
		</p>
		<p align="right">　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　 单位：万元                    </p>
		<p>
		</p>
		<p>
		</p>
		<table cellspacing="0" cellpadding="0" width="92%" align="center" border="0">
				<tbody>
						<tr>
								<td id="content" style="FONT-SIZE: 10.5pt">
										<div align="center">
												<table cellspacing="0" cellpadding="0" align="center" border="1">
														<tbody>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">序号</div>
																		</td>
																		<td nowrap="" width="191">
																				<div align="center">企 业 名 称</div>
																		</td>
																		<td nowrap="" width="57">
																				<div align="center">软件收入</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">序号</div>
																		</td>
																		<td nowrap="" width="206">
																				<div align="center">企 业 名 称</div>
																		</td>
																		<td nowrap="" width="58">
																				<div align="center">软件收入</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">1</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>华为技术有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>1520629</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">26</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>用友软件股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>100076</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">2</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>海尔集团公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>760699</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">27</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>大唐电信科技股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>87300</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">3</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>中兴通讯股份有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>636000</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">28</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>福州福大自动化科技有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>80839</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">4</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>UT斯达康通讯有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>598554</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">29</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>思爱普（北京）软件系统有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>80345</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">5</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>神州数码（中国）有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>462188</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">30</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>广州金鹏电子有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>75890</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">6</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>浙江浙大网新科技股份有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>420029</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">31</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>南京南瑞继保电气有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>75882</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">7</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>熊猫电子集团有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>406920</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">32</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>中国银联股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>74015</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">8</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>北京北大方正集团</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>274488</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">33</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>爱立信科技服务（中国）有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>70971</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">9</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>浪潮集团有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>259887</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">34</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>深圳市金证科技服务有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>70177</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">10</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>海信集团有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>245526</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">35</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>长春一汽启明信息技术股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>63486</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">11</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>四川长虹电子集团有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>231262</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">36</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>南京南瑞集团公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>63169</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">12</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>东软集团有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>230000</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">37</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>中铁信息工程集团有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>62200</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">13</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>清华同方股份有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>203557</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">38</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>杭州恒生电子集团有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>59286</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">14</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>微软（中国）有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>192857</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">39</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>深圳市南凌科技发展有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>58276</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">15</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>南京联创科技股份有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>171968</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">40</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>株洲南车时代电气股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>58241</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">16</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>中国软件与技术服务股份有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>165906</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">41</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>金蝶软件（中国）有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>58000</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">17</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>青岛朗讯科技通讯企业有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>150977</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">42</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>国电南瑞科技股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>55579</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">18</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>山东中创软件工程股份有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>146550</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">43</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>上海贝尔阿尔卡特股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>55395</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">19</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>中国民航信息网络股份有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>135021</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">44</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>威海北洋电气股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>54522</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">20</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>上海宝信软件股份有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>133682</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">45</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>沈阳东大自动化有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>53926</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">21</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>北京甲骨文软件系统有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>132199</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">46</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>太极计算机股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>52808</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">22</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>珠海炬力集成电路设计有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>125750</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">47</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>云南南天电子信息产业股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>51579</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">23</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>中冶赛迪工程技术股份有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>124450</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">48</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>大恒新纪元科技股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>49917</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">24</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>北京华胜天成科技股份有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>112700</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">49</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>北京四方继保自动化股份有限公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>48796</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">25</div>
																		</td>
																		<td nowrap="" width="191">
																				<div>烟台东方电子信息产业集团有限公司</div>
																		</td>
																		<td nowrap="" width="57">
																				<div>108672</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">50</div>
																		</td>
																		<td nowrap="" width="206">
																				<div>长江计算机（集团）公司</div>
																		</td>
																		<td nowrap="" width="58">
																				<div>48651</div>
																		</td>
																</tr>
														</tbody>
												</table>
										</div>
										<div align="center"> </div>
										<div align="center">
												<table cellspacing="0" cellpadding="0" align="center" border="1">
														<tbody>
																<tr>
																		<td nowrap="" width="29">
																				<br clear="all" />
																				<div align="center">序号</div>
																		</td>
																		<td nowrap="" width="188">
																				<div align="center">企 业 名 称</div>
																		</td>
																		<td nowrap="" width="60">
																				<div align="center">软件收入</div>
																		</td>
																		<td nowrap="" width="29" colspan="2">
																				<div align="center">序号</div>
																		</td>
																		<td nowrap="" width="199">
																				<div align="center">企 业 名 称</div>
																		</td>
																		<td nowrap="" width="60">
																				<div align="center">软件收入</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">51</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>北京青鸟信息系统有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>46530</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">76</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>创智集团  （湖南）</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>33352</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">52</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>深圳迈瑞生物医疗电子股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>46437</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">77</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>深圳市同洲电子股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>32893</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">53</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>北京东华合创数码科技股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>45911</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">78</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>福建南威软件工程发展有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>32869</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">54</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>石化盈科信息技术有限责任公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>44898</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">79</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>泰豪软件股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>32850</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">55</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>中控科技集团有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>44810</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">80</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>北京乐金系统集成有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>32807</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">56</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>中盈优创资讯科技有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>42608</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">81</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>福建榕基软件开发有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>32223</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">57</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>亿阳信通股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>42075</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">82</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>先锋软件股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>31996</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">58</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>华立集团有限公司  （浙江）</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>40392</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">83</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>江西捷德智能卡系统有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>31866</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">59</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>北京握奇数据系统有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>40323</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">84</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>中科软科技股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>31837</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">60</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>日电信息系统（中国）有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>39989</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">85</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>江苏金智科技股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>31526</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">61</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>北京和利时系统工程股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>39860</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">86</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>沈阳西东控制技术有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>31010</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">62</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>上海华讯网络系统有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>39815</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">87</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>广东新粤交通投资有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>29813</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">63</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>广州海格通信产业集团有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>39763</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">88</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>首都信息发展股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>28310</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">64</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>大连华信计算机技术有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>39446</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">89</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>广州华南资讯科技有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>28094</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">65</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>希姆通信息技术（上海）有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>38888</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">90</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>赛尔网络有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>27945</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">66</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>沈阳先锋计算机工程有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>38000</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">91</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>南望信息产业集团有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>27344</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">67</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>北京富通东方科技有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>37976</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">92</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>京华网络有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>27008</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">68</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>亚信科技（中国）有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>37710</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">93</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>福建新大陆电脑股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>27000</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">69</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>沈阳新松机器人自动化股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>36540</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">94</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>上海新华控制技术(集团)有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>26119</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">70</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>华迪计算机有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>36223</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">95</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>上海禹华通信技术有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>25803</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">71</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>福建富士通信息软件有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>35225</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">96</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>福建星网锐捷通讯股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>25781</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">72</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>浙江大华技术股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>34923</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">97</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>麦迪实软件（昆山）有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>25030</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">73</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>江苏南大苏富特软件股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>34428</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">98</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>广州市数控设备有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>24832</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">74</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>云南电信网信实业集团有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>33574</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">99</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>北京中科希望软件股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>23706</div>
																		</td>
																</tr>
																<tr>
																		<td nowrap="" width="29">
																				<div align="center">75</div>
																		</td>
																		<td nowrap="" width="188">
																				<div>杭州士兰微电子股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>33429</div>
																		</td>
																		<td nowrap="" width="28">
																				<div align="center">100</div>
																		</td>
																		<td nowrap="" width="200" colspan="2">
																				<div>上海复旦光华信息科技股份有限公司</div>
																		</td>
																		<td nowrap="" width="60">
																				<div>23289</div>
																		</td>
																</tr>
														</tbody>
												</table>
										</div>
										<div> </div>
										<div> </div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/passyt/aggbug/49078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-30 17:56 <a href="http://www.blogjava.net/passyt/archive/2006/05/30/49078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转载）关于Web3.0的标准：吃喝买卖随己 </title><link>http://www.blogjava.net/passyt/archive/2006/05/24/47838.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Wed, 24 May 2006 08:24:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/24/47838.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/47838.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/24/47838.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/47838.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/47838.html</trackback:ping><description><![CDATA[
		<p>1、web的等级标准是什么?<br />　　首先我们要知道网络是干什么的?网络是为广大人民服务的。这样我们可以认为:按照网络为大家提供的服务内容不同、范围大小、深浅度、网民的感受等来划分web的等级。<br />2、老百姓(包含网民)需要什么?<br />　　精神需求+物质需求<br />3、web1.0的功能<br />　　满足网民少部分精神需求----新闻阅读、资料下载等。<br />　　缺点:仅能阅读，不能参与。没有归属感。<br />4、web2.0的功能(增加了BBS\博客等互动功能)<br />　　满足网民更多精神需求，双向互动----阅读新闻、制造新闻等。有了归属感-----网络上面有个属于自己的家(个人空间)和存在虚拟关系的成员(网友、读者)<br />　　缺点:由于网民基本都是虚拟身份(未经官方认证)，所以成员之间只能停留在精神层面的交流(不影响物质财产得失)。<br />5、web3.0功能---风险更小的精神生活+更广泛的EC<br />　　可以进行便于法律监督的精神交流(例:真实资料的网恋，直至合法婚姻等)。可以介入产业活动，逐步帮助个人、集体、社会创造更多的物质。重点:网民不但要求有归属感，而且要做主人。<br />　　主人当然要有真实的身份，还要有配套的游戏规则----通过网络就可以认证真实身份。只有具备这些条件，才有可能秩序地从事产业活动。</p>
		<p>二、符合中国国情的web3.0基础条件分析。</p>
		<p>1、国家相关机构对个人合法身份的确认。<br />　　第三代身份证为这一条件打下了良好的基础，公安机关联网的计算机，可以接收网站发来的个人身份确认信息，网民可以便捷地到辖区派出所刷卡确认身份。这个条件仅仅是诚信的基础。<br />2、在非网络时代，中国人更多的信任主要通过关系网中的熟人介绍，在交往中，依赖面对面的交流，凭个人的感觉，逐步取得信任，进一步开始产业活动。<br />　　中国的一句俗话:人是一面相。听到的远不如自己亲眼看到的。<br />3、网络时代怎样满足中国人的这个习惯呢?<br />　　A、网络的语音视频功能----看到听到。<br />　　B、成员相对固定的视频会议系统+文字交流区----QQ群、圈子、E话通、页面网电等----建立口碑传播渠道。<br />　　C、完善同学、战友、亲戚、同事的网络组织。由于成员结构复杂且分布广泛，所以通过这个组织比较容易找到共同熟人或者值得信赖的中间人(大多是有身份的人)----网上网下人脉结合。<br />　　D、任何人可以主动或者被动的考察、接受考察。----提高效率，是网络的意义所在。<br />4、借鉴国外个人诚信管理制度，在部分网民中推广会员诚信等级确认制度。目前，国内部分网站已经作了起来。<br />5、有了这样的基础，产业活动才具有普遍意义---一亿以上的实实在在的老百姓，通过网络进行商业、工业、服务业等的部分环节工作。</p>
		<p>　　三、无论Web3.0最终内容是什么，但一定是在形式上，通过网络深化对大众的服务，更加低成本高效率地满足更多的人对精神的追求以及创造更多的财富。</p>
		<p>　　四、说给勤奋中的站长和看好中国的VC们。</p>
		<p>　　中国在互联网方面和发达国家的距离相对较小，而且越来越小，但方向一定要符合中国国情，才能少出现泡沫，不出现泡沫。<br />　　我们欣喜地看到几家网站，抓住了趋势，得到了VC的支持，风头正劲。<br />　　同时，笔者还高兴的在中国的郑州、徐州接触了几个网络团队，他们不为一时的网络泡沫所动，潜心研究，俯首基础建设，座上有鸿儒(世界顶级技术专家、VC代表)，往来尽白丁(不善动笔当不了写手的草根)。<br />　　必要的时候，我会为他们献上一笔。<br />　　勤奋终有所获，方向正确，风险更小!</p>
		<p>　　补充:</p>
		<p>　　<font color="#006400">web1.0----网站是别人的家------我只是看看--------陌路人<br />　　web2.0----网站是朋友的家------有人和我聊聊------客人<br />　　WEB3.0----网站是你我的家------吃喝买卖随己------主人</font></p>
<img src ="http://www.blogjava.net/passyt/aggbug/47838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-24 16:24 <a href="http://www.blogjava.net/passyt/archive/2006/05/24/47838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MD5加密算法</title><link>http://www.blogjava.net/passyt/archive/2006/05/20/47147.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sat, 20 May 2006 01:56:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/20/47147.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/47147.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/20/47147.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/47147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/47147.html</trackback:ping><description><![CDATA[
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
				<span style="color: rgb(0, 128, 128);"> 1</span>
				<img id="Codehighlighter1_20_680_Open_Image" onclick="this.style.display='none'; Codehighlighter1_20_680_Open_Text.style.display='none'; Codehighlighter1_20_680_Closed_Image.style.display='inline'; Codehighlighter1_20_680_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_20_680_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_20_680_Closed_Text.style.display='none'; Codehighlighter1_20_680_Open_Image.style.display='inline'; Codehighlighter1_20_680_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="color: rgb(0, 0, 0);">String MD5(String s)</span>
				<span id="Codehighlighter1_20_680_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_20_680_Open_Text">
						<span style="color: rgb(0, 0, 0);">{<br /></span>
						<span style="color: rgb(0, 128, 128);"> 2</span>
						<span style="color: rgb(0, 0, 0);">
								<img id="Codehighlighter1_46_144_Open_Image" onclick="this.style.display='none'; Codehighlighter1_46_144_Open_Text.style.display='none'; Codehighlighter1_46_144_Closed_Image.style.display='inline'; Codehighlighter1_46_144_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_46_144_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_46_144_Closed_Text.style.display='none'; Codehighlighter1_46_144_Open_Image.style.display='inline'; Codehighlighter1_46_144_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />     </span>
						<span style="color: rgb(0, 0, 255);">char</span>
						<span style="color: rgb(0, 0, 0);"> hexDigits[] </span>
						<span style="color: rgb(0, 0, 0);">=</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span id="Codehighlighter1_46_144_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_46_144_Open_Text">
								<span style="color: rgb(0, 0, 0);">{<br /></span>
								<span style="color: rgb(0, 128, 128);"> 3</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />         </span>
								<span style="color: rgb(0, 0, 0);">'</span>
								<span style="color: rgb(0, 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);">1</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);">2</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);">3</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);">4</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);">5</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);">6</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);">7</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);">8</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);">9</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);">a</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);">b</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);">c</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);">d</span>
								<span style="color: rgb(0, 0, 0);">'</span>
								<span style="color: rgb(0, 0, 0);">,<br /></span>
								<span style="color: rgb(0, 128, 128);"> 4</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />         </span>
								<span style="color: rgb(0, 0, 0);">'</span>
								<span style="color: rgb(0, 0, 0);">e</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);">f</span>
								<span style="color: rgb(0, 0, 0);">'</span>
								<span style="color: rgb(0, 0, 0);">}</span>
						</span>
						<span style="color: rgb(0, 0, 0);">;<br /></span>
						<span style="color: rgb(0, 128, 128);"> 5</span>
						<span style="color: rgb(0, 0, 0);">
								<img id="Codehighlighter1_156_619_Open_Image" onclick="this.style.display='none'; Codehighlighter1_156_619_Open_Text.style.display='none'; Codehighlighter1_156_619_Closed_Image.style.display='inline'; Codehighlighter1_156_619_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_156_619_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_156_619_Closed_Text.style.display='none'; Codehighlighter1_156_619_Open_Image.style.display='inline'; Codehighlighter1_156_619_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />     </span>
						<span style="color: rgb(0, 0, 255);">try</span>
						<span style="color: rgb(0, 0, 0);"> </span>
						<span id="Codehighlighter1_156_619_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_156_619_Open_Text">
								<span style="color: rgb(0, 0, 0);">{<br /></span>
								<span style="color: rgb(0, 128, 128);"> 6</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span>
								<span style="color: rgb(0, 0, 255);">byte</span>
								<span style="color: rgb(0, 0, 0);">[] strTemp </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> s.getBytes();<br /></span>
								<span style="color: rgb(0, 128, 128);"> 7</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       MessageDigest mdTemp </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> MessageDigest.getInstance(</span>
								<span style="color: rgb(0, 0, 0);">"</span>
								<span style="color: rgb(0, 0, 0);">MD5</span>
								<span style="color: rgb(0, 0, 0);">"</span>
								<span style="color: rgb(0, 0, 0);">);<br /></span>
								<span style="color: rgb(0, 128, 128);"> 8</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       mdTemp.update(strTemp);<br /></span>
								<span style="color: rgb(0, 128, 128);"> 9</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span>
								<span style="color: rgb(0, 0, 255);">byte</span>
								<span style="color: rgb(0, 0, 0);">[] md </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> mdTemp.digest();<br /></span>
								<span style="color: rgb(0, 128, 128);">10</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span>
								<span style="color: rgb(0, 0, 255);">int</span>
								<span style="color: rgb(0, 0, 0);"> j </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> md.length;<br /></span>
								<span style="color: rgb(0, 128, 128);">11</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span>
								<span style="color: rgb(0, 0, 255);">char</span>
								<span style="color: rgb(0, 0, 0);"> str[] </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">new</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 255);">char</span>
								<span style="color: rgb(0, 0, 0);">[j </span>
								<span style="color: rgb(0, 0, 0);">*</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);">];<br /></span>
								<span style="color: rgb(0, 128, 128);">12</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span>
								<span style="color: rgb(0, 0, 255);">int</span>
								<span style="color: rgb(0, 0, 0);"> k </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 0);">0</span>
								<span style="color: rgb(0, 0, 0);">;<br /></span>
								<span style="color: rgb(0, 128, 128);">13</span>
								<span style="color: rgb(0, 0, 0);">
										<img id="Codehighlighter1_443_577_Open_Image" onclick="this.style.display='none'; Codehighlighter1_443_577_Open_Text.style.display='none'; Codehighlighter1_443_577_Closed_Image.style.display='inline'; Codehighlighter1_443_577_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_443_577_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_443_577_Closed_Text.style.display='none'; Codehighlighter1_443_577_Open_Image.style.display='inline'; Codehighlighter1_443_577_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />       </span>
								<span style="color: rgb(0, 0, 255);">for</span>
								<span style="color: rgb(0, 0, 0);"> (</span>
								<span style="color: rgb(0, 0, 255);">int</span>
								<span style="color: rgb(0, 0, 0);"> i </span>
								<span style="color: rgb(0, 0, 0);">=</span>
								<span style="color: rgb(0, 0, 0);"> </span>
								<span style="color: rgb(0, 0, 0);">0</span>
								<span style="color: rgb(0, 0, 0);">; i </span>
								<span style="color: rgb(0, 0, 0);">&lt;</span>
								<span style="color: rgb(0, 0, 0);"> j; i</span>
								<span style="color: rgb(0, 0, 0);">++</span>
								<span style="color: rgb(0, 0, 0);">) </span>
								<span id="Codehighlighter1_443_577_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_443_577_Open_Text">
										<span style="color: rgb(0, 0, 0);">{<br /></span>
										<span style="color: rgb(0, 128, 128);">14</span>
										<span style="color: rgb(0, 0, 0);">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />         </span>
										<span style="color: rgb(0, 0, 255);">byte</span>
										<span style="color: rgb(0, 0, 0);"> byte0 </span>
										<span style="color: rgb(0, 0, 0);">=</span>
										<span style="color: rgb(0, 0, 0);"> md[i];<br /></span>
										<span style="color: rgb(0, 128, 128);">15</span>
										<span style="color: rgb(0, 0, 0);">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />         str[k</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);"> hexDigits[byte0 </span>
										<span style="color: rgb(0, 0, 0);">&gt;&gt;&gt;</span>
										<span style="color: rgb(0, 0, 0);"> </span>
										<span style="color: rgb(0, 0, 0);">4</span>
										<span style="color: rgb(0, 0, 0);"> </span>
										<span style="color: rgb(0, 0, 0);">&amp;</span>
										<span style="color: rgb(0, 0, 0);"> </span>
										<span style="color: rgb(0, 0, 0);">0xf</span>
										<span style="color: rgb(0, 0, 0);">];<br /></span>
										<span style="color: rgb(0, 128, 128);">16</span>
										<span style="color: rgb(0, 0, 0);">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />         str[k</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);"> hexDigits[byte0 </span>
										<span style="color: rgb(0, 0, 0);">&amp;</span>
										<span style="color: rgb(0, 0, 0);"> </span>
										<span style="color: rgb(0, 0, 0);">0xf</span>
										<span style="color: rgb(0, 0, 0);">];<br /></span>
										<span style="color: rgb(0, 128, 128);">17</span>
										<span style="color: rgb(0, 0, 0);">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />         }</span>
								</span>
								<span style="color: rgb(0, 0, 0);">
										<br />
								</span>
								<span style="color: rgb(0, 128, 128);">18</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />         </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);">new</span>
								<span style="color: rgb(0, 0, 0);"> String(str);<br /></span>
								<span style="color: rgb(0, 128, 128);">19</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />       }</span>
						</span>
						<span style="color: rgb(0, 0, 0);">
								<br />
						</span>
						<span style="color: rgb(0, 128, 128);">20</span>
						<span style="color: rgb(0, 0, 0);">
								<img id="Codehighlighter1_647_678_Open_Image" onclick="this.style.display='none'; Codehighlighter1_647_678_Open_Text.style.display='none'; Codehighlighter1_647_678_Closed_Image.style.display='inline'; Codehighlighter1_647_678_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_647_678_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_647_678_Closed_Text.style.display='none'; Codehighlighter1_647_678_Open_Image.style.display='inline'; Codehighlighter1_647_678_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />       </span>
						<span style="color: rgb(0, 0, 255);">catch</span>
						<span style="color: rgb(0, 0, 0);"> (Exception e)</span>
						<span id="Codehighlighter1_647_678_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_647_678_Open_Text">
								<span style="color: rgb(0, 0, 0);">{<br /></span>
								<span style="color: rgb(0, 128, 128);">21</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />         </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);">null</span>
								<span style="color: rgb(0, 0, 0);">;<br /></span>
								<span style="color: rgb(0, 128, 128);">22</span>
								<span style="color: rgb(0, 0, 0);">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />       }</span>
						</span>
						<span style="color: rgb(0, 0, 0);">
								<br />
						</span>
						<span style="color: rgb(0, 128, 128);">23</span>
						<span style="color: rgb(0, 0, 0);">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="color: rgb(0, 0, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">24</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
<img src ="http://www.blogjava.net/passyt/aggbug/47147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-20 09:56 <a href="http://www.blogjava.net/passyt/archive/2006/05/20/47147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：Hibernate Validator 简介 </title><link>http://www.blogjava.net/passyt/archive/2006/05/18/46718.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Wed, 17 May 2006 18:39:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/18/46718.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/46718.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/18/46718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/46718.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/46718.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Hibernate								Validator 简介														在项目的业务属性中,你是不是要经常验证属性的取值范围呢. 想要了解比较优美的解决方案吗?           														看看Hibernate Validator 是怎么做的吧.一见到她,相信你就会说: Oh God, 这就是我需要的.										...&nbsp;&nbsp;<a href='http://www.blogjava.net/passyt/archive/2006/05/18/46718.html'>阅读全文</a><img src ="http://www.blogjava.net/passyt/aggbug/46718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-18 02:39 <a href="http://www.blogjava.net/passyt/archive/2006/05/18/46718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络地址</title><link>http://www.blogjava.net/passyt/archive/2006/05/18/46717.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Wed, 17 May 2006 18:09:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/18/46717.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/46717.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/18/46717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/46717.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/46717.html</trackback:ping><description><![CDATA[
		<h2>
				<font color="#ff0000">
						<em>网站资料</em>
				</font>
		</h2>
		<font size="3">
				<font color="#000000" size="4">
						<hr />
						<br />
						<font size="2">
								<font color="#000000">JScript中文参考手册：</font>
						</font>
				</font>
				<a href="http://man.ddvip.com/web/JScriptzhref/index.html">
						<font size="2">
								<font color="#006400">http://man.ddvip.com/web/JScriptzhref/index.html</font>
						</font>
				</a>
				<br />
				<a name="om40_ElementObjs">
						<font color="#000000" size="2">DHTML 参考手册 </font>
				</a>
				<font size="2">
						<font color="#000000">：</font>
				</font>
				<a href="http://www.phpx.com/man/dhtmlcn/">
						<font size="2">
								<font color="#006400">http://www.phpx.com/man/dhtmlcn/</font>
						</font>
				</a>
				<br />
				<br />
				<hr />
		</font>
<img src ="http://www.blogjava.net/passyt/aggbug/46717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-18 02:09 <a href="http://www.blogjava.net/passyt/archive/2006/05/18/46717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：2005年中国软件产业最大规模前100家企业名单</title><link>http://www.blogjava.net/passyt/archive/2006/05/14/46086.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sun, 14 May 2006 08:01:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/14/46086.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/46086.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/14/46086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/46086.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/46086.html</trackback:ping><description><![CDATA[ 序号              企业名称                               软件收入   
<p>  1    　　华为技术有限公司                                 847323<br />  2    　　中兴通讯股份有限公司                             660000<br />  3    　　海尔集团公司                                     551037<br />  4    　　海信集团有限公司                                 491265<br />  5    　　熊猫电子集团有限公司                             476706<br />  6    　　神州数码(中国)有限公司                           413100<br />  7    　　青岛朗讯科技通讯企业有限公司                     349966<br />  8    　　浙江浙大网新科技股份有限公司                     345415<br />  9    　　浪潮集团有限公司                                 196728<br />  10    　 东软集团有限公司                                 179710<br />  11    　 上海贝尔阿尔卡特股份有限公司                     147509<br />  12    　 大唐电信科技股份有限公司                         147141<br />  13    　 清华同方股份有限公司                             144312<br />  14    　 中国计算机软件与技术服务总公司                   140728<br />  15    　 山东中创软件工程股份有限公司                     138125<br />  16    　 南京联创科技股份有限公司                         126004<br />  17    　 中国民航信息网络股份有限公司                     114538<br />  18    　 上海宝信软件股份有限公司                         110748<br />  19    　 北京北大方正集团公司                             104541<br />  20    　 北京甲骨文软件系统有限公司                       103505<br />  21    　 烟台东方电子信息产业集团公司                     101118<br />  22    　 北京用友软件股份有限公司                         88700<br />  23    　 北京四方继保自动化有限公司                       79645<br />  24    　 福州福大自动化科技有限公司                       76679<br />  25    　 腾讯科技(深圳)有限公司                           72411<br />  26    　　广州网易计算机系统有限公司                      70709<br />  27    　　中国长城计算机集团公司                          70349<br />  28    　　新华控制技术(集团)有限公司                      69032<br />  29    　　中国银联股份有限公司                            67818<br />  30    　　南京南瑞集团公司                                67163<br />  31    　　哈尔滨亿阳信通股份公司                          63436<br />  32    　　思爱普(北京)软件系统有限公司                    62946<br />  33    　　深圳市腾讯计算机系统有限公司                    62398<br />  34    　　武汉邮电科学研究院                              56600<br />  35    　　朝华科技(集团)有限公司                          56465<br />  36    　　中国工商银行软件开发中心                        55103<br />  37    　　北京握奇数据系统有限公司                        54221<br />  38    　　金蝶软件(中国)有限公司                          51788<br />  39    　　沈阳东大自动化有限公司                          51326<br />  40    　　长春一汽启明信息技术公司                        50120<br />  41    　　太极计算机集团(北京)                            47609<br />  42    　　深圳市金证科技股份公司                          47513<br />  43    　　广州网易互动娱乐有限公司                        47036<br />  44    　　长江计算机(集团)公司                            47021<br />  45    　　云南南天电子信息产业股份公司                    46906<br />  46    　　杭州士兰微电子股份有限公司                      46213<br />  47    　　珠海炬力集成电路设计有限公司                    46006<br />  48    　　北京市和利时系统工程有限公司                    44579<br />  49    　　盛趣信息技术(上海)有限公司                      43047<br />  50    　　南京南瑞继保电气有限公司                        42911<br />  51    　　国电南瑞科技股份有限公司                        42300<br />  52    　　华北计算机系统工程研究所                        41576<br />  53    　　江苏南大苏富特软件股份有限公司                  40717<br />  54    　　深圳市迈瑞生物医疗电子有限公司                  40500<br />  55    　　云南电信网信实业集团有限公司                    39454<br />  56    　　杭州信雅达系统工程股份有限公司                  38936<br />  57      　华立集团有限公司(浙江)                          35540<br />  58    　　江苏东大金智软件股份公司                        35446<br />  59    　　新太科技股份有限公司                            33674<br />  60    　　北京华铁弘兴计算机工程有限责任公司              33297<br />  61    　　亚信科技(中国)有限公司                          32533<br />  62    　　珠洲时代集团公司                                32471<br />  63    　　北京东华和创数码科技有限公司                    32274<br />  64    　　广州华南资讯科技有限公司                        32227<br />  65    　　深圳市南凌科技发展有限公司                      31939<br />  66    　　浙江中控科技集团有限公司                        31906<br />  67    　　上海华讯网络系统有限公司                        31721<br />  68    　　创智集团                                        31500<br />  69    　　大连华信计算机技术有限公司                      30756<br />  70    　　沈阳新松机器人自动化股份有限公司                30450<br />  71    　　石化盈科信息技术有限责任公司                    29767<br />  72    　　沈阳西东控制技术有限公司                        29370<br />  73    　　北京华旗资讯数码科技有限公司                    29012<br />  74    　　福建星网锐捷通讯有限公司                        28265<br />  75    　　沈阳先锋计算机工程有限公司                      28209 <br />  76    　　威海北洋电气集团股份有限公司                    28000<br />  77    　　深圳市同洲电子股份有限公司                      27847<br />  78    　　广州海格通信有限公司                            26770<br />  79    　　京华网络有限公司                                26761<br />  80    　　电讯盈科(北京)有限公司                          26560<br />  81    　　南昌先锋软件股份有限公司                        26465<br />  82    　　江西捷德智能卡系统有限公司                      26455<br />  83    　　海湾安全技术股份有限公司                        26114<br />  84    　　昆明昆船物流信息产业有限公司                    26061<br />  85    　　山东三星电子有限公司                            26000<br />  86    　　杭州新中大软件股份公司                          25292<br />  87    　　中国大恒(集团)有限公司北京软件技术分公司        24917<br />  88    　　湖南计算机集团                                  24637<br />  89    　　上海西门子移动通信有限公司                      24221<br />  90    　　南望信息产业集团有限公司                        24175<br />  91    　　中程科技有限公司                                23942<br />  92    　　苏州新锐电子工业有限公司                        23772<br />  93    　　东信和平智能卡股份有限公司                      23537<br />  94    　　四川长虹电子集团有限公司                        23324<br />  95    　　赛贝斯软件(中国)公司                            23012<br />  96    　　福建新大陆电脑股份有限公司                      22800<br />  97    　　华迪计算机有限公司                              22125<br />  98    　　希姆通信技术(上海)有限公司                      22034<br />  99    　　北京中软国际信息技术有限公司                    21785<br />  100    　 泰豪软件股份有限公司                            21291 </p><img src ="http://www.blogjava.net/passyt/aggbug/46086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-14 16:01 <a href="http://www.blogjava.net/passyt/archive/2006/05/14/46086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转：开源协议相关</title><link>http://www.blogjava.net/passyt/archive/2006/05/14/46085.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sun, 14 May 2006 07:55:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/14/46085.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/46085.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/14/46085.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/46085.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/46085.html</trackback:ping><description><![CDATA[
		<div class="story">
				<h2>
						<a href="http://www.mozilla.org/NPL/MPL-1.0.html">Mozilla Public License </a>
				</h2>
				<p>MPL License，允许免费重发布、免费修改，但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益，，它要求基于这种软件得修改无偿贡献版权给该软件。这样，围绕该软件得所有代码得版权都集中在发起开发人得手中。但MPL是允许修改，无偿使用得。MPL软件对链接没有要求。 </p>
		</div>
		<div class="story">
				<p>BSD开源协议</p>
				<p>BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用，修改源代码，也可以将修改后的代码作为开源或者专有软件再发布。 当你发布使用了BSD协议的代码，或则以BSD协议代码为基础做二次开发自己的产品时，需要满足三个条件： <br />1． 如果再发布的产品中包含源代码，则在源代码中必须带有原来代码中的BSD协议。 <br />2． 如果再发布的只是二进制类库/软件，则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。 <br />3． 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。<br />BSD代码鼓励代码共享，但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码，也允许使用或在BSD代码上开发商业软件发布和销售，因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议，因为可以完全控制这些第三方的代码，在必要的时候可以修改或者二次开发。<br /></p>
		</div>
		<div class="story">
				<p>Apache Licence 2.0</p>
				<p>Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似，同样鼓励代码共享和尊重原作者的著作权，同样允许代码修改，再发布(作为开源或商业软件)。需要满足的条件： <br />1． 需要给代码的用户一份Apache Licence <br />2． 如果你修改了代码，需要再被修改的文件中说明。 <br />3． 在延伸的代码中（修改和有源代码衍生的代码中）需要带有原来代码中的协议，商标，专利声明和其他原来作者规定需要包含的说明。 <br />4． 如果再发布的产品中包含一个Notice文件，则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可，但不可以表现为对Apache Licence构成更改。 <br />Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。<br /></p>
		</div>
		<div class="story">
				<p>GPL</p>
				<p>GPL许可证是自由软件的应用最广泛的软件许可证，人们可以修改程式的一个或几个副本或程式的任何部分，以此形成基於这些程式的衍生作品。必须在修改过的档案中附有明显的说明：您修改了此一档案及任何修改的日期。 您必须让您发布或出版的作品，包括本程式的全部或一部分，或内含本程式的全部或部分所衍生的作品，允许第三方在此许可证条款下使用，并且不得因为此项授权行为而收费。 <br /></p>
		</div>
		<div class="story">
				<h2>
						<a href="http://opensource.org/licenses/lgpl-license.php">LGPL</a>
				</h2>
				<p>Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用，但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux，包括商业公司的linux和linux上各种各样的由个人，组织，以及商业软件公司开发的免费软件了。 <br />GPL协议的主要内容是只要在一个软件中使用(“使用”指类库引用，修改后的代码或者衍生代码)GPL协议的产品，则该软件产品必须也采用GPL协议，既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题，还可以享受免费的优势。 <br />由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议，对于使用GPL协议的开源代码，商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。 <br />其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似<br /></p>
		</div>
		<div class="story">
				<p>Public Domain </p>
				<p>公共域授权。将软件授权为公共域，这些软件包没有授权协议，任何人都可以随意使用它。<br /></p>
		</div>
		<div class="story">
				<p>Artistic许可</p>
				<p>使作者保持对进一步开发的控制。</p>
		</div>
<img src ="http://www.blogjava.net/passyt/aggbug/46085.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-14 15:55 <a href="http://www.blogjava.net/passyt/archive/2006/05/14/46085.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java下XML编程接口比较：DOM SAX JDOM JAXP</title><link>http://www.blogjava.net/passyt/archive/2006/05/08/45069.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Mon, 08 May 2006 11:19:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/08/45069.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/45069.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/08/45069.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/45069.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/45069.html</trackback:ping><description><![CDATA[
		<p>一、DOM  （文档对象模型）<br />       为  XML  文档的已解析版本定义了一组接口。解析器读入整个文档，然后构建一个驻留内存的树结构，然后代码就可以使用  DOM  接口来操作这个树结构。<br />       优点：整个文档树在内存中，便于操作；支持删除、修改、重新排列等多种功能；<br />       缺点：将整个文档调入内存（包括无用的节点），浪费时间和空间；<br />       使用场合：一旦解析了文档还需多次访问这些数据；硬件资源充足（内存、CPU）<br /><br />二、SAX<br />           为解决DOM的问题，出现了SAX。<br />       SAX  ，事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时，发送事件，程序员编写响应这些事件的代码，保存数据。<br />       优点：不用事先调入整个文档，占用资源少；<br />       SAX解析器代码比DOM解析器代码小，适于Applet，下载<br />       缺点：不是持久的；事件过后，若没保存数据，那么数据就丢了；<br />       无状态性；从事件中只能得到文本，但不知该文本属于哪个元素；<br />       使用场合：Applet;只需XML文档的少量内容，很少回头访问；机器内存少；<br /><br />三、JDOM  <br />             为减少DOM、SAX的编码量，出现了JDOM；<br />         优点：20-80原则，极大减少了代码量<br />         使用场合：要实现的功能简单，如解析、创建等Java程序<br />         但在底层，JDOM还是使用SAX（最常用）、DOM、Xanan<br /><br />四、JAPX<br />             为多个XML解析器提供了统一编程接口<br />         更换解析器，不用更改代码<br />         使用场合：若不用Jdom，一般建议使用JAPX，将代码与各种解析器的实现细节隔离。</p>
<img src ="http://www.blogjava.net/passyt/aggbug/45069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-08 19:19 <a href="http://www.blogjava.net/passyt/archive/2006/05/08/45069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAR  文件揭密</title><link>http://www.blogjava.net/passyt/archive/2006/05/08/44983.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Mon, 08 May 2006 04:57:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/08/44983.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/44983.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/08/44983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/44983.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/44983.html</trackback:ping><description><![CDATA[
		<p class="content">
				<font size="2">
						<font face="Georgia">大多数  Java  程序员都熟悉对  JAR  文件的基本操作。但是只有少数程序员了解  JAR  文件格式的强大功能。在本文中，作者探讨了  JAR  格式的许多功能和优势，包括打包、可执行的  JAR  文件、安全性和索引。<br />JAR  文件是什么？<br /><br /><br />JAR  文件格式以流行的  ZIP  文件格式为基础，用于将许多个文件聚集为一个文件。与  ZIP  文件不同的是，JAR  文件不仅用于压缩和发布，而且还用于部署和封装库、组件和插件程序，并可被像编译器和  JVM  这样的工具直接使用。在  JAR  中包含特殊的文件，如  manifests  和部署描述符，用来指示工具如何处理特定的  JAR。<br /><br />一个  JAR  文件可以用于：<br /><br />用于发布和使用类库  <br />作为应用程序和扩展的构建单元  <br />作为组件、applet  或者插件程序的部署单位  <br />用于打包与组件相关联的辅助资源  <br />JAR  文件格式提供了许多优势和功能，其中很多是传统的压缩格式如  ZIP  或者  TAR  所没有提供的。它们包括：<br /><br />安全性。  可以对  JAR  文件内容加上数字化签名。这样，能够识别签名的工具就可以有选择地为您授予软件安全特权，这是其他文件做不到的，它还可以检测代码是否被篡改过。<br /><br />减少下载时间。  如果一个  applet  捆绑到一个  JAR  文件中，那么浏览器就可以在一个  HTTP  事务中下载这个  applet  的类文件和相关的资源，而不是对每一个文件打开一个新连接。<br /><br />压缩。JAR  格式允许您压缩文件以提高存储效率。<br /><br />传输平台扩展。  Java  扩展框架(Java  Extensions  Framework)提供了向  Java  核心平台添加功能的方法，这些扩展是用  JAR  文件打包的(Java  3D  和  JavaMail  就是由  Sun  开发的扩展例子)。<br /><br />包密封。  存储在  JAR  文件中的包可以选择进行密封，以增强版本一致性和安全性。密封一个包意味着包中的所有类都必须在同一  JAR  文件中找到。<br /><br />包版本控制。  一个  JAR  文件可以包含有关它所包含的文件的数据，如厂商和版本信息。<br /><br />可移植性。  处理  JAR  文件的机制是  Java  平台核心  API  的标准部分。  <br />压缩的和未压缩的  JAR<br />jar  工具(有关细节参阅  jar  工具)在默认情况下压缩文件。未压缩的  JAR  文件一般可以比压缩过的  JAR  文件更快地装载，因为在装载过程中要解压缩文件，但是未压缩的文件在网络上的下载时间可能更长。<br /><br />META-INF  目录<br />大多数  JAR  文件包含一个  META-INF  目录，它用于存储包和扩展的配置数据，如安全性和版本信息。Java  2  平台识别并解释  META-INF  目录中的下述文件和目录，以便配置应用程序、扩展和类装载器：<br /><br />MANIFEST.MF。  这个  manifest  文件定义了与扩展和包相关的数据。<br /><br />INDEX.LIST。  这个文件由  jar  工具的新选项  -i  生成，它包含在应用程序或者扩展中定义的包的位置信息。它是  JarIndex  实现的一部分，并由类装载器用于加速类装载过程。<br /><br />xxx.SF。  这是  JAR  文件的签名文件。占位符  xxx  标识了签名者。<br /><br />xxx.DSA。  与签名文件相关联的签名程序块文件，它存储了用于签名  JAR  文件的公共签名。  <br />jar  工具<br />为了用  JAR  文件执行基本的任务，要使用作为Java  Development  Kit  的一部分提供的  Java  Archive  Tool  (jar  工具)。用  jar  命令调用  jar  工具。表  1  显示了一些常见的应用：<br /><br />表  1.  常见的  jar  工具用法  功能  命令  <br />用一个单独的文件创建一个  JAR  文件  jar  cf  jar-file  input-file...  <br />用一个目录创建一个  JAR  文件  jar  cf  jar-file  dir-name  <br />创建一个未压缩的  JAR  文件  jar  cf0  jar-file  dir-name  <br />更新一个  JAR  文件  jar  uf  jar-file  input-file...  <br />查看一个  JAR  文件的内容  jar  tf  jar-file  <br />提取一个  JAR  文件的内容  jar  xf  jar-file  <br />从一个  JAR  文件中提取特定的文件  jar  xf  jar-file  archived-file...  <br />运行一个打包为可执行  JAR  文件的应用程序  java  -jar  app.jar  <br /><br />可执行的  JAR<br />一个可执行的  jar  文件是一个自包含的  Java  应用程序，它存储在特别配置的JAR  文件中，可以由  JVM  直接执行它而无需事先提取文件或者设置类路径。要运行存储在非可执行的  JAR  中的应用程序，必须将它加入到您的类路径中，并用名字调用应用程序的主类。但是使用可执行的  JAR  文件，我们可以不用提取它或者知道主要入口点就可以运行一个应用程序。可执行  JAR  有助于方便发布和执行  Java  应用程序。<br /><br />创建可执行  JAR<br />创建一个可执行  JAR  很容易。首先将所有应用程序代码放到一个目录中。假设应用程序中的主类是  com.mycompany.myapp.Sample。您要创建一个包含应用程序代码的  JAR  文件并标识出主类。为此，在某个位置(不是在应用程序目录中)创建一个名为  manifest  的文件，并在其中加入以下一行：<br /><br />Main-Class:  com.mycompany.myapp.Sample<br /><br /><br /><br />然后，像这样创建  JAR  文件：<br /><br />jar  cmf  manifest  ExecutableJar.jar  application-dir<br /><br /><br /><br />所要做的就是这些了  --  现在可以用  java  -jar  执行这个  JAR  文件  ExecutableJar.jar。<br /><br />一个可执行的  JAR  必须通过  menifest  文件的头引用它所需要的所有其他从属  JAR。如果使用了  -jar  选项，那么环境变量  CLASSPATH  和在命令行中指定的所有类路径都被  JVM  所忽略。<br /><br />启动可执行  JAR<br />既然我们已经将自己的应用程序打包到了一个名为  ExecutableJar.jar  的可执行  JAR  中了，那么我们就可以用下面的命令直接从文件启动这个应用程序：<br /><br />java  -jar  ExecutableJar.jar<br /><br /><br /><br />包密封<br />密封  JAR  文件中的一个包意味着在这个包中定义的所有类都必须在同一个  JAR  文件中找到。这使包的作者可以增强打包类之间的版本一致性。密封还提供了防止代码篡改的手段。<br /><br />要密封包，需要在  JAR  的  manifest  文件中为包添加一个  Name  头，然后加上值为“true”的  Sealed  头。与可执行的  JAR  一样，可以在创建  JAR  时，通过指定一个具有适当头元素的  manifest  文件密封一个  JAR，如下所示：<br /><br />Name:  com/samplePackage/<br />Sealed:  true<br /><br /><br /><br />Name  头标识出包的相对路径名。它以一个“/”结束以与文件名区别。在  Name  头后面第一个空行之前的所有头都作用于在  Name  头中指定的文件或者包。在上述例子中，因为  Sealed  头出现在  Name  头后并且中间没有空行，所以  Sealed  头将被解释为只应用到包  com/samplePackage  上。<br /><br />如果试图从密封包所在的  JAR  文件以外的其他地方装载密封包中的一个类，那么  JVM  将抛出一个  SecurityException。<br /><br />扩展打包<br />扩展为  Java  平台增加了功能，在  JAR  文件格式中已经加入了扩展机制。扩展机制使得  JAR  文件可以通过  manifest  文件中的  Class-Path  头指定所需要的其他  JAR  文件。<br /><br />假设  extension1.jar  和  extension2.jar  是同一个目录中的两个  JAR  文件，extension1.jar  的  manifest  文件包含以下头：<br /><br />Class-Path:  extension2.jar<br /><br /><br /><br />这个头表明  extension2.jar  中的类是  extension1.jar  中的类的扩展类。extension1.jar  中的类可以调用  extension2.jar  中的类，并且不要求  extension2.jar  处在类路径中。<br /><br />在装载使用扩展机制的  JAR  时，JVM  会高效而自动地将在Class-Path  头中引用的  JAR  添加到类路径中。不过，扩展  JAR  路径被解释为相对路径，所以一般来说，扩展  JAR  必须存储在引用它的  JAR  所在的同一目录中。<br /><br />例如，假设类  ExtensionClient  引用了类  ExtensionDemo,它捆绑在一个名为  ExtensionClient.jar  的  JAR  文件中，而类  ExtensionDemo  则捆绑在  ExtensionDemo.jar  中。为了使  ExtensionDemo.jar  可以成为扩展，必须将  ExtensionDemo.jar  列在  ExtensionClient.jar  的  manifest  的  Class-Path  头中，如下所示：<br /><br />Manifest-Version:  1.0<br />Class-Path:  ExtensionDemo.jar<br /><br /><br /><br />在这个  manifest  中  Class-Path  头的值是没有指定路径的  ExtensionDemo.jar，表明  ExtensionDemo.jar  与  ExtensionClient  JAR  文件处在同一目录中。<br /><br />JAR  文件中的安全性<br />JAR  文件可以用  jarsigner  工具或者直接通过  java.security  API  签名。一个签名的  JAR  文件与原来的  JAR  文件完全相同，只是更新了它的  manifest，并在  META-INF  目录中增加了两个文件，一个签名文件和一个签名块文件。<br /><br />JAR  文件是用一个存储在  Keystore  数据库中的证书签名的。存储在  keystore  中的证书有密码保护，必须向  jarsigner  工具提供这个密码才能对  JAR  文件签名。<br /><br />图  1.  Keystore  数据库<br /><br />JAR  的每一位签名者都由在  JAR  文件的  META-INF  目录中的一个具有  .SF  扩展名的签名文件表示。这个文件的格式类似于  manifest  文件  --  一组  RFC-822  头。如下所示，它的组成包括一个主要部分，它包括了由签名者提供的信息、但是不特别针对任何特定的  JAR  文件项，还有一系列的单独的项，这些项也必须包含在  menifest  文件中。在验证一个签名的  JAR  时，将签名文件的摘要值与对  JAR  文件中的相应项计算的摘要值进行比较。<br /><br />清单  1.  签名  JAR  中的  Manifest  和  signature  文件<br />Contents  of  signature  file  META-INF/MANIFEST.MF<br /><br />Manifest-Version:  1.0<br />Created-By:  1.3.0  (Sun  Microsystems  Inc.)<br /><br />Name:  Sample.java<br />SHA1-Digest:  3+DdYW8INICtyG8ZarHlFxX0W6g=<br /><br />Name:  Sample.class<br />SHA1-Digest:  YJ5yQHBZBJ3SsTNcHJFqUkfWEmI=<br /><br />Contents  of  signature  file  META-INF/JAMES.SF<br /><br />Signature-Version:  1.0<br />SHA1-Digest-Manifest:  HBstZOJBuuTJ6QMIdB90T8sjaOM=<br />Created-By:  1.3.0  (Sun  Microsystems  Inc.)<br /><br />Name:  Sample.java<br />SHA1-Digest:  qipMDrkurQcKwnyIlI3Jtrnia8Q=<br /><br />Name:  Sample.class<br />SHA1-Digest:  pT2DYby8QXPcCzv2NwpLxd8p4G4=<br /><br /><br /><br />数字签名<br />一个数字签名是.SF  签名文件的已签名版本。数字签名文件是二进制文件，并且与  .SF  文件有相同的文件名，但是扩展名不同。根据数字签名的类型  --  RSA、DSA  或者  PGP  --  以及用于签名  JAR  的证书类型而有不同的扩展名。<br /><br />Keystore<br />要签名一个  JAR  文件，必须首先有一个私钥。私钥及其相关的公钥证书存储在名为  keystores  的、有密码保护的数据库中。JDK  包含创建和修改  keystores  的工具。keystore  中的每一个密钥都可以用一个别名标识，它通常是拥有这个密钥的签名者的名字。<br /><br />所有  keystore  项(密钥和信任的证书项)都是用唯一别名访问的。别名是在用  keytool  -genkey  命令生成密钥对(公钥和私钥)并在  keystore  中添加项时指定的。之后的  keytool  命令必须使用同样的别名引用这一项。<br /><br />例如，要用别名“james”生成一个新的公钥/私钥对并将公钥包装到自签名的证书中，要使用下述命令：<br /><br />keytool  -genkey  -alias  james  -keypass  jamespass  <br />-validity  80  -keystore  jamesKeyStore  <br />-storepass  jamesKeyStorePass<br /><br /><br /><br />这个命令序列指定了一个初始密码“jamespass”，后续的命令在访问  keystore  “jamesKeyStore”中与别名“james”相关联的私钥时，就需要这个密码。如果  keystore“jamesKeyStore”不存在，则  keytool  会自动创建它。<br /><br />jarsigner  工具<br />jarsigner  工具使用  keystore  生成或者验证  JAR  文件的数字签名。<br /><br />假设像上述例子那样创建了  keystore  “jamesKeyStore”，并且它包含一个别名为“james”的密钥，可以用下面的命令签名一个  JAR  文件：<br /><br />jarsigner  -keystore  jamesKeyStore  -storepass  jamesKeyStorePass  <br />-keypass  jamespass  -signedjar  SSample.jar  Sample.jar  james<br /><br /><br /><br />这个命令用密码“jamesKeyStorePass”从名为“jamesKeyStore”的  keystore  中提出别名为“james”、密码为“jamespass”的密钥，并对  Sample.jar  文件签名、创建一个签名的  JAR  --  SSample.jar。<br /><br />jarsigner  工具还可以验证一个签名的  JAR  文件，这种操作比签名  JAR  文件要简单得多，只需执行以下命令：<br /><br />jarsigner  -verify  SSample.jar<br /><br /><br /><br />如果签名的  JAR  文件没有被篡改过，那么  jarsigner  工具就会告诉您  JAR  通过验证了。否则，它会抛出一个  SecurityException，  表明哪些文件没有通过验证。<br /><br />还可以用  java.util.jar  和  java.security  API  以编程方式签名  JAR(有关细节参阅参考资料)。也可以使用像  Netscape  Object  Signing  Tool  这样的工具。<br /><br />JAR  索引<br />如果一个应用程序或者  applet  捆绑到多个  JAR  文件中，那么类装载器就使用一个简单的线性搜索算法搜索类路径中的每一个元素，这使类装载器可能要下载并打开许多个  JAR  文件，直到找到所要的类或者资源。如果类装载器试图寻找一个不存在的资源，那么在应用程序或者  applet  中的所有  JAR  文件都会下载。对于大型的网络应用程序和  applet，这会导致启动缓慢、响应迟缓并浪费带宽。<br /><br />从  JDK  1.3  以后，JAR  文件格式开始支持索引以优化网络应用程序中类的搜索过程，特别是  applet。JarIndex  机制收集在  applet  或者应用程序中定义的所有  JAR  文件的内容，并将这些信息存储到第一个  JAR  文件中的索引文件中。下载了第一个  JAR  文件后，applet  类装载器将使用收集的内容信息高效地装载  JAR  文件。这个目录信息存储在根  JAR  文件的  META-INF  目录中的一个名为  INDEX.LIST  的简单文本文件中。<br /><br />创建一个  JarIndex<br />可以通过在  jar  命令中指定  -i  选项创建一个  JarIndex。假设我们的目录结构如下图所示：<br /><br />图  2.  JarIndex<br /><br />您将使用下述命令为  JarIndex_Main.jar、JarIndex_test.jar  和  JarIndex_test1.jar  创建一个索引文件：<br /><br />jar  -i  JarIndex_Main.jar  JarIndex_test.jar  SampleDir/JarIndex_test1.jar  <br /><br /><br /><br />INDEX.LIST  文件的格式很简单，包含每个已索引的  JAR  文件中包含的包或者类的名字，如清单  2  所示：<br /><br />清单  2.  JarIndex  INDEX.LIST  文件示例<br /><br />JarIndex-Version:  1.0<br /><br />JarIndex_Main.jar<br />sp<br /><br />JarIndex_test.jar<br />Sample<br /><br />SampleDir/JarIndex_test1.jar<br />org<br />org/apache<br />org/apache/xerces<br />org/apache/xerces/framework<br />org/apache/xerces/framework/xml4j<br /><br /><br /><br />结束语  <br />JAR  格式远远超出了一种压缩格式，它有许多可以改进效率、安全性和组织  Java  应用程序的功能。因为这些功能已经建立在核心平台  --  包括编译器和类装载器  --  中了，所以开发人员可以利用  JAR  文件格式的能力简化和改进开发和部署过程。.</font>
				</font>
		</p>
<img src ="http://www.blogjava.net/passyt/aggbug/44983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-08 12:57 <a href="http://www.blogjava.net/passyt/archive/2006/05/08/44983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：jdbc连接各种数据库方式列表 </title><link>http://www.blogjava.net/passyt/archive/2006/05/06/44722.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sat, 06 May 2006 03:51:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/06/44722.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/44722.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/06/44722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/44722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/44722.html</trackback:ping><description><![CDATA[下面罗列了各种数据库使用JDBC连接的方式，可以作为一个手册使用。 <br /><br />　　1、Oracle8/8i/9i数据库（thin模式） <br /><br /><font style="background-color: rgb(255, 255, 255);" color="#008000">Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <br />String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID <br />String user="test"; <br />String password="test"; <br />Connection conn= DriverManager.getConnection(url,user,password);  <br /></font><br />　　2、DB2数据库 <br /><br /><font color="#008000">Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); <br />String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名 <br />String user="admin"; <br />String password=""; <br />Connection conn= DriverManager.getConnection(url,user,password);  <br /></font><br />　　3、Sql Server7.0/2000数据库 <br /><br /><font color="#008000">Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); <br />String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; <br />//mydb为数据库 <br />String user="sa"; <br />String password=""; <br />Connection conn= DriverManager.getConnection(url,user,password);  <br /></font><br />　　4、Sybase数据库 <br /><br /><font color="#008000">Class.forName("com.sybase.jdbc.SybDriver").newInstance(); <br />String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB为你的数据库名 <br />Properties sysProps = System.getProperties(); <br />SysProps.put("user","userid"); <br />SysProps.put("password","user_password"); <br />Connection conn= DriverManager.getConnection(url, SysProps);  <br /></font><br />　　5、Informix数据库 <br /><br /><font color="#008000">Class.forName("com.informix.jdbc.IfxDriver").newInstance(); <br />String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; <br />user=testuser;password=testpassword"; //myDB为数据库名 <br />Connection conn= DriverManager.getConnection(url);  <br /></font><br />　　6、MySQL数据库 <br /><br /><font color="#008000">Class.forName("org.gjt.mm.mysql.Driver").newInstance(); //或者Class.forName("com.mysql.jdbc.Driver");<br />String url ="jdbc:mysql://localhost/myDB?user=soft&amp;password=soft1234&amp;useUnicode=true&amp;characterEncoding=8859_1" <br />//myDB为数据库名 <br />Connection conn= DriverManager.getConnection(url);  <br /></font><br />　　7、PostgreSQL数据库 <br /><br /><font color="#008000">Class.forName("org.postgresql.Driver").newInstance(); <br />String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库名 <br />String user="myuser"; <br />String password="mypassword"; <br />Connection conn= DriverManager.getConnection(url,user,password);</font>  <br /><br />　　8、access数据库直连用ODBC的<br /><br /><font color="#008000">Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;<br />String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");<br />Connection conn = DriverManager.getConnection(url,"","");<br />Statement stmtNew=conn.createStatement() ; <br /></font><img src ="http://www.blogjava.net/passyt/aggbug/44722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-06 11:51 <a href="http://www.blogjava.net/passyt/archive/2006/05/06/44722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：感受Web 2.0 </title><link>http://www.blogjava.net/passyt/archive/2006/05/05/44642.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Fri, 05 May 2006 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/05/05/44642.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/44642.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/05/05/44642.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/44642.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/44642.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一时间，										Web2.0								如星星之火一样在互联网上燎原起来。各大网站都在热论这这一新兴的概念，其中又有很多推出了所谓的										Web2.0								的网站和服务。那么究竟										Web2.0								是什么，很多见过，听过										Web2.0								...&nbsp;&nbsp;<a href='http://www.blogjava.net/passyt/archive/2006/05/05/44642.html'>阅读全文</a><img src ="http://www.blogjava.net/passyt/aggbug/44642.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-05-05 15:03 <a href="http://www.blogjava.net/passyt/archive/2006/05/05/44642.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Unicode 汉字内码表</title><link>http://www.blogjava.net/passyt/archive/2006/04/30/44110.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sun, 30 Apr 2006 00:16:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/30/44110.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/44110.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/30/44110.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/44110.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/44110.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 啊:21834 阿:38463 埃:22467 挨:25384 哎:21710 唉:21769 哀:21696 皑:30353 癌:30284 蔼:34108  矮:30702 艾:33406 碍:30861 爱:29233 隘:38552 鞍:38797 氨:27688 安:23433 俺:20474 按:25353 暗:26263 岸:23736 胺:33018 案:26696 肮:32942...&nbsp;&nbsp;<a href='http://www.blogjava.net/passyt/archive/2006/04/30/44110.html'>阅读全文</a><img src ="http://www.blogjava.net/passyt/aggbug/44110.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-30 08:16 <a href="http://www.blogjava.net/passyt/archive/2006/04/30/44110.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载:Unicode 汉字与GB内码的转换</title><link>http://www.blogjava.net/passyt/archive/2006/04/30/44109.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sun, 30 Apr 2006 00:15:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/30/44109.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/44109.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/30/44109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/44109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/44109.html</trackback:ping><description><![CDATA[使用时先将前面的码表存成文件,例如table.txt <br />创建一个GBUnicode实例,new GBUnicode("table.txt") <br />以后调用GB2Uni和Uni2GB作内码转换.注意GB内码是用两个字节表示的. <br /> <br />import java.io.*; <br />import java.util.Hashtable; <br /> <br />class GBUnicode{ <br />        byte high[]=new byte[6763],low[]=new byte[6763]; <br />        char unichar[]=new char[6763]; <br />        Hashtable UniGB; <br /> <br />        public GBUnicode(String table_file)throws IOException <br />        { <br />                //BufferedInputStream tables=new BufferedInputStream (new FileInputStream(table_file)); <br />                DataInputStream tables=new DataInputStream (new FileInputStream(table_file)); <br />                int i,n=0; <br />                byte b,bl,bh,num[]=new byte[20]; <br /> <br />                UniGB=new Hashtable(7000,1); <br />                while (n&lt;6763 ){ <br />                        do{ <br />                                bh=(byte)tables.read(); <br />                        }while ((char)bh&lt;=' '); //find first non-blank char <br />                        bl=(byte)tables.read(); <br />                        high[n]=bh; <br />                        low[n]=bl; <br />                        do{ <br />                                b=(byte)tables.read(); <br />                        }while (b!=(byte)':'); //find ':' <br />                        do{ <br />                                b=(byte)tables.read(); <br />                        }while ((char)b&lt;=' '); //find next non-blank char to read as number <br />                        i=0; <br />                        while ((char)b&gt;='0' &amp;&amp; (char)b&lt;='9'){ <br />                                num[i++]=b; <br />                                b=(byte)tables.read(); <br />                        } <br />                        unichar[n]=(char)Integer.parseInt(new String(num,0,0,i)); <br />                        if (UniGB.get(new Character(unichar[n]))!= null) <br />                                System.out.println("Duplicated : "+unichar[n]); <br />                        UniGB.put(new Character(unichar[n]),new Integer(n)); <br />                        n=n+1; <br />                } <br />                tables.close(); <br />        } <br /> <br />         <br />        private int getGBindex(byte high,byte low){ <br />                int i,j; <br />                i=high-(byte)0xb0; <br />                j=low-(byte)0xa1; <br />                if (i &lt;39) {// L1 Chinese <br />                        if (j&lt;0 || j&gt;94) <br />                                return -1; <br />                        return (i*94+j); <br />                } <br />                else if (i==39) {//one of the last 89 L1 Chinese <br />                        if (j&lt;0 || j&gt;89) <br />                                return -1; <br />                        return (i*94+j); <br />                } <br />                else {//L2 Chinese <br />                        if (j&lt;0 || j&gt;94) <br />                                return -1; <br />                        return (i*94+j-5); <br />                } <br />        } <br /> <br />        public byte[] Uni2GB(char unicode) { <br /> <br />                Integer index=(Integer)UniGB.get(new Character(unicode)); <br />                if (index==null) <br />                        return null; <br />                byte ch[]=new byte[2]; <br />                ch[0]=high[index.intValue()]; <br />                ch[1]=low[index.intValue()]; <br />                return ch; <br />        } <br /> <br />        public char GB2Uni(byte high, byte low) { <br />                int index=getGBindex(high,low); <br />                if (index ==-1) //not GB Chinese <br />                        return 0; <br />                return(unichar[index]); <br />        } <br />} <br />原文参看:http://www.linuxforum.net/books/smth/Java.AIX/00000028/00000006.htm<img src ="http://www.blogjava.net/passyt/aggbug/44109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-30 08:15 <a href="http://www.blogjava.net/passyt/archive/2006/04/30/44109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：JDBC3.0研究报告(节选)</title><link>http://www.blogjava.net/passyt/archive/2006/04/24/42779.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Mon, 24 Apr 2006 02:07:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/24/42779.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/42779.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/24/42779.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/42779.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/42779.html</trackback:ping><description><![CDATA[
		<h3>数据库连接池的基本原理</h3>传统的数据库连接方式（指通过DriverManager和基本实现DataSource进行连接）中，一个数据库连接对象均对应一个物理数据库连接，数据库连接的建立以及关闭对系统而言是耗费系统资源的操作，在多层结构的应用程序环境中这种耗费资源的动作对系统的性能影响尤为明显。 <br /><br />在多层结构的应用程序中通过连接池（connection pooling）技术可以使系统的性能明显得到提到，连接池意味着当应用程序需要调用一个数据库连接的时，数据库相关的接口通过返回一个通过重用数据库连接来代替重新创建一个数据库连接。通过这种方式，应用程序可以减少对数据库连接操作，尤其在多层环境中多个客户端可以通过共享少量的物理数据库连接来满足系统需求。通过连接池技术Java应用程序不仅可以提高系统性能同时也为系统提高了可测量性。 <br /><br />数据库连接池是运行在后台的而且应用程序的编码没有任何的影响。此中状况存在的前提是应用程序必须通过DataSource对象（一个实现javax.sql.DataSource接口的实例）的方式代替原有通过DriverManager类来获得数据库连接的方式。一个实现javax.sql.DataSource接口的类可以支持也可以不支持数据库连接池，但是两者获得数据库连接的代码基本是相同的。 <br /><br />代码如下： <br /><br />一个DataSource对象通常注册在JNDI命名服务上，应用程序可以通过标准的方式获得到注册在JNDI服务上的DataSource对象。 <br /><br />Context ctx = new InitialContext(); <br />DataSource ds = (DataSource) ctx.lookup("jdbc/openbase"); <br /><br />如果当前DataSource不支持数据库连接池，应用程序将获得一个和物理数据库连接对应的Connection对象。而如果当前的DataSource对象支持数据库连接池，应用程序自动获得重用的数据库连接而不用创建新的数据库连接。重用的数据库连接和新建立连接的数据库连接使用上没有任何不同。应用程序可以通过重用的连接正常的访问数据库，进行访问数据的操作，完成操作后应显式的调用close()关闭数据库连接。 <br /><br />Connection con = ds.getConnection("User", "Pwd"); <br />相关数据库的操作； <br />con.close(); <br /><br />当关闭数据连接后，当前使用的数据库连接将不会被物理关闭，而是放回到数据库连接池中进行重用。 <br /><br /><h3>JDBC3.0规范中数据库连接池框架</h3>JDBC3.0规范中通过提供了一个支持数据库连接池的框架，这个框架仅仅规定了如何支持连接池的实现，而连接池的具体实现JDBC 3.0规范并没有做相关的规定。通过这个框架可以让不同角色的开发人员共同实现数据库连接池。 <br /><br />通过JDBC3.0规范可以知道具体数据库连接池的实现可以分为JDBC Driver级和Application Server级。在JDBC Driver级的实现中任何相关的工作均由特定数据库厂商的JDBC Drvier的开发人员来具体实现，即JDBC Driver既需要提供对数据库连接池的支持同时也必须对数据库连接池进行具体实现。而在Application Server级中数据库连接池的实现中特定数据库厂商的JDBC Driver开发人员和Application Server开发人员来共同实现数据库连接池的实现（但是现在大多数Application Server厂商实现的连接池的机制和规范中提到有差异），其中特定数据库厂商的JDBC Driver提供数据库连接池的支持而特定的Application Server厂商提供数据库连接池的具体实现。 <br /><br />JDBC3.0规范规定了如下的类和接口来支持数据库连接池的实现。 <br /><br />javax.sql.ConnectionEvent <br />javax.sql.ConnectionPoolDataSource <br />javax.sql.PooledConnection <br />javax.sql.ConnectionEventListener <br /><br />其中除javax.sql.ConnectionEvent是类，其它的均为接口。 <br /><br /><center><img src="http://www.huihoo.org/j2ee/jdbc3_1.jpg" /><br />JDBC3.0连接池框架的关系图 </center><br /><br />通过此图可以大概的了解相关接口在一个典型的三层环境中应用程序的位置。 <br /><br />数据库连接池实现层次中，由特定数据库厂商的JDBC Driver开发人员提供连接池支持，而特定Application Server提供连接池实现的情况比较复杂，其它的实现层次均可视为其简化情况的一种。下面将针对这种情况进行说明。 <br /><br />在这个框架主要有两个用户角色存在，它们分别是： <br /><br />特定数据库厂商的JDBC Driver开发人员，之后将简称为Driver Vendor <br />特定Application Server中连接池开发人员，之后将简称为Pooling Vendor <br /><br /><br /><center><img src="http://www.huihoo.org/j2ee/jdbc3_2.gif" /><br />JDBC3.0规范中在上述情况下各个接口和类之间的UML图 </center><br />下面对几个关键模块进行详细的说明： <br /><br /><b>Driver Vendor DataSource:</b><br />Driver Vendor必须提供一个ConnectionPoolDataSource 接口的具体实现，通过这个接口Pooling Vendor可以得到一个PooledConnection对象，从而使第三方实现的连接池可以使用特定数据库厂商得到JDBC Driver产生的数据库连接。在这里ConnectionPoolDataSource接口扮演的角色可以视为产生PooledConnection 对象的工厂。 <br /><br /><b>Driver Vendor PooledConnection:</b><br />Driver Vendor必须提供标准PooledConnection 接口实现的类，这个接口允许Pooling Vendor在JDBC Driver提供连接池支持的基础上实现连接池。一个具体PooledConnection对象代表了一个物理的数据库连接；由PooledConnection对象创建Connection对象仅仅只是一个指向PooledConnetion对象的句柄。在JDBC 3.0连接池实现框架中PooledConnection对象扮演的角色可以视为产生Connection对象的工厂。 <br /><br /><b>Pooling Vendor DataSource:</b><br />Pooling Vendor必须实现DataSource接口，这个接口是和连接池实现模块进行交互的入口点。ConnectionPoolDataSource根据需要创建PooledConnection对象。 <br /><br /><b>Pooling Vendor Connection Cache:</b><br />此模块是Pooling Vendor对连接池的具体实现。JDBC 3.0 规范没有规定在DataSource对象和数据库连接池实现之间的需要实现的接口，所以它们之间的交互由Pooling Vendor自己定义。一般而言，一个数据库连接池的具体实现包含了一个或若干个具体的类，但是在连接池实现模块中必须包含一个类实现标准ConnectionEventListener接口。当一个PooledConnectiond对象被关闭或者出现异常的时候，PooledConnection对象将会向ConnectionEventListener接口发送ConnectionEvent对象，连接池实现模块将会根据返回的ConnectionEvent对象对PooledConnection进行关闭或者重用操作。 <br /><br /><b>ConnectionEvent:</b><br />实现连接池时，当应用程序调用Connection.close()试图去关闭数据库连接时，这时需要有一个通告给连接池实现模块，通告对当前的数据库物理连接（PooledConnection 对象）进行重用。为了使连接池实现模块能得到这种"通告"，连接池实现模块必须实现ConnectionEventListener接口，而且同时需要注册成为PooledConnection对象的监听者。连接池实现模块通过PooledConnection.addConnectionEventListener()方法注册自己成为一个监听者。 <br /><br /><h3>在典型三层环境中具体调用流程：</h3><p>当应用程序通过调用DataSource.getConnection()得到一个数据库连接。 <br /><br />Pooling Vendor实现的DataSource对象在连接池中进行查找看当前是否有有效的PooledConnection对象，如果连接池中有可用的PooledConnection，则进行检查，如果当前的PooledConnection可用则使用。 <br /><br />如果如果连接池中没有可用的PooledConnection对象，或者当前的PooledConnection对象不正确，那么Pooling Vendor调用ConnectionPoolDataSource.getPooledConnection类创建一个新的PooledConnection对象，这时由Driver Vendor实现的ConnectionPoolDataSource将会创建一个满足要求新的PooledConnection对象，并将其返回给连接池实现模块进行管理。 <br /><br />然后，Pooling Vendor会调用PooledConnection.getConnection()获得一个逻辑的Connection对象，这个逻辑的Connection对象将会象正常的Connection对象返回给应用程序。这个逻辑Connection对象实际上是连接池中PooledConnection对象的一个句柄，当连接池有效时，应用程序调用DataSource.getConnection()就会得到这个句柄。简而言之，应用程序此时使用的Connection对象仅仅是其创建者PooledConnection对象的句柄而已。 <br /><br />连接池实现模块调用PooledConnection.addConnectionEventListener()将自己注册成为一个PooledConnection对象的监听者，当数据库连接需要重用或者关闭的时候连接池实现模块可以得到通告。 <br /><br />当应用程序通过调用Connection.close()来关闭数据库连接，这时一个ConnectionEvent对象被创建并被返回到连接池实现模块，连接池实现模块接受到此通告后，将PooledConnection对象返回到池中进行重用。这些过程中其它角色都不能访问PooledConnection.close（）方法，能访问这个方法的只有Pooling Vendor，它们使用这个方法对连接池中的对象进行操作，通过PooledConnection.close()方法可以关闭物理数据库连接。</p><p>  原文参看：<a href="http://www.huihoo.org/j2ee/jdbc3.html">http://www.huihoo.org/j2ee/jdbc3.html</a></p><img src ="http://www.blogjava.net/passyt/aggbug/42779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-24 10:07 <a href="http://www.blogjava.net/passyt/archive/2006/04/24/42779.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：WebWork 2.2 Filter,Url Rewrite,Servlet规范</title><link>http://www.blogjava.net/passyt/archive/2006/04/23/42631.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sun, 23 Apr 2006 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/23/42631.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/42631.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/23/42631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/42631.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/42631.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">在WebWork 2.2中,默认已经使用Filter的方式来进行对action的处理,这样做固然带来了很多好处,但是也有很多弊端.</font>
		</p>
		<p>
				<font size="2">当然,事情总是不断进步的,我们就要扬长避短了.</font>
		</p>
		<p>
				<font size="2">使用Filter方式带来的优点有:</font>
		</p>
		<ul>
				<li>
						<font size="2">可以服务静态内容(当然后来webwork也提供了方式来避免服务静态内容,因为对于普通文件应用服务器一般不比普通web服务器性能好) </font>
				</li>
				<li>
						<font size="2">可以处理多种请求,当然目前也没有更多的请求处理 </font>
				</li>
		</ul>
		<p>
				<font size="2">缺点有:</font>
		</p>
		<ul>
				<li>
						<font size="2">在Servlet 2.3中,不能使用jsp:include或者ww:include包含action输出的结果了(当然可以使用ww:action) </font>
				</li>
				<li>
						<font size="2">一个请求如果发生了Forward,一般不会再经过Filter了(include同理,这是前面一条的原因) </font>
				</li>
				<li>
						<font size="2">由于Servlet和Filter的不同,还会有很多其他问题--不过目前还没有注意到 </font>
				</li>
		</ul>
		<p>
				<font size="2">首先我们来看看如何配置Filter</font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<h2>
				<font size="2">
						<span class="Title" twffan="done">配置WebWork的Filter</span>
				</font>
		</h2>
		<p>
				<font size="2">在最简单的情况下,webwork 2.2.的web.xml是这样的:</font>
		</p>
		<p>
				<font size="2">
				</font>
		</p>
		<table class="code" border="0" cellpadding="1" cellspacing="1" width="70%">
				<tbody>
						<tr>
								<td>
										<p>
												<font size="2">    &lt;filter&gt;<br />        &lt;filter-name&gt;webwork&lt;/filter-name&gt;<br />        &lt;filter-class&gt;com.opensymphony.webwork.dispatcher.FilterDispatcher&lt;/filter-class&gt;<br />    &lt;/filter&gt;</font>
										</p>
										<p>
												<font size="2">    &lt;filter-mapping&gt;<br />        &lt;filter-name&gt;webwork&lt;/filter-name&gt;<br />        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />    &lt;/filter-mapping&gt;</font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<font size="2">如果使用了SiteMesh,那么是这样配置的:</font>
		<p>
		</p>
		<table class="code" border="0" cellpadding="1" cellspacing="1" width="70%">
				<tbody>
						<tr>
								<td>
										<p>
												<font size="2"> &lt;filter&gt;<br />     &lt;filter-name&gt;webwork-cleanup&lt;/filter-name&gt;<br />     &lt;filter-class&gt;com.opensymphony.webwork.dispatcher.ActionContextCleanUp&lt;/filter-class&gt;<br /> &lt;/filter&gt;<br />    &lt;filter&gt;<br />        &lt;filter-name&gt;sitemesh&lt;/filter-name&gt;<br />        &lt;filter-class&gt;com.opensymphony.module.sitemesh.filter.PageFilter&lt;/filter-class&gt;<br />    &lt;/filter&gt;<br /> &lt;filter&gt;<br />     &lt;filter-name&gt;webwork&lt;/filter-name&gt;<br />     &lt;filter-class&gt;com.opensymphony.webwork.dispatcher.FilterDispatcher&lt;/filter-class&gt;<br /> &lt;/filter&gt;</font>
										</p>
										<p>
												<font size="2"> &lt;filter-mapping&gt;<br />     &lt;filter-name&gt;webwork-cleanup&lt;/filter-name&gt;<br />     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br /> &lt;/filter-mapping&gt;<br /> &lt;filter-mapping&gt;<br />     &lt;filter-name&gt;sitemesh&lt;/filter-name&gt;<br />     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br /> &lt;/filter-mapping&gt;<br /> &lt;filter-mapping&gt;<br />     &lt;filter-name&gt;webwork&lt;/filter-name&gt;<br />     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br /> &lt;/filter-mapping&gt;<br /><br /></font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<font size="2">注意中间是使用jsp时的配置,如果使用FreeMarker,要换成对应的PageFilter. (WebWork提供了FreeMarkerPageFilter和VelocityPageFilter)</font>
		<p> </p>
		<h2>
				<span class="Title" twffan="done">
						<font size="2">分析Servlet 规范</font>
				</span>
		</h2>
		<p>
				<font size="2">Filter在Servlet 2.3规范中出现,配置方式就和最简单的webwork的配置相同,在Servlet 2.4中,对mapping做了改进,可以设置Filter服务于何种请求.举例如下:</font>
		</p>
		<p>
				<font size="2">
				</font>
		</p>
		<table class="code" border="0" cellpadding="1" cellspacing="1" width="70%">
				<tbody>
						<tr>
								<td>
										<font size="2">    &lt;filter-mapping&gt;<br />        &lt;filter-name&gt;webwork&lt;/filter-name&gt;<br />        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />  &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;<br />  &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;<br />  &lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;<br />    &lt;/filter-mapping&gt;<br /></font>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<font size="2">也就是说,Filter通过配置可以服务FORWARD和INCLUDE(以及ERROR)方式的请求了,而在Servlet 2.3中,是没有规定的.而在Servlet 2.4中,如果没有设置dispatcher,默认情况下是仅服务REQUEST类型的请求. 我觉得在Servlet 2.3的情况下,Filter也应该仅服务于REQUEST请求.(在Tomcat 下,本人测试确实如此,其他环境没有测试)</font>
		</p>
		<p>
				<font size="2">通过上述分析,我们可以看到,如果应用服务器支持Servlet 2.4,通过设置我们的web.xml为2.4的格式,然后设置Filter的服务类型,则可以对FORWARD,INCLUDE,ERROR类型的请求进行服务. </font>
		</p>
		<p>
				<font size="2">通过Servlet 2.4规范我们可以避免一些使用Filter的缺点,当然如果设置不当,可能也会带来一些毛病:</font>
		</p>
		<ul>
				<li>
						<font size="2">如果sitemesh映射处理不好,可能一个页面被多次装饰,所以要注意装饰设置和Filter设置的合理搭配 </font>
				</li>
				<li>
						<font size="2">多次经过Filter,可能会造成混乱,以及性能问题 </font>
				</li>
		</ul>
		<h2>
				<span class="Title" twffan="done">
						<font size="2">
						</font>
				</span>
		</h2>
		<h2>
				<span class="Title" twffan="done">
						<font size="2">Include 一个Action</font>
				</span>
		</h2>
		<p>
				<font size="2">前面我们说过,升级到webwork 2.2后,文档上已经说使用ww:action的调用来替换ww:include和jsp:include对一个action的包含,当然我也是推荐ww:action来替换老的方式的. 但是这不等于说ww:include,jsp:include不能包含一个action了.</font>
		</p>
		<p>
				<font size="2">通过对filter-mapping的dispatcher的设置,可以完全使用包含action.</font>
		</p>
		<p>
				<font size="2">
				</font>
		</p>
		<table class="code" border="0" cellpadding="1" cellspacing="1" width="70%">
				<tbody>
						<tr>
								<td>
										<font size="2"> &lt;filter-mapping&gt;<br />     &lt;filter-name&gt;webwork&lt;/filter-name&gt;<br />     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />        &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;<br />        &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;<br />        &lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;<br /> &lt;/filter-mapping&gt;<br /></font>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<font size="2">注意如果有其他相关的Filter,也要进行类似配置,例如webwork-cleanup.</font>
		<p>
				<font color="#ff0000" size="2">警告:我们不推荐使用这种方式!</font>
		</p>
		<p>
				<font color="#ff0000" size="2">
				</font>
		</p>
		<p>
				<font color="#ff0000" size="2">
				</font>
		</p>
		<h2>
				<span class="Title" twffan="done">
						<font size="2">URL Rewrite Filter的使用</font>
				</span>
		</h2>
		<p>
				<font size="2">url rewrite filter是一个java编写的优秀的重写url引擎.用于在java应用中重写URL. 当然如果你有web服务器的重写权限(例如apache),最好使用web服务器的ReWrite引擎,它们的效率会高于Url Rewrite Filter.</font>
		</p>
		<p>
				<font size="2">在WebWork 2.1.7的时候,因为WebWork使用Servlet处理请求,所以不对Filter造成不良影响,在WebWork 2.1.7中使用的配置如下:</font>
		</p>
		<p>
				<font size="2">
				</font>
		</p>
		<table class="code" border="0" cellpadding="1" cellspacing="1" width="70%">
				<tbody>
						<tr>
								<td>
										<p>
												<font size="2">    &lt;filter&gt;<br />        &lt;filter-name&gt;UrlRewriteFilter&lt;/filter-name&gt;<br />        &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter&lt;/filter-class&gt;<br />        &lt;init-param&gt;<br />            &lt;param-name&gt;logLevel&lt;/param-name&gt;<br />            &lt;param-value&gt;WARN&lt;/param-value&gt;<br />        &lt;/init-param&gt;<br />    &lt;/filter&gt;</font>
										</p>
										<p>
												<font size="2">    &lt;filter&gt;<br />        &lt;filter-name&gt;sitemesh&lt;/filter-name&gt;<br />        &lt;filter-class&gt;com.opensymphony.module.sitemesh.filter.PageFilter&lt;/filter-class&gt;<br />    &lt;/filter&gt;</font>
										</p>
										<p>
												<br />
												<font size="2">    &lt;filter-mapping&gt;<br />        &lt;filter-name&gt;UrlRewriteFilter&lt;/filter-name&gt;<br />        &lt;url-pattern&gt;/someurl/*&lt;/url-pattern&gt;<br />    &lt;/filter-mapping&gt;</font>
										</p>
										<p>
												<font size="2">    &lt;filter-mapping&gt;<br />        &lt;filter-name&gt;sitemesh&lt;/filter-name&gt;<br />        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />    &lt;/filter-mapping&gt;</font>
										</p>
										<p>
												<br />
												<font size="2"> &lt;servlet&gt;<br />  &lt;servlet-name&gt;webwork&lt;/servlet-name&gt;<br />  &lt;servlet-class&gt;com.opensymphony.webwork.dispatcher.ServletDispatcher&lt;/servlet-class&gt;<br /> &lt;/servlet&gt;<br /> <br /> &lt;servlet-mapping&gt;<br />  &lt;servlet-name&gt;webwork&lt;/servlet-name&gt;<br />  &lt;url-pattern&gt;*.action&lt;/url-pattern&gt;<br /> &lt;/servlet-mapping&gt;<br /></font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<font size="2">而升级到webwork 2.2.2中时,由于webwork的配置改变了,对webwork的action的forward方式的重写就会无法生效了.  ---<font color="#ff0000"><strong>如果你的rewrite全部都是redirect,则无须修改</strong></font></font>
		</p>
		<p>
				<font size="2">(<font color="#ff0000">如果使用了forward重写方式,会发生404错误</font>)</font>
		</p>
		<p>
				<font size="2">在Servlet 2.3规范的应用服务器中,这可能是个无法解决的问题!(也许能通过修改某些程序的代码可以做到)</font>
		</p>
		<p>
				<font size="2">如果你的应用服务器支持Servlet 2.4,则可以按照上面的说明修改web.xml,就可以继续使用了. (但是要避免前面说的多次filter的问题)</font>
		</p>
		<p>
				<font size="2">配置示例如下:</font>
		</p>
		<p>
				<font size="2">
				</font>
		</p>
		<table class="code" border="0" cellpadding="1" cellspacing="1" width="70%">
				<tbody>
						<tr>
								<td>
										<p>
												<font size="2">&lt;web-app version="2.4" <br /> xmlns="</font>
												<a href="http://java.sun.com/xml/ns/j2ee">
														<font size="2">http://java.sun.com/xml/ns/j2ee</font>
												</a>
												<font size="2">" <br /> xmlns:xsi="</font>
												<a href="http://www.w3.org/2001/XMLSchema-instance">
														<font size="2">http://www.w3.org/2001/XMLSchema-instance</font>
												</a>
												<font size="2">" <br /> xsi:schemaLocation="</font>
												<a href="http://java.sun.com/xml/ns/j2ee">
														<font size="2">http://java.sun.com/xml/ns/j2ee</font>
												</a>
												<br />
												<font size="2"> </font>
												<a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
														<font size="2">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</font>
												</a>
												<font size="2">"&gt;</font>
										</p>
										<p>
												<font size="2">    &lt;filter&gt;<br />        &lt;filter-name&gt;UrlRewriteFilter&lt;/filter-name&gt;<br />        &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter&lt;/filter-class&gt;<br />        &lt;init-param&gt;<br />            &lt;param-name&gt;logLevel&lt;/param-name&gt;<br />            &lt;param-value&gt;WARN&lt;/param-value&gt;<br />        &lt;/init-param&gt;<br />    &lt;/filter&gt;</font>
										</p>
										<p>
												<font size="2"> &lt;filter&gt;<br />     &lt;filter-name&gt;webwork-cleanup&lt;/filter-name&gt;<br />     &lt;filter-class&gt;com.opensymphony.webwork.dispatcher.ActionContextCleanUp&lt;/filter-class&gt;<br /> &lt;/filter&gt;<br />    &lt;filter&gt;<br />        &lt;filter-name&gt;sitemesh&lt;/filter-name&gt;<br />        &lt;filter-class&gt;com.opensymphony.module.sitemesh.filter.PageFilter&lt;/filter-class&gt;<br />    &lt;/filter&gt;<br /> &lt;filter&gt;<br />     &lt;filter-name&gt;webwork&lt;/filter-name&gt;<br />     &lt;filter-class&gt;com.opensymphony.webwork.dispatcher.FilterDispatcher&lt;/filter-class&gt;<br /> &lt;/filter&gt;</font>
										</p>
										<p>
												<font size="2">    &lt;filter-mapping&gt;<br />        &lt;filter-name&gt;UrlRewriteFilter&lt;/filter-name&gt;<br />        &lt;url-pattern&gt;/srun/*&lt;/url-pattern&gt;<br />        &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;<br />        &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;<br />    &lt;/filter-mapping&gt;</font>
										</p>
										<p>
												<font size="2"> &lt;filter-mapping&gt;<br />     &lt;filter-name&gt;webwork-cleanup&lt;/filter-name&gt;<br />     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />        &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;<br />        &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;<br /> &lt;/filter-mapping&gt;<br /> &lt;filter-mapping&gt;<br />     &lt;filter-name&gt;sitemesh&lt;/filter-name&gt;<br />     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br /> &lt;/filter-mapping&gt;<br /> &lt;filter-mapping&gt;<br />     &lt;filter-name&gt;webwork&lt;/filter-name&gt;<br />     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />        &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;<br />        &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;<br /> &lt;/filter-mapping&gt;<br /></font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<font size="2">注意sitemesh的filter的配置,你的可能和此处不同,因为我要避免页面多次被装饰.当然可以通过sitemesh的配置文件,设置只装饰某个处理中的url即可. 也就是说,某种情况下,有可能你的sitemesh的filter-mapping中也要包括dispatcher的配置.</font>
		</p>
		<p>
				<font size="2">总之,要根据实际情况编写自己的web.xml.<br />原文参见：</font>
				<a href="http://www.jscud.com/srun/news/viewhtml/4_2006_4/188.htm">
						<font size="2">http://www.jscud.com/srun/news/viewhtml/4_2006_4/188.htm</font>
				</a>
		</p>
<img src ="http://www.blogjava.net/passyt/aggbug/42631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-23 12:16 <a href="http://www.blogjava.net/passyt/archive/2006/04/23/42631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>何谓wiki?</title><link>http://www.blogjava.net/passyt/archive/2006/04/19/41861.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Wed, 19 Apr 2006 03:54:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/19/41861.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/41861.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/19/41861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/41861.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/41861.html</trackback:ping><description><![CDATA[
		<h1>什么是<span style="COLOR: #cc0000"><font size="3">Wiki</font></span>？</h1>
		<blockquote>
				<p>
						<span style="COLOR: #cc0000">Wiki</span>一词来源于夏威夷语的“wee kee”，原本是“快点”的意思。在这里<span style="COLOR: #cc0000">Wiki</span>指的是一种网上共同协作的超文本系统,可由多人共同对网站内容进行维护和更新。我们可以通过网页浏览器对<span style="COLOR: #cc0000">Wiki</span>文本进行浏览、创建、更改，而且创建、更改、发布的代价远比HTML文本为小,您并不需要懂得HTLM代码，只要简单了解少量的<span style="COLOR: #cc0000">Wiki</span>的语法的约定，您就可以在系统中发布您的页面！与其它超文本系统相比，<span style="COLOR: #cc0000">Wiki</span>有使用方便及开放的特点，所以<span style="COLOR: #cc0000">Wiki</span>系统可以帮助我们在一个社群内共同收集、创作某领域的知识，发布大家都关心和感兴趣的话题。</p>
		</blockquote>
		<hr />
		<p>
		</p>
		<a name="A3">
		</a>
		<h1>
				<span style="COLOR: #cc0000">
						<font size="3">Wiki</font>
				</span>的起源</h1>
		<blockquote>
				<p>1995年沃德·坎宁安为了方便模式社群的交流建立了一个工具－波特兰模式知识库（Portland Pattern Repository）。在建立这个系统的过程中，Ward Cunningham创造了<span style="COLOR: #cc0000">Wiki</span>的概念和名称，并且实现了支持这些概念的服务系统。这个系统是最早的<span style="COLOR: #cc0000">Wiki</span>系统。从1996年至2000年间，波特兰模式知识库围绕着面向社群的协作式写作，不断发展出一些支持这种写作的辅助工具，从而使<span style="COLOR: #cc0000">Wiki</span>的概念不断得到丰富。同时<span style="COLOR: #cc0000">Wiki</span>的概念也得到了传播，出现了许多类似的网站和软件系统。</p>
				<p>
						<span style="COLOR: #cc0000">Wiki</span>的历史还不长，无论是<span style="COLOR: #cc0000">Wiki</span>概念自身，还是相关软件系统的特性，还都在热烈的讨论中；所以怎样的一个站点才能称得上是一个<span style="COLOR: #cc0000">Wiki</span>系统还是有争议的。与<span style="COLOR: #cc0000">Wiki</span>相关最近出现的技术还有blog，它们都降低了超文本写作和发布的难度。这两者都与内容管理系统关系紧密。</p>
		</blockquote>
		<hr />
		<p>
		</p>
		<a name="A4">
		</a>
		<h1>
				<span style="COLOR: #cc0000">
						<font size="3">Wiki</font>
				</span>的特点</h1>
		<a name="A5">
		</a>
		<h2>使用方便 </h2>
		<blockquote>
				<p>*维护快捷：快速创建、存取、更改超文本页面（这也是为什么叫作 "<span style="COLOR: #cc0000">wiki</span><span style="COLOR: #cc0000">wiki</span>" 的原因）。 </p>
				<p>*格式简单：用简单的格式标记来取代 HTML 的复杂格式标记。（类似所见即所得的风格） </p>
				<p>*链接方便：通过简单标记，直接以关键字名来建立链接（页面、外部连接、图像等）。 </p>
				<p>命名平易：关键字名就是页面名称，并且被置于一个单层、平直的名空间中。 </p>
				<p>
						<a name="A6">
						</a>
				</p>
				<h2>有组织</h2>
				<p>
				</p>
				<p>自组织的：同页面的内容一样，整个超文本的组织结构也是可以修改、演化的。 </p>
				<p>可汇聚的：系统内多个内容重复的页面可以被汇聚于其中的某个，相应的链接结构也随之改变。 </p>
				<p>
						<a name="A7">
						</a>
				</p>
				<h2>可增长</h2>
				<p>
				</p>
				<p>可增长：页面的链接目标可以尚未存在，通过点击链接，我们可以创建这些页面，从而使系统得到增长。 </p>
				<p>修订历史：记录页面的修订历史，页面的各个版本都可以被获取。 </p>
				<p>
						<a name="A8">
						</a>
				</p>
				<h2>开放性</h2>
				<p>
				</p>
				<p>开放的：社群的成员可以任意创建、修改、删除页面。 </p>
				<p>
						<a name="A9">
						</a>
				</p>
				<h2>可观察</h2>
				<p>
				</p>
				<p>可观察：系统内页面的变动可以被访问者观察到。 </p>
		</blockquote>
<img src ="http://www.blogjava.net/passyt/aggbug/41861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-19 11:54 <a href="http://www.blogjava.net/passyt/archive/2006/04/19/41861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：工作流管理系统概述 </title><link>http://www.blogjava.net/passyt/archive/2006/04/19/41849.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Wed, 19 Apr 2006 03:48:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/19/41849.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/41849.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/19/41849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/41849.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/41849.html</trackback:ping><description><![CDATA[
		<div class="postText">
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21.25pt; TEXT-INDENT: -21.25pt; LINE-HEIGHT: 150%; mso-outline-level: 1; mso-list: l1 level1 lfo1; tab-stops: list 21.25pt">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">一.<span style="FONT: 7pt 'Times New Roman'">  </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">概述</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%">
										<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21.25pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">企业在进行业务处理时，政府在进行公文审批时，都是以流程形式而进行的，在信息化的过程中，企业、政府也将这些业务处理、公文审批的过程信息化了，早期通常是通过程序硬编码的方式来处理这些业务、公文的流转，随着业务、公文的复杂的处理情况不断出现以及需求的不断变更，这种硬编码的方式显然已无法应对，这个时候工作流管理系统应运而生，掀起了一股工作流管理系统的热潮。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">那么到底工作流管理系统能够带来什么好处？工作流管理系统通过对业务、公文流转进行分析以及抽象，将不变和变化的部分进行划分，用户可轻松的通过可视化的工具对事项的流程、流程环节涉及的人员</span>
						<span lang="EN-US">(</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">角色</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、流程环节的表单、流程环节的操作进行修改，从而到达了应对不断变化的需求的目的，而工作流管理系统通常提供的流程监控、查询统计模块更是极大程度的为用户优化流程提供支持，以提高企业、政府的工作效率。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本文主要描述工作流管理系统通常的结构、参考模型以及通常使用的调度算法。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21.25pt; TEXT-INDENT: -21.25pt; LINE-HEIGHT: 150%; mso-outline-level: 1; mso-list: l1 level1 lfo1; tab-stops: list 21.25pt">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">二.<span style="FONT: 7pt 'Times New Roman'">  </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">构成</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21.25pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流管理系统，简称</span>
						<span lang="EN-US">WFMS</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，经过对业务、公文流转过程的分析以及抽象，工作流管理系统围绕业务交互逻辑、业务处理逻辑以及参与者三个问题进行解决，业务交互逻辑对应的为业务的流转过程，在工作流管理系统中对应的提出了工作流引擎、工作流设计器、流程操作来解决业务交互逻辑的问题，业务处理逻辑对应业务流转过程中的表单、文档等的处理，在工作流管理系统中对应的提出了表单设计器、与表单的集成来解决业务处理逻辑的问题，参与者对应到的为流转过程中环节对应的人或程序，在工作流管理系统中通过与应用程序的集成来解决参与者的问题。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21.25pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流管理系统为方便业务交互逻辑、业务处理逻辑以及参与者的修改，多数通过提供可视化的流程设计器以及表单设计器来实现，为实现工作流管理系统的扩展性，多数提供了一系列的</span>
						<span lang="EN-US">API</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21.25pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个完整的工作流管理系统通常由工作流引擎、工作流设计器、流程操作、工作流客户端程序、流程监控、表单设计器、与表单的集成以及与应用程序的集成八个部分组成。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">2.1.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流引擎</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流引擎作为工作流管理系统的核心部分，主要提供了对于工作流定义的解析以及流程流转的支持。工作流定义文件描述了业务的交互逻辑，工作流引擎通过解析此工作流定义文件按照业务的交互逻辑进行业务的流转，工作流引擎通常通过参考某种模型来进行设计，通过调度算法来进行流程的流转</span>
						<span lang="EN-US">(</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">流程的启动、终止、挂起、恢复等</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，通过各种环节调度算法</span>
						<span lang="EN-US">(SPLIT</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
						<span lang="EN-US">AND</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
						<span lang="EN-US">OR</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来实现对于环节的流转</span>
						<span lang="EN-US">(</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环节的合并、分叉、选择、条件性的选择等</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">2.2.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流设计器</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流设计器为可视化的流程设计工具，用户通过拖放等方式来绘制流程，并通过对于环节的配置来实现环节操作、环节表单、环节参与者的配置。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流设计器为用户以及开发商提供了快速绘制、修改流程的方式，工作流设计器的好坏决定到工作流管理系统的易用性。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">2.3.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">流程操作</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">流程操作指所支持的对于流程环节的操作，如启动流程、终止流程、挂起流程、直流、分流</span>
						<span lang="EN-US">(</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">单人办理</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、并流</span>
						<span lang="EN-US">(</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">多人同时办理</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、联审等，象这些流程操作都是可直接基于引擎所提供的环节调度算法来直接支持的，而在实际的需求中，通常需要自由的对于流程进行干涉，如取回、回退、跳转、追加、传阅、传阅办理等，而这些流程操作对于工作流引擎来说是不合理的，因此必须单独的去实现。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">流程操作支持的好坏直接决定到一个工作流管理系统的实用性。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">2.4.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流客户端程序</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流客户端程序为工作流系统的表现形式，通常使用</span>
						<span lang="EN-US">Web</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方式进行展现，通过提供待办列表、已办列表、执行流程操作、查看流程历史信息等来展现工作流系统的功能。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">2.5.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">流程监控</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">流程监控通过提供图形化的方式来对流程执行过程进行监控，包括流程运转状况，每个环节所耗费的时间等等，而通过这些可相应的进行流程的优化，以提高工作效率。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">2.6.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表单设计器</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表单设计器为可视化的表单设计工具，用户通过拖放的方式来绘制业务所需的表单，并可相应的进行表单数据的绑定。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表单设计器为客户以及开发商提供了快速修改表单的方法，表单设计器的易用与否以及功能的完善与否影响到工作流管理系统的易用性。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">2.7.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与表单的集成</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通常业务流转需要表单来表达实际的业务，因此需要与表单进行集成来实现业务意义，与表单的集成通常包括表单数据的自动获取、存储、修改，表单域的权限控制、流程相关数据的维护以及流程环节表单的绑定。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与表单的集成的好坏影响到工作流管理系统是否能提高开发效率。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">2.8.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与应用程序的集成</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过与应用程序的集成来完善工作流管理系统的业务意义，主要涉及到的是与权限系统以及组织机构的集成。流程环节需要相应的绑定不同的执行角色，而流程操作通常需要与权限系统、组织机构进行关联。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21.25pt; TEXT-INDENT: -21.25pt; LINE-HEIGHT: 150%; mso-outline-level: 1; mso-list: l1 level1 lfo1; tab-stops: list 21.25pt">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">三.<span style="FONT: 7pt 'Times New Roman'">  </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">参考模型</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21.25pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流系统通常通过参考一些标准的模型来进行设计，主要的有</span>
						<span lang="EN-US">WFMC</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
						<span lang="EN-US">OMG</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在这里主要介绍一下</span>
						<span lang="EN-US">WFMC</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">3.1.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">WFMC<o:p></o:p></span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; LINE-HEIGHT: 150%">
						<span lang="EN-US">WFMC</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是国际工作流管理联盟，它于</span>
						<span lang="EN-US">1993</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年成立，发布了一系列的工作流定义、软件接口的草案文本，是目前世界上公认的最具权威性的工作流标准制定机构，得到了广泛的支持和应用。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; LINE-HEIGHT: 150%">
						<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?>
						<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="25" month="10" year="2002">
								<span lang="EN-US">2002</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年</span>
								<span lang="EN-US">10</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">月</span>
								<span lang="EN-US">25</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">日</span>
						</st1:chsdate>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
						<span lang="EN-US">WFMC</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发布了基于</span>
						<span lang="EN-US">XML</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的流程定义语言</span>
						<span lang="EN-US">1.0</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版的最终文本（</span>
						<span lang="EN-US">Workflow Process Definition Interface----XML Process Definition Language  </span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文档编号：</span>
						<span lang="EN-US">WFMC-TC-1025</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">），以及此前发布的工作流应用软件接口规范</span>
						<span lang="EN-US">WFMC-TC-1009, WFMC-TC-1013</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等系列文件，构成了工作流定义及系统的设计标准。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为了实现不同工作流产品之间的互操作，</span>
						<span lang="EN-US">WfMC</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在工作流管理系统的相关术语、体系结构及应用编程接口等方面制定了一系列标准。工作流管理联盟给出的工作流定义是：工作流是指整个或部分经营过程在计算机支持下的全自动或半自动化。在实际情况中可以更广泛地把凡是由计算机软件系统（工作流管理系统）控制其执行的过程都称为工作流。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个工作流包括一组活动及它们的相互顺序关系，还包括过程及活动的启动和终止条件，以及对每个活动的描述。工作流管理系统指运行在一个或多个工作流引擎上用于定义、实现和管理工作流运行的一套软件系统，它与工作流执行者（人、应用）交互，推进工作流实例的执行，并监控工作流的运行状态。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; LINE-HEIGHT: 150%">
						<span lang="EN-US">WFMC</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">主要提出了五个接口与工作流执行服务一起共同组成了工作流系统：</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 48pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo2; tab-stops: list 48.0pt">
						<span lang="EN-US" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings">
								<span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口一</span>
						<span lang="EN-US">(</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流定义交换</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，用于在建模和定义工具与执行服务之间交换工作流定义。主要是数据交换格式和</span>
						<span lang="EN-US">API</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。数据交换通过</span>
						<span lang="EN-US">XPDL</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
						<span lang="EN-US">API</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过</span>
						<span lang="EN-US">WAPI</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 48pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo2; tab-stops: list 48.0pt">
						<span lang="EN-US" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings">
								<span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口二</span>
						<span lang="EN-US">(</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流客户端应用接口</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，用于工作流客户端应用访问工作流引擎和工作列表，通过</span>
						<span lang="EN-US">WAPI</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">完成。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 48pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo2; tab-stops: list 48.0pt">
						<span lang="EN-US" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings">
								<span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口三</span>
						<span lang="EN-US">(</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">被调用的应用接口</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，用于调用不同的应用系统。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 48pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo2; tab-stops: list 48.0pt">
						<span lang="EN-US" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings">
								<span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口四</span>
						<span lang="EN-US">(</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作流系统互操作接口</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，用于不同工作流系统之间的互操作。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 48pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo2; tab-stops: list 48.0pt">
						<span lang="EN-US" style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings">
								<span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口五</span>
						<span lang="EN-US">(</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系统管理和监控</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，用于系统管理应用访问工作流执行服务。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21.25pt; TEXT-INDENT: -21.25pt; LINE-HEIGHT: 150%; mso-outline-level: 1; mso-list: l1 level1 lfo1; tab-stops: list 21.25pt">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">四.<span style="FONT: 7pt 'Times New Roman'">  </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">核心调度算法</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 14pt; LINE-HEIGHT: 150%">
										<o:p>
										</o:p>
								</span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21.25pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通常流程引擎采用的核心调度算法主要有</span>
						<span lang="EN-US">FSM</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以及</span>
						<span lang="EN-US">PetriNet</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">两种，基于调度算法来完成流程的流转。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">4.1.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">FSM(</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有限状态机</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">)<o:p></o:p></span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; LINE-HEIGHT: 150%">
						<span lang="EN-US">FSM</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的定义为包含一组状态集（</span>
						<span lang="EN-US">states</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）、一个起始状态（</span>
						<span lang="EN-US">start state</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）、一组输入符号集（</span>
						<span lang="EN-US">alphabet</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）、一个映射输入符号和当前状态到下一状态的转换函数（</span>
						<span lang="EN-US">transition function</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）的计算模型。当输入符号串，模型随即进入起始状态。它要改变到新的状态，依赖于转换函数。在有限状态机中，会有有许多变量，例如，状态机有很多与动作（</span>
						<span lang="EN-US">actions</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）转换</span>
						<span lang="EN-US">(Mealy</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">机</span>
						<span lang="EN-US">)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或状态（摩尔机）关联的动作，多重起始状态，基于没有输入符号的转换，或者指定符号和状态（非定有限状态机）的多个转换，指派给接收状态（识别者）的一个或多个状态，等等。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">遵循</span>
						<span lang="EN-US">FSM</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">流程引擎通过状态的切换来完成流程的流转。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 1cm; TEXT-INDENT: -1cm; LINE-HEIGHT: 150%; mso-outline-level: 2; mso-list: l1 level2 lfo1; tab-stops: list 1.0cm">
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%; mso-fareast-font-family: 'Times New Roman'">
										<span style="mso-list: Ignore">4.2.<span style="FONT: 7pt 'Times New Roman'">       </span></span>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt; LINE-HEIGHT: 150%">PetriNet<o:p></o:p></span>
						</b>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">信息流的一个抽象的、形式的模型。指出一系统的静态和动态性质。</span>
						<span lang="EN-US">petrinet</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通常表示成图。图中有两类用弧彼此相连的结点（称为地点和变换）和指示其动态性能的标记（称为记号）。</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; LINE-HEIGHT: 150%">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">遵循</span>
						<span lang="EN-US">PetriNet</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">流程引擎通过令牌来决定流程的流转。<br /><br />原文查看：<a href="/BlueDavy/archive/2005/07/21/8150.aspx">http://www.blogjava.net/BlueDavy/archive/2005/07/21/8150.aspx</a></span>
				</p>
		</div>
<img src ="http://www.blogjava.net/passyt/aggbug/41849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-19 11:48 <a href="http://www.blogjava.net/passyt/archive/2006/04/19/41849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：JDBC连接数据库经验技巧集萃 </title><link>http://www.blogjava.net/passyt/archive/2006/04/19/41845.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Wed, 19 Apr 2006 03:37:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/19/41845.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/41845.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/19/41845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/41845.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/41845.html</trackback:ping><description><![CDATA[Java数据库连接（JDBC）由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API，使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同，所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接方式。<br /><br />　　<b>一、连接各种数据库方式速查表</b><br /><br />　　下面罗列了各种数据库使用JDBC连接的方式，可以作为一个手册使用。 <br /><br />　　1、Oracle8/8i/9i数据库（thin模式） <br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <br />String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID <br />String user="test"; <br />String password="test"; <br />Connection conn= DriverManager.getConnection(url,user,password); </td></tr></tbody></table><br />　　2、DB2数据库 <br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); <br />String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名 <br />String user="admin"; <br />String password=""; <br />Connection conn= DriverManager.getConnection(url,user,password); </td></tr></tbody></table><br />　　3、Sql Server7.0/2000数据库 <br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); <br />String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; <br />//mydb为数据库 <br />String user="sa"; <br />String password=""; <br />Connection conn= DriverManager.getConnection(url,user,password); </td></tr></tbody></table><br />　　4、Sybase数据库 <br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>Class.forName("com.sybase.jdbc.SybDriver").newInstance(); <br />String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB为你的数据库名 <br />Properties sysProps = System.getProperties(); <br />SysProps.put("user","userid"); <br />SysProps.put("password","user_password"); <br />Connection conn= DriverManager.getConnection(url, SysProps); </td></tr></tbody></table><br />　　5、Informix数据库 <br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>Class.forName("com.informix.jdbc.IfxDriver").newInstance(); <br />String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; <br />user=testuser;password=testpassword"; //myDB为数据库名 <br />Connection conn= DriverManager.getConnection(url); </td></tr></tbody></table><br />　　6、MySQL数据库 <br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>Class.forName("org.gjt.mm.mysql.Driver").newInstance(); <br />String url ="jdbc:mysql://localhost/myDB?user=soft&amp;password=soft1234&amp;useUnicode=true&amp;characterEncoding=8859_1" <br />//myDB为数据库名 <br />Connection conn= DriverManager.getConnection(url); </td></tr></tbody></table><br />　　7、PostgreSQL数据库 <br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>Class.forName("org.postgresql.Driver").newInstance(); <br />String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库名 <br />String user="myuser"; <br />String password="mypassword"; <br />Connection conn= DriverManager.getConnection(url,user,password); </td></tr></tbody></table><br />　　8、access数据库直连用ODBC的<br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;<br />String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");<br />Connection conn = DriverManager.getConnection(url,"","");<br />Statement stmtNew=conn.createStatement() ;</td></tr></tbody></table><br />　　<b>二、JDBC连接MySql方式</b><br /><br />　　下面是使用JDBC连接MySql的一个小的教程 <br /><br />　　1、查找驱动程序<br /><br />　　MySQL目前提供的java驱动程序为Connection/J，可以从MySQL官方网站下载，并找到mysql-connector-java-3.0.15-ga-bin.jar文件，此驱动程序为纯java驱动程序，不需做其他配置。<br /><br />　　2、动态指定classpath<br /><br />　　如果需要执行时动态指定classpath，就在执行时采用－cp方式。否则将上面的.jar文件加入到classpath环境变量中。<br /><br />　　3、加载驱动程序<br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>try{<br />　Class.forName(com.mysql.jdbc.Driver);<br />　System.out.println(Success loading Mysql Driver!);<br />}catch(Exception e)<br />{<br />　System.out.println(Error loading Mysql Driver!);<br />　e.printStackTrace();<br />}</td></tr></tbody></table><br />　　4、设置连接的url<br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>jdbc：mysql：//localhost/databasename[?pa=va][＆pa=va]</td></tr></tbody></table><br /><span class="f14">　　<b>三、以下列出了在使用JDBC来连接Oracle数据库时可以使用的一些技巧</b><br /><br />　　1、在客户端软件开发中使用Thin驱动程序<br /><br />　　在开发Java软件方面，Oracle的数据库提供了四种类型的驱动程序，二种用于应用软件、applets、servlets等客户端软件，另外二种用于数据库中的Java存储过程等服务器端软件。在客户机端软件的开发中，我们可以选择OCI驱动程序或Thin驱动程序。OCI驱动程序利用Java本地化接口（JNI），通过Oracle客户端软件与数据库进行通讯。Thin驱动程序是纯Java驱动程序，它直接与数据库进行通讯。为了获得最高的性能，Oracle建议在客户端软件的开发中使用OCI驱动程序，这似乎是正确的。但我建议使用Thin驱动程序，因为通过多次测试发现，在通常情况下，Thin驱动程序的性能都超过了OCI驱动程序。<br /><br />　　2、关闭自动提交功能，提高系统性能<br /><br />　　在第一次建立与数据库的连接时，在缺省情况下，连接是在自动提交模式下的。为了获得更好的性能，可以通过调用带布尔值false参数的Connection类的setAutoCommit()方法关闭自动提交功能，如下所示：<br /><br />　　conn.setAutoCommit(false);<br /><br />　　值得注意的是，一旦关闭了自动提交功能，我们就需要通过调用Connection类的commit()和rollback()方法来人工的方式对事务进行管理。<br /><br />　　3、在动态SQL或有时间限制的命令中使用Statement对象<br /><br />　　在执行SQL命令时，我们有二种选择：可以使用PreparedStatement对象，也可以使用Statement对象。无论多少次地使用同一个SQL命令，PreparedStatement都只对它解析和编译一次。当使用Statement对象时，每次执行一个SQL命令时，都会对它进行解析和编译。这可能会使你认为，使用PreparedStatement对象比使用Statement对象的速度更快。然而，我进行的测试表明，在客户端软件中，情况并非如此。因此，在有时间限制的SQL操作中，除非成批地处理SQL命令，我们应当考虑使用Statement对象。<br /><br />　　此外，使用Statement对象也使得编写动态SQL命令更加简单，因为我们可以将字符串连接在一起，建立一个有效的SQL命令。因此，我认为，Statement对象可以使动态SQL命令的创建和执行变得更加简单。<br /><br />　　4、利用helper函数对动态SQL命令进行格式化<br /><br />　　在创建使用Statement对象执行的动态SQL命令时，我们需要处理一些格式化方面的问题。例如，如果我们想创建一个将名字O'Reilly插入表中的SQL命令，则必须使用二个相连的“''”号替换O'Reilly中的“'”号。完成这些工作的最好的方法是创建一个完成替换操作的helper方法，然后在连接字符串心服用公式表达一个SQL命令时，使用创建的helper方法。与此类似的是，我们可以让helper方法接受一个Date型的值，然后让它输出基于Oracle的to_date()函数的字符串表达式。<br /><br />　　5、利用PreparedStatement对象提高数据库的总体效率<br /><br />　　在使用PreparedStatement对象执行SQL命令时，命令被数据库进行解析和编译，然后被放到命令缓冲区。然后，每当执行同一个PreparedStatement对象时，它就会被再解析一次，但不会被再次编译。在缓冲区中可以发现预编译的命令，并且可以重新使用。在有大量用户的企业级应用软件中，经常会重复执行相同的SQL命令，使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行PreparedStatement任务需要的时间长于Statement任务，我会建议在除动态SQL命令之外的所有情况下使用PreparedStatement对象。<br /><br />　　6、在成批处理重复的插入或更新操作中使用PreparedStatement对象<br /><br />　　如果成批地处理插入和更新操作，就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理，只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理，或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制，可以以如下所示的方式调用setExecuteBatch()：<br /><br /><table align="center" bgcolor="#dadacf" border="1" bordercolor="#ffcc66" width="90%"><tbody><tr><td>PreparedStatement pstmt3D null;<br />try {<br />　((OraclePreparedStatement)pstmt).setExecuteBatch(30);<br />　...<br />　pstmt.executeUpdate();<br />} </td></tr></tbody></table><br />　　调用setExecuteBatch()时指定的值是一个上限，当达到该值时，就会自动地引发SQL命令执行，标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时传输批处理任务。<br /><br />　　7、使用Oracle locator方法插入、更新大对象（LOB）<br /><br />　　Oracle的PreparedStatement类不完全支持BLOB和CLOB等大对象的处理，尤其是Thin驱动程序不支持利用PreparedStatement对象的setObject()和setBinaryStream()方法设置BLOB的值，也不支持利用setCharacterStream()方法设置CLOB的值。只有locator本身中的方法才能够从数据库中获取LOB类型的值。可以使用PreparedStatement对象插入或更新LOB，但需要使用locator才能获取LOB的值。由于存在这二个问题，因此，我建议使用locator的方法来插入、更新或获取LOB的值。<br /><br />　　8、使用SQL92语法调用存储过程<br /><br />　　在调用存储过程时，我们可以使用SQL92或Oracle PL/SQL，由于使用Oracle PL/SQL并没有什么实际的好处，而且会给以后维护你的应用程序的开发人员带来麻烦，因此，我建议在调用存储过程时使用SQL92。<br /><br />　　9、使用Object SQL将对象模式转移到数据库中<br /><br />　　既然可以将Oracle的数据库作为一种面向对象的数据库来使用，就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建Java bean作为伪装的数据库对象，将它们的属性映射到关系表中，然后在这些bean中添加方法。尽管这样作在Java中没有什么问题，但由于操作都是在数据库之外进行的，因此其他访问数据库的应用软件无法利用对象模式。如果利用Oracle的面向对象的技术，可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作，然后使用JPublisher等工具生成自己的Java bean类。如果使用这种方式，不但Java应用程序可以使用应用软件的对象模式，其他需要共享你的应用中的数据和操作的应用软件也可以使用应用软件中的对象模式。<br /><br />　　10、利用SQL完成数据库内的操作<br /><br />　　我要向大家介绍的最重要的经验是充分利用SQL的面向集合的方法来解决数据库处理需求，而不是使用Java等过程化的编程语言。<br /><br />　　如果编程人员要在一个表中查找许多行，结果中的每个行都会查找其他表中的数据，最后，编程人员创建了独立的UPDATE命令来成批地更新第一个表中的数据。与此类似的任务可以通过在set子句中使用多列子查询而在一个UPDATE命令中完成。当能够在单一的SQL命令中完成任务，何必要让数据在网上流来流去的？我建议用户认真学习如何最大限度地发挥SQL的功能。 <br /><br />注：本文转载自：<a href="/relax/archive/2005/02/01/891.html">http://www.blogjava.net/relax/archive/2005/02/01/891.html</a></span><img src ="http://www.blogjava.net/passyt/aggbug/41845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-19 11:37 <a href="http://www.blogjava.net/passyt/archive/2006/04/19/41845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：Web应用中重复提交的问题的三种解决方案 </title><link>http://www.blogjava.net/passyt/archive/2006/04/19/41843.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Wed, 19 Apr 2006 03:29:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/19/41843.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/41843.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/19/41843.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/41843.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/41843.html</trackback:ping><description><![CDATA[前两种是利用javascript,后面一种是在使用Struts的情况下的参考实现:<br /><br />1、javascript ，设置一个变量，只允许提交一次。<br /><table style="width: 562px; height: 461px;" bordercolordark="#ffffff" bordercolorlight="black" align="center" border="1" cellpadding="2" cellspacing="0" width="562"><tbody><tr><td class="code" style="font-size: 9pt;" bgcolor="#e6e6e6"><pre><ccid_code>&lt;script language="javascript"&gt;
    var checkSubmitFlg = false;
    function checkSubmit()
	{
      if (checkSubmitFlg == true)
	  {
         return false;
      }
      checkSubmitFlg = true;
      return true;
   }
   document.ondblclick = 
   function docondblclick()
   {
    window.event.returnValue = false;
   }
   document.onclick =
   function doconclick()
   {
       if (checkSubmitFlg)
	   {
         window.event.returnValue = false;
       }
   }
&lt;/script&gt;

&lt;html:form action="myAction.do" 
method="post" onsubmit="return checkSubmit();"&gt;</ccid_code></pre></td></tr></tbody></table><br /><br /><center><ccid_nobr></ccid_nobr></center><br /><br />2、还是javascript，将提交按钮或者image置为disable <br /><br /><center><ccid_nobr></ccid_nobr><table bordercolordark="#ffffff" bordercolorlight="black" align="center" border="1" cellpadding="2" cellspacing="0" width="400"><tbody><tr><td class="code" style="font-size: 9pt;" bgcolor="#e6e6e6"><pre><ccid_code>&lt;html:form action="myAction.do" 
method="post" 
    onsubmit="getElById('submitInput')
	.disabled = true;
	return true;
	"&gt;  
  
  &lt;html:image 
  styleId="submitInput"
  src="images/ok_b.gif" 
  border="0" /&gt;
  
  &lt;/html:form&gt;</ccid_code></pre></td></tr></tbody></table></center><br /><br />3、利用struts的同步令牌机制 <br /><br />利用同步令牌（Token）机制来解决Web应用中重复提交的问题，Struts也给出了一个参考实现。 <br /><br />基本原理： <br /><br />服务器端在处理到达的请求之前，会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较， <br /><br />看是否匹配。在处理完该请求后，且在答复发送给客户端之前，将会产生一个新的令牌，该令牌除传给 <br /><br />客户端以外，也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次 <br /><br />提交的话，客户端传过来的令牌就和服务器端的令牌不一致，从而有效地防止了重复提交的发生。 <br /><br /><center><ccid_nobr></ccid_nobr><table bordercolordark="#ffffff" bordercolorlight="black" align="center" border="1" cellpadding="2" cellspacing="0" width="400"><tbody><tr><td class="code" style="font-size: 9pt;" bgcolor="#e6e6e6"><pre><ccid_code>if (isTokenValid(request, true))
{
  // your code here
    return mapping.findForward("success");
} else
{
    saveToken(request);
    return mapping.findForward
	("submitagain");
}</ccid_code></pre></td></tr></tbody></table></center><br /><br />Struts根据用户会话ID和当前系统时间来生成一个唯一（对于每个会话）令牌的，具体实现可以参考TokenProcessor类中的generateToken()方法。 <br /><br />1. //验证事务控制令牌,<html:form>会自动根据session中标识生成一个隐含input代表令牌，防止两次提交 <br /><br />2. 在action中： <br /><br /></html:form><center><ccid_nobr></ccid_nobr><table bordercolordark="#ffffff" bordercolorlight="black" align="center" border="1" cellpadding="2" cellspacing="0" width="400"><tbody><tr><td class="code" style="font-size: 9pt;" bgcolor="#e6e6e6"><pre><ccid_code>//&lt;input type="hidden" 
name="org.apache.struts.taglib.html.TOKEN" 
  // value="6aa35341f25184fd996c4c918255c3ae"&gt;
       if (!isTokenValid(request))
   errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.transaction.token"));
       resetToken(request);
	   //删除session中的令牌</ccid_code></pre></td></tr></tbody></table></center><br /><br />3. action有这样的一个方法生成令牌 <br /><br /><center><ccid_nobr></ccid_nobr><table bordercolordark="#ffffff" bordercolorlight="black" align="center" border="1" cellpadding="2" cellspacing="0" width="400"><tbody><tr><td class="code" style="font-size: 9pt;" bgcolor="#e6e6e6"><pre><ccid_code>protected String generateToken
 (HttpServletRequest request)
 {

       HttpSession session = 
	   request.getSession();
       try
	   {
           byte id[] = 
		   session.getId().getBytes();
           byte now[] =
               new Long(System.currentTimeMillis()).
			   toString().getBytes();
           MessageDigest md =
		   MessageDigest.getInstance("MD5");
           md.update(id);
           md.update(now);
           return (toHex(md.digest()));
       } catch (IllegalStateException e)
	   {
           return (null);
       } catch (NoSuchAlgorithmException e)
	   {
           return (null);
       }
   }</ccid_code></pre></td></tr></tbody></table></center><img src ="http://www.blogjava.net/passyt/aggbug/41843.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-19 11:29 <a href="http://www.blogjava.net/passyt/archive/2006/04/19/41843.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat配置技巧</title><link>http://www.blogjava.net/passyt/archive/2006/04/15/41273.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sat, 15 Apr 2006 14:06:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/15/41273.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/41273.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/15/41273.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/41273.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/41273.html</trackback:ping><description><![CDATA[
		<font size="2">
				<span twffan="done">    配置tomcat的时候，我想禁掉目录列表的访问。结果通过google的搜索找到了一篇不错的文章。除了我想要的，还有一些其他有用的东西。<br /><br />    做jsp时,关于tomcat服务器优化,常遇到的一些简单问题的解决方法: <br /><strong>1.如何禁止访问目录列表:</strong><br />    修改tomcat x.x/conf/web.xml内的一个属性值,就是把true 改为 false <br />在web.xml里找到以下代码<servlet><servlet-name><servlet-class><init-param><param-name><param-value><init-param><param-name><param-value><load-on-startup><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">    </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-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">default</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.apache.catalina.servlets.DefaultServlet</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);">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);">debug</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);">0</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);">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);">listings</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);">true</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></div>    把其中的<init-param><br /><param-name><param-value><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">            </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);">listings</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);">true</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></div>    改为 <init-param><br /></init-param></param-value></param-name></init-param></load-on-startup></param-value></param-name></init-param></param-value></param-name></init-param></servlet-class></servlet-name></servlet></span>
				<span twffan="done">
						<span style="color: rgb(0, 0, 255);">
						</span>
						<span style="color: rgb(0, 0, 255);">
						</span>
				</span>
				<span twffan="done">
						<servlet>
								<servlet-name>
										<servlet-class>
												<init-param>
														<param-name>
																<param-value>
																		<init-param>
																				<param-name>
																						<param-value>
																								<load-on-startup>
																										<init-param>
																												<param-name>
																														<param-value>
																																<init-param>
																																		<param-name>
																																				<param-value>
																																						<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
																																								<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
																																								<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);">listings</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);">false</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>
																																						</div>
																																						<br />
																																						<strong>2.如果某文件资源没有找到，服务器要报404错误:</strong>
																																						<br />  如果执行的某个JSP文件产生 NullPointException,会显示一些异常提示代码,为了让用户看到更更友好的页面,可在自己的虚拟目录的WEB-INF/web.xml中作如下的设置 <br /><error-page><error-code><location><error-page><exception-type><location><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">error-page</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);">error-code</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">404</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">error-code</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);">location</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/notFound.jsp</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">location</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);">error-page</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, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">对特定的Exception捕获</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);">error-page</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);">exception-type</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">java.lang.NullPointerException</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">exception-type</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);">location</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/null.jsp</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">location</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);">error-page</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>    同理,你也可以设置抛出其它异常时应该显示的页面!另外在jsp页面最上方加上这样一句话,也可以捕捉NullPointerException这种异常,此时转向error.jsp <br /><strong>3.设置session的超时时间 (单位:分钟)</strong><br /><session-config><session-timeout><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">    </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);">30</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></div><b>4.设置默认欢迎页面(当不输入文件名,只输入目录时起作用) </b><br /><welcome-file-list><welcome-file><welcome-file><welcome-file><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">    </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.html</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</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">index.htm</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</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">index.jsp</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></div><web-app><display-name><description><session-config><session-timeout><welcome-file-list><welcome-file><welcome-file><welcome-file><error-page><error-code><location><error-page><error-code><location><error-page><exception-type><location></location></exception-type></error-page></location></error-code></error-page></location></error-code></error-page></welcome-file></welcome-file></welcome-file></welcome-file-list></session-timeout></session-config></description></display-name></web-app></welcome-file></welcome-file></welcome-file></welcome-file-list></session-timeout></session-config></location></exception-type></error-page></location></error-code></error-page></param-value>
																																		</param-name>
																																</init-param>
																														</param-value>
																												</param-name>
																										</init-param>
																								</load-on-startup>
																						</param-value>
																				</param-name>
																		</init-param>
																</param-value>
														</param-name>
												</init-param>
										</servlet-class>
								</servlet-name>
						</servlet>
				</span>
		</font>
<img src ="http://www.blogjava.net/passyt/aggbug/41273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-15 22:06 <a href="http://www.blogjava.net/passyt/archive/2006/04/15/41273.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse快速上手Hibernate--3. 利用XDoclet开发</title><link>http://www.blogjava.net/passyt/archive/2006/04/15/41272.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sat, 15 Apr 2006 14:05:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/15/41272.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/41272.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/15/41272.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/41272.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/41272.html</trackback:ping><description><![CDATA[
		<font size="2">这篇文章是上两篇文章《 </font>
		<a href="http://blog.csdn.net/javamxj/archive/2005/04/02/335076.aspx">
				<font size="2">
						<font color="#3f68a6">Eclipse快速上手Hibernate--1. 入门实例</font>
				</font>
		</a>
		<font size="2">》和《 </font>
		<a href="http://blog.csdn.net/javamxj/archive/2005/04/04/336089.aspx">
				<font size="2">
						<font color="#3f68a6">Eclipse快速上手Hibernate--2. 利用Hbm映射文件开发</font>
				</font>
		</a>
		<font size="2">》的延续，主要说的是如何利用XDocletHbm映射文件产生Hbm映射文件及数据表。可以参考XDoclet文档中关于Hibernate的部分和夏昕编写的《 </font>
		<a href="http://www.xiaxin.net/Hibernate_DEV_GUIDE.rar">
				<font size="2">
						<font color="#3f68a6">Hibernate开发指南</font>
				</font>
		</a>
		<font size="2">》。同样，这篇文章没有过多谈理论，只是给出了一个完整的实例加以说明。相关配置请参考 </font>
		<a href="http://blog.csdn.net/javamxj/archive/2005/04/02/335076.aspx">
				<font size="2">上两篇文章 </font>
		</a>
		<font size="2">。 </font>
		<div twffan="done">
				<div twffan="done">
						<div twffan="done">
								<div twffan="done">
										<font size="2">
												<strong>1. 创建项目</strong>
										</font>
								</div>
								<div twffan="done">
										<div twffan="done">
												<font size="2">·  新建一个Java项目：HibernateBegin_3，注意选中"创建单独的源文件夹和输出文件夹"，同时添加"用户库"：hibernate。 </font>
										</div>
										<div twffan="done">
												<div twffan="done">
														<div twffan="done">
																<font size="2">
																		<strong>2.  文件User.java</strong>
																</font>
														</div>
														<div twffan="done">
																<div twffan="done">
																		<font size="2">·  新建一个类，包名：javamxj.hibernate，类名：User。然后在生成的代码中添加变量，再利用"生成 Getter 和 Setter"，具体方式同《 </font>
																		<a href="http://blog.csdn.net/javamxj/archive/2005/04/02/335076.aspx">
																				<font size="2">
																						<font color="#3f68a6">Eclipse快速上手Hibernate--1. 入门实例</font>
																				</font>
																		</a>
																		<font size="2">》文章中的编辑User.java的方式一样。   </font>
																</div>
																<div twffan="done">
																		<div twffan="done">
																				<font size="2">·  添加HibernateDoclet标记，关于如何利用JBoss-IDE添加XDoclet标记的技巧参考《 </font>
																				<a href="http://blog.csdn.net/javamxj/archive/2005/01/13/251992.aspx">
																						<font size="2">
																								<font color="#3f68a6">Eclipse快速上手EJB -- 1. Lomboz + JBoss-IDE 配置2</font>
																						</font>
																				</a>
																				<font size="2">》文中的关于JBoss-IDE的部分，这是添加HibernateDoclet后的代码：  </font>
																		</div>
																		<div twffan="done">
																				<div style="margin: 0px 5px; font-weight: bold; font-size: 15px; width: 70.94%; color: black; font-style: italic; font-family: courier new; height: 18px; background-color: rgb(204, 204, 204);" twffan="done">
																						<p>
																								<font size="2">
																										<em>User.java</em>
																								</font>
																						</p>
																				</div>
																				<div style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0); margin: 0px 5px; padding: 5px 5px 5px 2px; overflow: scroll; font-size: 14px; width: 71.08%; color: rgb(0, 0, 0); font-family: courier new; height: 451px; background-color: rgb(226, 226, 226);" twffan="done">
																						<pre>
																								<font size="2">
																										<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">        private</span>
																										<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">int</span> id;
	<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">private</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">String</span> username;
	<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">private</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">String</span> password;    
    	
	<span style="color: rgb(63, 95, 191);" twffan="done">/**</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">*</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">@</span><span style="color: rgb(63, 95, 191);" twffan="done">hibernate</span><span style="color: rgb(63, 95, 191);" twffan="done">.</span><span style="color: rgb(63, 95, 191);" twffan="done">id</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">*</span><span style="color: rgb(63, 95, 191);" twffan="done">   column = "ID"</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">*</span><span style="color: rgb(63, 95, 191);" twffan="done">   generator</span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">-</span><span style="color: rgb(63, 95, 191);" twffan="done">class = "hilo" </span><span style="color: rgb(63, 95, 191);" twffan="done">	 */</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">public</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">int</span> getId() {
		<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">return</span> id;
	}
	<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">public</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">void</span> setId(<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">int</span> id) {
		<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">this</span>.id = id;
	}
	
	<span style="color: rgb(63, 95, 191);" twffan="done">/**</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">*</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">@</span><span style="color: rgb(63, 95, 191);" twffan="done">hibernate</span><span style="color: rgb(63, 95, 191);" twffan="done">.</span><span style="color: rgb(63, 95, 191);" twffan="done">property </span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">*</span><span style="color: rgb(63, 95, 191);" twffan="done">    length = "</span><span style="color: rgb(63, 95, 191);" twffan="done">24</span><span style="color: rgb(63, 95, 191);" twffan="done">"</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">*</span><span style="color: rgb(63, 95, 191);" twffan="done">    not</span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">-</span><span style="color: rgb(63, 95, 191);" twffan="done">null = "true"</span><span style="color: rgb(63, 95, 191);" twffan="done">	 */</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">public</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">String</span> getPassword() {
		<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">return</span> password;
	}
	
	<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">public</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">void</span> setPassword(<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">String</span> password) {
		<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">this</span>.password = password;
	}
	
	<span style="color: rgb(63, 95, 191);" twffan="done">/**</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">*</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">@</span><span style="color: rgb(63, 95, 191);" twffan="done">hibernate</span><span style="color: rgb(63, 95, 191);" twffan="done">.</span><span style="color: rgb(63, 95, 191);" twffan="done">property </span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">*</span><span style="color: rgb(63, 95, 191);" twffan="done">    column = "用户名"</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">*</span><span style="color: rgb(63, 95, 191);" twffan="done">    length = "</span><span style="color: rgb(63, 95, 191);" twffan="done">24</span><span style="color: rgb(63, 95, 191);" twffan="done">"</span><span style="color: rgb(63, 95, 191);" twffan="done"></span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">*</span><span style="color: rgb(63, 95, 191);" twffan="done">    not</span><span style="font-weight: bold; color: rgb(127, 159, 191);" twffan="done">-</span><span style="color: rgb(63, 95, 191);" twffan="done">null = "true"</span><span style="color: rgb(63, 95, 191);" twffan="done">	 */</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">public</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">String</span> getUsername() {
		<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">return</span> username;
	}
	<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">public</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">void</span> setUsername(<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">String</span> username) {
		<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">this</span>.username = username;
	}
}

																						</font>
																						</pre>
																						<font size="2">  </font>
																				</div>
																		</div>
																		<div twffan="done">
																				<font size="2">·  添加类标记" @hibernate.class table ="UserTable3" "用来生成数据库的表UserTable3。 </font>
																		</div>
																		<div twffan="done">
																				<font size="2">·  " @hibernate.id"用来生成主键，注意这里采用是hilo（高低位）生成器，需要额外的数据库表保存主键生成历史状态。 </font>
																		</div>
																		<div twffan="done">
																				<font size="2">·  " @hibernate.property"描述POJO中属性与数据库表字段之间的映射关系。  </font>
																		</div>
																		<div twffan="done">
																				<font size="2">   </font>
																		</div>
																		<div twffan="done">
																				<font size="2">●  更新xdoclet-hibernate-module <br />·  将XDoclet1.2.2中的xdoclet-hibernate-module-1.2.2.jar复制到JBossIDE-1.4.1-e30\eclipse\plugins\org.jboss.ide.eclipse.xdoclet.core_1.4.1目录中，并且删除其目录下的xdoclet-hibernate-module-1.2.1.jar文件，然后在eclipse界面中，窗口 -&gt;首选项 -&gt;JBoss-IDE -&gt;XDoclet -&gt;Code Assist：点击右侧的"Refresh XDoclet Data"栏，即可完成更新。如果要替换其它的模块，步骤与此类似。 </font>
																		</div>
																		<div twffan="done">
																				<div twffan="done">
																						<div twffan="done">
																								<font size="2">
																										<strong>3. 项目结构</strong>
																								</font>
																						</div>
																						<div twffan="done">
																								<div twffan="done">
																										<font size="2">· 将上篇文章中的"build.xml"复制到项目根目录下，配置文件"hibernate.cfg.xml"复制到src目录下，这时的项目结构如图： </font>
																								</div>
																								<div twffan="done">
																										<font size="2">
																												<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/javamxj/111071/o_hib21.jpg" twffan="done" border="0" />
																										</font>
																								</div>
																								<div twffan="done">
																										<div twffan="done">
																												<div twffan="done">
																														<div twffan="done">
																																<font size="2">
																																		<strong>4. 运行任务</strong>
																																</font>
																														</div>
																														<div twffan="done">
																																<div twffan="done">
																																		<font size="2">·  双击"generate-hbm"任务，然后按一下"F5"功能键刷新一下包"javamxj.hibernate"，应该可以看到这个包下的"User.hbm.xml"。文件如下： </font>
																																</div>
																														</div>
																														<div twffan="done">
																																<div style="margin: 0px 5px; font-weight: bold; font-size: 15px; width: 87.73%; color: black; font-style: italic; font-family: courier new; height: 18px; background-color: rgb(204, 204, 204);" twffan="done">
																																		<p>
																																				<font size="2">
																																						<em>User.hbm.xml</em>
																																				</font>
																																		</p>
																																</div>
																																<div style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0); margin: 0px 5px; padding: 5px 5px 5px 2px; overflow: scroll; font-size: 14px; width: 87.9%; color: rgb(0, 0, 0); font-family: courier new; height: 408px; background-color: rgb(226, 226, 226);" twffan="done">
																																		<span style="color: rgb(127, 0, 85);" twffan="done">
																																				<!--sp-->
																																				<font size="2">
																																						<span style="color: rgb(127, 0, 85);" twffan="done">xml</span>
																																						<span style="color: rgb(127, 0, 85);" twffan="done">version</span>="1.0" <span style="color: rgb(127, 0, 85);" twffan="done">encoding</span>=<span style="color: rgb(42, 0, 255);" twffan="done">"GBK"</span><span style="color: rgb(127, 0, 85);" twffan="done">?&gt;</span><br /><br /><span style="color: rgb(127, 0, 85);" twffan="done"></span><!--sp--><span style="color: rgb(127, 0, 85);" twffan="done">DOCTYPE</span><span style="color: rgb(127, 0, 85);" twffan="done">hibernate-mapping</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">PUBLIC</span><br />    <span style="color: rgb(42, 0, 255);" twffan="done">"-//Hibernate/Hibernate Mapping DTD 2.0//EN"</span><br />    <span style="color: rgb(42, 0, 255);" twffan="done">"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"</span><span style="color: rgb(127, 0, 85);" twffan="done">&gt;</span><br /><br /><span style="color: rgb(127, 0, 85);" twffan="done">&lt;</span><span style="color: rgb(127, 0, 85);" twffan="done">hibernate-mapping</span><br /><span style="color: rgb(127, 0, 85);" twffan="done">&gt;</span><br />    <span style="color: rgb(127, 0, 85);" twffan="done">&lt;</span><span style="color: rgb(127, 0, 85);" twffan="done">class</span><br />        name=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">javamxj.hibernate.User</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />        table=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">UserTable3</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />        dynamic-update=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">false</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />        dynamic-insert=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">false</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />        select-before-update=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">false</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />        optimistic-lock=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">version</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />    <span style="color: rgb(127, 0, 85);" twffan="done">&gt;</span><br /><br />        <span style="color: rgb(127, 0, 85);" twffan="done">&lt;</span><span style="color: rgb(127, 0, 85);" twffan="done">id</span><br />            name=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">id</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            column=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">ID</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            type=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">int</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />        <span style="color: rgb(127, 0, 85);" twffan="done">&gt;</span><br />            <span style="color: rgb(127, 0, 85);" twffan="done">&lt;</span><span style="color: rgb(127, 0, 85);" twffan="done">generator</span> class=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">hilo</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(127, 0, 85);" twffan="done">&gt;</span><br />              <span style="color: rgb(63, 127, 89);" twffan="done"><!--</span><span style="color: #3f7f59">&nbsp; </span><br /><span style="color: #3f7f59">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; To add non XDoclet generator parameters, create a file named </span><br /><span style="color: #3f7f59">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hibernate-generator-params-User.xml </span><br /><span style="color: #3f7f59">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; containing the additional parameters and place it in your merge dir. </span><br /><span style="color: #3f7f59">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #3f7f59">--></span><br />            <span style="color: rgb(127, 0, 85);" twffan="done">SPAN style="COLOR: #7f0055" twffan="done"&gt;generator</span><span style="color: rgb(127, 0, 85);" twffan="done">&gt;</span><br />        <span style="color: rgb(127, 0, 85);" twffan="done">SPAN style="COLOR: #7f0055" twffan="done"&gt;id</span><span style="color: rgb(127, 0, 85);" twffan="done">&gt;</span><br /><br />        <span style="color: rgb(127, 0, 85);" twffan="done">&lt;</span><span style="color: rgb(127, 0, 85);" twffan="done">property</span><br />            name=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">password</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            type=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">java.lang.String</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            update=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">true</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            insert=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">true</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            access=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">property</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            column=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">password</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            length=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">24</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            not-null=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">true</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />        <span style="color: rgb(127, 0, 85);" twffan="done">/&gt;</span><br /><br />        <span style="color: rgb(127, 0, 85);" twffan="done">&lt;</span><span style="color: rgb(127, 0, 85);" twffan="done">property</span><br />            name=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">username</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            type=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">java.lang.String</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            update=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">true</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            insert=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">true</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            access=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">property</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            column=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">用户名</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            length=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">24</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />            not-null=<span style="color: rgb(42, 0, 255);" twffan="done">"</span><span style="color: rgb(42, 0, 255);" twffan="done">true</span><span style="color: rgb(42, 0, 255);" twffan="done">"</span><br />        <span style="color: rgb(127, 0, 85);" twffan="done">/&gt;</span><br /><br />        <span style="color: rgb(63, 127, 89);" twffan="done"><!--</span><br /><span style="color: #3f7f59">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; To add non XDoclet property mappings, create a file named</span><br /><span style="color: #3f7f59">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hibernate-properties-User.xml</span><br /><span style="color: #3f7f59">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; containing the additional properties and place it in your merge dir.</span><br /><span style="color: #3f7f59">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #3f7f59">--></span><br /><br />    <span style="color: rgb(127, 0, 85);" twffan="done">SPAN style="COLOR: #7f0055" twffan="done"&gt;class</span><span style="color: rgb(127, 0, 85);" twffan="done">&gt;</span><br /><br /><span style="color: rgb(127, 0, 85);" twffan="done">SPAN style="COLOR: #7f0055" twffan="done"&gt;hibernate-mapping</span><span style="color: rgb(127, 0, 85);" twffan="done">&gt;</span><br /></font>
																																		</span>
																																</div>
																														</div>
																														<div twffan="done">
																																<div twffan="done">
																																		<font size="2">  </font>
																																		<div twffan="done">
																																				<font size="2">●  <strong>生成数据表</strong></font>
																																		</div>
																																		<div twffan="done">
																																				<font size="2">·  启动MySql，应该确定含有HibernateTest数据库，不过这次不需要建立数据表了。 </font>
																																		</div>
																																		<div twffan="done">
																																				<font size="2">·  双击"schemaexport"任务，然后刷新项目根目录，会发现出产生的"schema-export.sql"文件。  </font>
																																		</div>
																																</div>
																																<div twffan="done">
																																		<table border="0" bordercolor="#000000" cellpadding="4" cellspacing="0" width="70%">
																																				<tbody>
																																						<tr>
																																								<td bgcolor="#cccccc" height="16" valign="top" width="100%">
																																										<div twffan="done">
																																												<font size="2">schema-export.sql </font>
																																										</div>
																																								</td>
																																						</tr>
																																						<tr>
																																								<td bgcolor="#e2e2e2" valign="top" width="100%">
																																										<div twffan="done">
																																												<font size="2">
																																														<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">drop</span>
																																														<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">table</span>
																																														<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">if</span>
																																														<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">exists</span> UserTable3<br /><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">drop</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">table</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">if</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">exists</span> hibernate_unique_key<br /><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">create</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">table</span> UserTable3 (<br />   <span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">ID</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">integer</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">not</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">null</span>,<br />   <span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">password</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">varchar</span>(24) <span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">not</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">null</span>,<br />   用户名 <span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">varchar</span>(24) <span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">not</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">null</span>,<br />   <span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">primary</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">key</span> (<span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">ID</span>)<br />)<br /><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">create</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">table</span> hibernate_unique_key (<br />    next_hi <span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">integer</span><br />)<br /><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">insert</span><span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">into</span> hibernate_unique_key <span style="font-weight: bold; color: rgb(127, 0, 85);" twffan="done">values</span> ( 0 ) </font>
																																										</div>
																																								</td>
																																						</tr>
																																				</tbody>
																																		</table>
																																</div>
																																<div twffan="done">
																																		<div twffan="done">
																																				<font size="2">·  切换到数据库中，会发现已经自动产生了数据表usertable3和hibernate_unique_key：  </font>
																																		</div>
																																		<div twffan="done">
																																				<font size="2">
																																						<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/javamxj/111071/o_hib22.jpg" twffan="done" border="0" />
																																				</font>
																																		</div>
																																		<div twffan="done">
																																				<div twffan="done">
																																						<font size="2">  </font>
																																						<div twffan="done">
																																								<font size="2">
																																										<strong>5. 测试程序</strong>
																																								</font>
																																						</div>
																																						<div twffan="done">
																																								<div twffan="done">
																																										<font size="2">好了，将上篇文章中的test.java文件复制到包"javamxj.hibernate"下，然后右击运行这个文件，可以看到数据表中生成的数据(图中的数据是连续运行4次后产生的)。 </font>
																																								</div>
																																								<div twffan="done">
																																										<font size="2">
																																												<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/javamxj/111071/o_hib20.jpg" twffan="done" border="0" />
																																										</font>
																																								</div>
																																						</div>
																																						<div twffan="done">
																																								<div twffan="done">
																																										<div twffan="done">
																																												<div twffan="done">
																																														<font size="2">
																																																<strong>6. Log4j</strong>
																																														</font>
																																												</div>
																																												<div twffan="done">
																																														<strong>
																																																<font size="2">
																																																</font>
																																														</strong>
																																												</div>
																																												<div twffan="done">
																																														<font size="2">   Log4j是一个开放源码的项目。它允许开发员以任意的间隔来控制日志的输出。它通过设在外部的配置文件而达到运行时灵活的设置。 </font>
																																												</div>
																																												<div twffan="done">
																																														<div twffan="done">
																																																<font size="2">   运行Log4j的库文件都已经放到先前建立的hibernate库文件夹中了，你只要找到下载的hibernate 2.1.8压缩文件中的etc目录，复制其中的log4j.properties文件到项目中的src目录即可。 </font>
																																														</div>
																																														<div twffan="done">
																																																<div twffan="done">
																																																		<font size="2">运行test.java，可以看到控制台的输出语句似乎和先前没有用Log4j没有什么区别。 </font>
																																																</div>
																																																<div twffan="done">
																																																		<div twffan="done">
																																																				<font size="2">现在打开log4j.properties，找到"log4j.logger.net.sf.hibernate=info"语句，将其改成"log4j.logger.net.sf.hibernate=<strong>warn</strong>"，再次运行test.java，可以看到控制台的输出语句只有两条了 </font>
																																																		</div>
																																																		<div twffan="done">
																																																				<font size="2">： </font>
																																																		</div>
																																																		<div twffan="done">
																																																				<em>
																																																						<font size="2">
																																																								<strong>21:03:55,687  WARN Configurator:125 - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/D:/java/Hibernate/lib/ehcache-0.9.jar!/ehcache-failsafe.xml<br />Hibernate: insert into UserTable3 (password, 用户名, ID) values (?, ?, ?)</strong>
																																																						</font>
																																																				</em>
																																																		</div>
																																																		<div twffan="done">
																																																				<font size="2">警告信息是指缓存配置文件没有找到，以后用到时再谈谈这一点。 </font>
																																																		</div>
																																																		<div twffan="done">
																																																				<div twffan="done">
																																																						<font size="2">好了，hibernate结合Log4j的使用就是这么简单。 </font>
																																																				</div>
																																																				<div twffan="done">
																																																						<font size="2">关于Log4j的使用，比较简单，网上的资料也很多，自己可以google一下。 </font>
																																																				</div>
																																																				<div twffan="done">
																																																						<div twffan="done">
																																																								<div twffan="done">
																																																										<div twffan="done">
																																																												<font size="2">
																																																														<strong>小结：</strong>
																																																												</font>
																																																										</div>
																																																										<div twffan="done">
																																																												<strong>
																																																														<font size="2">
																																																														</font>
																																																												</strong>
																																																										</div>
																																																										<div twffan="done">
																																																												<font size="2"> Hibernate的开发相当灵活，可以采用多种方式开发。 </font>
																																																										</div>
																																																										<div twffan="done">
																																																												<div twffan="done">
																																																														<font size="2">·  只有Hbm映射文件：映射文件---hbm2java----java---SchemaExport----数据表 </font>
																																																												</div>
																																																												<div twffan="done">
																																																														<font size="2">·  只有Java：    java---XDoclet---Hbm----SchemaExport----数据表 </font>
																																																												</div>
																																																												<div twffan="done">
																																																														<font size="2">·  如果只有数据表呢？可以采用Middlegen： </font>
																																																												</div>
																																																												<div twffan="done">
																																																														<font size="2">                   数据表---Middlegen---Hbm----hbm2java----java </font>
																																																												</div>
																																																												<div twffan="done">
																																																														<font size="2">      关于利用Middlegen开发Hibernate的方法，可以参考夏昕编写的《 </font>
																																																														<a href="http://www.xiaxin.net/Hibernate_DEV_GUIDE.rar">
																																																																<font size="2">Hibernate开发指南 </font>
																																																														</a>
																																																														<font size="2">》。 </font>
																																																												</div>
																																																												<div twffan="done">
																																																														<font size="2">   </font>
																																																												</div>
																																																												<div twffan="done">
																																																														<font size="2">·  至于有关Hibernate的Eclipse插件，也有很多，可以看看《 </font>
																																																														<a href="http://www.onjava.com/pub/a/onjava/2004/06/23/hibernate.html">
																																																																<font size="2">Working with Hibernate in Eclipse </font>
																																																														</a>
																																																														<font size="2">》。 </font>
																																																												</div>
																																																										</div>
																																																								</div>
																																																						</div>
																																																				</div>
																																																		</div>
																																																</div>
																																														</div>
																																												</div>
																																										</div>
																																								</div>
																																						</div>
																																				</div>
																																		</div>
																																</div>
																														</div>
																												</div>
																										</div>
																								</div>
																						</div>
																				</div>
																		</div>
																</div>
														</div>
												</div>
										</div>
								</div>
						</div>
				</div>
		</div>
<img src ="http://www.blogjava.net/passyt/aggbug/41272.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-15 22:05 <a href="http://www.blogjava.net/passyt/archive/2006/04/15/41272.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 编程技术中汉字问题的分析及解决-</title><link>http://www.blogjava.net/passyt/archive/2006/04/15/41271.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sat, 15 Apr 2006 14:01:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/15/41271.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/41271.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/15/41271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/41271.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/41271.html</trackback:ping><description><![CDATA[
		<p>很难找到的一篇极棒的文章，它从本质上解决了java的汉字编码问题............<br /></p>
		<p>在基于 Java 语言的编程中，我们经常碰到汉字的处理及显示的问题。一大堆看不懂的乱码肯定不是我们愿意看到的显示效果，怎样才能够让那些汉字正确显示呢？Java 语言默认的编码方式是UNICODE ，而我们中国人通常使用的文件和数据库都是基于 GB2312 或者 BIG5 等方式编码的，怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢？本文将从汉字编码的常识入手，结合 Java 编程实例，分析以上两个问题并提出解决它们的方案。</p>
		<br />
		<br />
		<p>现在 Java 编程语言已经广泛应用于互联网世界，早在 Sun 公司开发 Java 语言的时候，就已经考虑到对非英文字符的支持了。Sun 公司公布的 Java 运行环境（JRE）本身就分英文版和国际版，但只有国际版才支持非英文字符。不过在 Java 编程语言的应用中，对中文字符的支持并非如同 Java Soft 的标准规范中所宣称的那样完美，因为中文字符集不只一个，而且不同的操作系统对中文字符的支持也不尽相同，所以会有许多和汉字编码处理有关的问题在我们进行应用开发中困扰着我们。有很多关于这些问题的解答，但都比较琐碎，并不能够满足大家迫切解决问题的愿望，关于 Java 中文问题的系统研究并不多，本文从汉字编码常识出发，分析 Java 中文问题，希望对大家解决这个问题有所帮助。</p>
		<a name="1">
				<p align="left">
						<strong>汉字编码的常识</strong>
				</p>
				<p>我们知道，英文字符一般是以一个字节来表示的，最常用的编码方法是 ASCII 。但一个字节最多只能区分256个字符，而汉字成千上万，所以现在都以双字节来表示汉字，为了能够与英文字符分开，每个字节的最高位一定为1，这样双字节最多可以表示64K格字符。我们经常碰到的编码方式有 GB2312、BIG5、UNICODE 等。关于具体编码方式的详细资料，有兴趣的读者可以查阅相关资料。我肤浅谈一下和我们关系密切的 GB2312 和 UNICODE。GB2312 码，中华人民共和国国家标准汉字信息交换用编码，是一个由中华人民共和国国家标准总局发布的关于简化汉字的编码，通行于中国大陆地区及新加坡，简称国标码。两个字节中，第一个字节（高字节）的值为区号值加32（20H），第二个字节（低字节）的值为位号值加32（20H），用这两个值来表示一个汉字的编码。UNICODE 码是微软提出的解决多国字符问题的多字节等长编码，它对英文字符采取前面加"0"字节的策略实现等长兼容。如 "A" 的 ASCII 码为0x41，UNICODE 就为0x00，0x41。利用特殊的工具各种编码之间可以互相转换。</p>
		</a>
		<a name="2">
				<p>
						<strong>Java 中文问题的初步认识</strong>
				</p>
				<p>我们基于 Java 编程语言进行应用开发时，不可避免地要处理中文。Java 编程语言默认的编码方式是 UNICODE，而我们通常使用的数据库及文件都是基于 GB2312 编码的，我们经常碰到这样的情况：浏览基于 JSP 技术的网站看到的是乱码，文件打开后看到的也是乱码，被 Java 修改过的数据库的内容在别的场合应用时无法继续正确地提供信息。</p>
				<p>String sEnglish = "apple";</p>
				<p>String sChinese = "苹果";</p>
				<p>String s = "苹果 apple ";</p>
				<p>sEnglish 的长度是5，sChinese的长度是4，而 s 默认的长度是14。对于 sEnglish来说， Java 中的各个类都支持得非常好，肯定能够正确显示。但对于 sChinese 和 s 来说，虽然 Java Soft 声明 Java 的基本类已经考虑到对多国字符的支持（默认 UNICODE 编码），但是如果操作系统的默认编码不是 UNICODE ，而是国标码等。从 Java 源代码到得到正确的结果，要经过 "Java 源代码-&gt; Java 字节码-&gt; ;虚拟机-&gt;操作系统-&gt;显示设备"的过程。在上述过程中的每一步骤，我们都必须正确地处理汉字的编码，才能够使最终的显示结果正确。</p>
				<p>" Java 源代码-&gt; Java 字节码"，标准的 Java 编译器 javac 使用的字符集是系统默认的字符集，比如在中文 Windows 操作系统上就是 GBK ,而在 Linux 操作系统上就是ISO-8859-1，所以大家会发现在 Linux 操作系统上编译的类中源文件中的中文字符都出了问题，解决的办法就是在编译的时候添加 encoding 参数，这样才能够与平台无关。用法是</p>
				<p>javac -encoding GBK。</p>
				<p>" Java 字节码-&gt;虚拟机-&gt;操作系统"， Java 运行环境 （JRE） 分英文版和国际版，但只有国际版才支持非英文字符。 Java 开发工具包 （JDK） 肯定支持多国字符，但并非所有的计算机用户都安装了 JDK 。很多操作系统及应用软件为了能够更好的支持 Java ，都内嵌了 JRE 的国际版本，为自己支持多国字符提供了方便。</p>
				<p>"操作系统-&gt;显示设备"，对于汉字来说，操作系统必须支持并能够显示它。英文操作系统如果不搭配特殊的应用软件的话，是肯定不能够显示中文的。</p>
				<p>还有一个问题，就是在 Java 编程过程中，对中文字符进行正确的编码转换。例如，向网页输出中文字符串的时候，不论你是用</p>
				<p>out.println(string);还是用</p>
				<p>
						<!--trin-->，都必须作 UNICODE 到 GBK 的转换，或者手动，或者自动。在 JSP 1.0中，可以定义输出字符集，从而实现内码的自动转换。用法是</p>
				<p>
						<!--age contentType="text/html;charset=gb2312"-->
				</p>
				<p>但是在一些 JSP 版本中并没有提供对输出字符集的支持，（例如 JSP 0.92），这就需要手动编码输出了，方法非常多。最常用的方法是</p>
				<p>String s1 = request.getParameter("keyword");</p>
				<p>String s2 = new String(s1.getBytes("ISO-8859-1"),"GBK");</p>
				<p>getBytes 方法用于将中文字符以"ISO-8859-1"编码方式转化成字节数组，而"GBK" 是目标编码方式。我们从以ISO-8859-1方式编码的数据库中读出中文字符串 s1 ，经过上述转换过程，在支持 GBK 字符集的操作系统和应用软件中就能够正确显示中文字符串 s2 。</p>
		</a>
		<a name="3">
				<p>
						<strong>Java 中文问题的表层分析及处理</strong>
				</p>
				<div twffan="done" align="center">
						<table border="1" cellpadding="0" cellspacing="0" width="80%">
								<tbody>
										<tr>
												<td colspan="4" width="100%">
														<p align="center">背景</p>
												</td>
										</tr>
										<tr>
												<td width="25%">
														<p align="center">开发环境</p>
												</td>
												<td width="25%">
														<p align="center">JDK1.15</p>
												</td>
												<td width="25%">
														<p align="center">Vcafe2.0</p>
												</td>
												<td width="25%">
														<p align="center">JPadPro</p>
												</td>
										</tr>
										<tr>
												<td width="25%">
														<p align="center">服务器端</p>
												</td>
												<td width="25%">
														<p align="center">NT IIS</p>
												</td>
												<td width="25%">
														<p align="center">Sybase System</p>
												</td>
												<td width="25%">
														<p align="center">Jconnect（JDBC）</p>
												</td>
										</tr>
										<tr>
												<td width="25%">
														<p align="center">客户端</p>
												</td>
												<td width="25%">
														<p align="center">IE5.0</p>
												</td>
												<td width="25%">
														<p align="center">Pwin98</p>
												</td>
												<td width="25%">
														<p align="center">?span &gt;</p>
												</td>
										</tr>
								</tbody>
						</table>
				</div>
				<p>.CLASS 文件存放在服务器端，由客户端的浏览器运行 APPLET ， APPLET 只起调入 FRAME 类等主程序的作用。界面包括 Textfield ，TextArea，List，Choice 等。</p>
				<p>I.用 JDBC 执行 SELECT 语句从服务器端读取数据（中文）后，将数据用 APPEND 方法加到 TextArea（TA） ，不能正确显示。但加到 List 中时，大部分汉字却可正确显示。</p>
				<p>将数据按"ISO-8859-1" 编码方式转化为字节数组，再按系统缺省编码方式 （Default Character Encoding） 转化为 STRING ，即可在 TA 和 List 中正确显示。</p>
				<p>程序段如下：</p>
				<p>dbstr2 = results.getString(1);</p>
				<p>//After reading the result from DB server，converting it to string.</p>
				<p>dbbyte1 = dbstr2.getBytes("iso-8859-1");</p>
				<p>dbstr1 = new String(dbbyte1);</p>
				<p>在转换字符串时不采用系统默认编码方式，而直接采用" GBK" 或者 "GB2312" ,在 A 和 B 两种情况下，从数据库取数据都没有问题。</p>
				<p>II.处理方式与"取中文"相逆，先将 SQL 语句按系统缺省编码方式转化为字节数组，再按"ISO-8859-1"编码方式转化为 STRING ，最后送去执行，则中文信息可正确写入数据库。</p>
				<p>程序段如下：</p>
				<p>sqlstmt = tf_input.getText();</p>
				<p>//Before sending statement to DB server，converting it to sql statement.</p>
				<p>dbbyte1 = sqlstmt.getBytes();</p>
				<p>sqlstmt = newString(dbbyte1,"iso-8859-1");</p>
				<p>_stmt = _con.createStatement();</p>
				<p>_stmt.executeUpdate(sqlstmt);</p>
				<p>......</p>
				<p>问题：如果客户机上存在 CLASSPATH 指向 JDK 的 CLASSES.ZIP 时（称为 A 情况），上述程序代码可正确执行。但是如果客户机只有浏览器，而没有 JDK 和 CLASSPATH 时（称为 B 情况），则汉字无法正确转换。</p>
				<p>我们的分析：</p>
				<p>1.经过测试，在 A 情况下，程序运行时系统的缺省编码方式为 GBK 或者 GB2312 。在 B 情况下，程序启动时浏览器的 JAVA 控制台中出现如下错误信息：</p>
				<p>Can't find resource for sun.awt.windows.awtLocalization_zh_CN</p>
				<p>然后系统的缺省编码方式为"8859-1"。</p>
				<p>2.如果在转换字符串时不采用系统缺省编码方式，而是直接采用 "GBK" 或"GB2312"，则在 A 情况下程序仍然可正常运行，在 B 情况下，系统出现错误：</p>
				<p>UnsupportedEncodingException。</p>
				<p>3.在客户机上，把 JDK 的 CLASSES.ZIP 解压后，放在另一个目录中， CLASSPATH 只包含该目录。然后一边逐步删除该目录中的 .CLASS 文件，另一边运行测试程序，最后发现在一千多个 CLASS 文件中，只有一个是必不可少的，该文件是：</p>
				<p>sun.io.CharToByteDoubleByte.class。</p>
				<p>将该文件拷到服务器端和其它的类放在一起，并在程序的开头 IMPORT 它，在 B 情况下程序仍然无法正常运行。</p>
				<p>4.在 A 情况下，如果在 CLASSPTH 中去掉 sun.io.CharToByteDoubleByte.class ，则程序运行时测得默认编码方式为"8859-1"，否则为 "GBK" 或 "GB2312" 。</p>
				<p>如果 JDK 的版本为1.2以上的话，在 B 情况下遇到的问题得到了很好的解决，测试的步骤同上，有兴趣的读者可以尝试一下。</p>
		</a>
		<a name="4">
				<p>
						<strong>Java 中文问题的根源分析及解决</strong>
				</p>
				<p>在简体中文 MS Windows 98 + JDK 1.3 下，可以用 System.getProperties() 得到 Java 运行环境的一些基本属性，类 PoorChinese 可以帮助我们得到这些属性。</p>
				<p>类 PoorChinese 的源代码：</p>
				<p>public class PoorChinese {</p>
				<p>}</p>
				<p>执行 java PoorChinese 后，我们会得到:</p>
				<p>系统变量 file.encoding 的值为 GBK ，user.language 的值为 zh ， user.region 的值为 CN ，这些系统变量的值决定了系统默认的编码方式是 GBK 。</p>
				<p>在上述系统中，下面的代码将 GB2312 文件转换成 Big5 文件，它们能够帮助我们理解 Java 中汉字编码的转化:</p>
				<p>?</p>
				<p>import java.io.*;</p>
				<p>import java.util.*;</p>
				<p>?</p>
				<p>public class gb2big5 {</p>
				<p>?</p>
				<p>static int iCharNum=0;</p>
				<p>?</p>
				<p>public static void main(String[] args) {</p>
				<p>System.out.println("Input GB2312 file, output Big5 file.");</p>
				<p>if (args.length!=2) {</p>
				<p>System.err.println("Usage: jview gb2big5 gbfile big5file");</p>
				<p>System.exit(1);</p>
				<p>String inputString = readInput(args[0]);</p>
				<p>writeOutput(inputString,args[1]);</p>
				<p>System.out.println("Number of Characters in file: "+iCharNum+".");</p>
				<p>}</p>
				<p>?</p>
				<p>static void writeOutput(String str, String strOutFile) {</p>
				<p>try {</p>
				<p>FileOutputStream fos = new FileOutputStream(strOutFile);</p>
				<p>Writer out = new OutputStreamWriter(fos, "Big5");</p>
				<p>out.write(str);</p>
				<p>out.close();</p>
				<p>}</p>
				<p>catch (IOException e) {</p>
				<p>e.printStackTrace();</p>
				<p>e.printStackTrace();</p>
				<p>}</p>
				<p>}</p>
				<p>?</p>
				<p>static String readInput(String strInFile) {</p>
				<p>StringBuffer buffer = new StringBuffer();</p>
				<p>try {</p>
				<p>FileInputStream fis = new FileInputStream(strInFile);</p>
				<p>InputStreamReader isr = new InputStreamReader(fis, "GB2312");</p>
				<p>Reader in = new BufferedReader(isr);</p>
				<p>int ch;</p>
				<p>while ((ch = in.read()) &gt; -1) {</p>
				<p>iCharNum += 1;</p>
				<p>buffer.append((char)ch);</p>
				<p>}</p>
				<p>in.close();</p>
				<p>return buffer.toString();</p>
				<p>}</p>
				<p>catch (IOException e) {</p>
				<p>e.printStackTrace();</p>
				<p>return null;</p>
				<p>}</p>
				<p>}</p>
				<p>}</p>
				<p>?</p>
				<p>编码转化的过程如下：</p>
				<p>GB2312------------------&gt;Unicode-------------&gt;Big5</p>
				<p>执行 java gb2big5 gb.txt big5.txt ，如果 gb.txt 的内容是"今天星期三"，则得到的文件 big5.txt 中的字符能够正确显示；而如果 gb.txt 的内容是"情人节快乐"，则得到的文件 big5.txt 中对应于"节"和"乐"的字符都是符号"？"（0x3F），可见 sun.io.ByteToCharGB2312 和 sun.io.CharToByteBig5 这两个基本类并没有编好。</p>
		</a>
		<a name="5">
				<p>正如上例一样， Java 的基本类也可能存在问题。由于国际化的工作并不是在国内完成的，所以在这些基本类发布之前，没有经过严格的测试，所以对中文字符的支持并不像 Java Soft 所声称的那样完美。前不久，我的一位技术上的朋友发信给我说，他终于找到了 <strong>Java Servlet 中文问题的根源</strong>。两周以来，他一直为 Java Servlet 的中文问题所困扰，因为每面对一个含有中文字符的字符串都必须进行强制转换才能够得到正确的结果（这好象是大家公认的唯一的解决办法）。后来，他确实不想如此继续安分下去了，因为这样的事情确实不应该是高级程序员所要做的工作，他就找出 Servlet 解码的源代码进行分析，因为他怀疑问题就出在解码这部分。经过四个小时的奋斗，他终于找到了问题的根源所在。原来他的怀疑是正确的， Servlet 的解码部分完全没有考虑双字节，直接把 %XX 当作一个字符。（原来 Java Soft 也会犯这幺低级的错误！）</p>
				<p>如果你对这个问题有兴趣或者遇到了同样的烦恼的话，你可以按照他的步骤<strong>对</strong><strong>Servlet.jar 进行修改</strong>：</p>
		</a>
		<a name="6">
				<p>找到源代码 HttpUtils 中的 static private String parseName ，在返回前将 sb（StringBuffer） 复制成 byte bs[] ，然后 return new String(bs,"GB2312")。作上述修改后就需要自己解码了：</p>
				<p>HashTable form=HttpUtils .parseQueryString(request.getQueryString())或者</p>
				<p>form=HttpUtils.parsePostData(......)</p>
				<p>千万别忘了编译后放到 Servlet.jar 里面。</p>
				<p>五、 关于 Java 中文问题的总结</p>
				<p>Java 编程语言成长于网络世界，这就要求 Java 对多国字符有很好的支持。 Java 编程语言适应了计算的网络化的需求，为它能够在网络世界迅速成长奠定了坚实的基础。 Java 的缔造者 （Java Soft） 已经考虑到 Java 编程语言对多国字符的支持，只是现在的解决方案有很多缺陷在里面，需要我们付诸一些补偿性的措施。而世界标准化组织也在努力把人类所有的文字统一在一种编码之中，其中一种方案是 ISO10646 ，它用四个字节来表示一个字符。当然，在这种方案未被采用之前，还是希望 Java Soft 能够严格地测试它的产品，为用户带来更多的方便。</p>
		</a>
		<a name="7">
				<p>
						<strong>附</strong>一个用于从数据库和网络中取出<strong>中文乱码的处理函数</strong>，入参是有问题的字符串，出参是问题已经解决了的字符串。</p>
		</a>
<img src ="http://www.blogjava.net/passyt/aggbug/41271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-15 22:01 <a href="http://www.blogjava.net/passyt/archive/2006/04/15/41271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 几个有用的Servlet过滤器 </title><link>http://www.blogjava.net/passyt/archive/2006/04/15/41241.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sat, 15 Apr 2006 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/15/41241.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/41241.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/15/41241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/41241.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/41241.html</trackback:ping><description><![CDATA[import javax.servlet.*;<br />import javax.servlet.http.HttpServletResponse;<br />import java.io.IOException; 
<p></p><p>/**<br /> * 用于的使 Browser 不缓存页面的过滤器<br /> */<br />public class ForceNoCacheFilter<br /> implements Filter<br />{</p><p> public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException<br /> {<br />  ((HttpServletResponse) response).setHeader("Cache-Control","no-cache");<br />  ((HttpServletResponse) response).setHeader("Pragma","no-cache");<br />  ((HttpServletResponse) response).setDateHeader ("Expires", -1);<br />  filterChain.doFilter(request, response);<br /> }</p><p> public void destroy()<br /> {<br /> }</p><p>    public void init(FilterConfig filterConfig) throws ServletException<br /> {<br /> }<br />}</p><p>import javax.servlet.*;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br />import javax.servlet.http.HttpSession;<br />import java.util.List;<br />import java.util.ArrayList;<br />import java.util.StringTokenizer;<br />import java.io.IOException;</p><p>/**<br /> * 用于检测用户是否登陆的过滤器，如果未登录，则重定向到指的登录页面&lt;p&gt;<br /> * 配置参数&lt;p&gt;<br /> * checkSessionKey 需检查的在 Session 中保存的关键字&lt;br/&gt;<br /> * redirectURL 如果用户未登录，则重定向到指定的页面，URL不包括 ContextPath&lt;br/&gt;<br /> * notCheckURLList 不做检查的URL列表，以分号分开，并且 URL 中不包括 ContextPath&lt;br/&gt;<br /> */<br />public class CheckLoginFilter<br /> implements Filter<br />{<br /> protected FilterConfig filterConfig = null;<br />    private String redirectURL = null;<br /> private List notCheckURLList = new ArrayList();<br /> private String sessionKey = null;</p><p> public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException<br /> {<br />  HttpServletRequest request = (HttpServletRequest) servletRequest;<br />  HttpServletResponse response = (HttpServletResponse) servletResponse;</p><p>        HttpSession session = request.getSession();<br />  if(sessionKey == null)<br />  {<br />   filterChain.doFilter(request, response);<br />   return;<br />  }<br />  if((!checkRequestURIIntNotFilterList(request)) &amp;&amp; session.getAttribute(sessionKey) == null)<br />  {<br />   response.sendRedirect(request.getContextPath() + redirectURL);<br />   return;<br />  }<br />  filterChain.doFilter(servletRequest, servletResponse);<br /> }</p><p> public void destroy()<br /> {<br />  notCheckURLList.clear();<br /> }</p><p> private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)<br /> {<br />  String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());<br />  return notCheckURLList.contains(uri);<br /> }</p><p> public void init(FilterConfig filterConfig) throws ServletException<br /> {<br />  this.filterConfig = filterConfig;<br />  redirectURL = filterConfig.getInitParameter("redirectURL");<br />        sessionKey = filterConfig.getInitParameter("checkSessionKey");</p><p>  String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");</p><p>  if(notCheckURLListStr != null)<br />  {<br />   StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");<br />   notCheckURLList.clear();<br />   while(st.hasMoreTokens())<br />   {<br />    notCheckURLList.add(st.nextToken());<br />   }<br />  }<br /> }<br />}</p><p><br />import javax.servlet.*;<br />import java.io.IOException;</p><p>/**<br /> * 用于设置 HTTP 请求字符编码的过滤器，通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题<br /> */<br />public class CharacterEncodingFilter<br /> implements Filter<br />{<br /> protected FilterConfig filterConfig = null;<br /> protected String encoding = "";</p><p> public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException<br /> {<br />        if(encoding != null)<br />         servletRequest.setCharacterEncoding(encoding);<br />  filterChain.doFilter(servletRequest, servletResponse);<br /> }</p><p> public void destroy()<br /> {<br />  filterConfig = null;<br />  encoding = null;<br /> }</p><p>    public void init(FilterConfig filterConfig) throws ServletException<br /> {<br />  this.filterConfig = filterConfig;<br />        this.encoding = filterConfig.getInitParameter("encoding");</p><p> }<br />} </p><img src ="http://www.blogjava.net/passyt/aggbug/41241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-15 16:33 <a href="http://www.blogjava.net/passyt/archive/2006/04/15/41241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通用高效分页存储过程代码</title><link>http://www.blogjava.net/passyt/archive/2006/04/01/38654.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sat, 01 Apr 2006 14:21:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/01/38654.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/38654.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/01/38654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/38654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/38654.html</trackback:ping><description><![CDATA[
		<p>-- 获取指定页的数据 <br />CREATE PROCEDURE pagination<br />@tblName varchar(255), -- 表名 <br />@strGetFields varchar(1000) = '*', -- 需要返回的列 <br />@fldName varchar(255)='', -- 排序的字段名 <br />@PageSize int = 10, -- 页尺寸 <br />@PageIndex int = 1, -- 页码 <br />@doCount bit = 0, -- 返回记录总数, 非 0 值则返回 <br />@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序 <br />@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where) <br />AS </p>
		<p>declare @strSQL varchar(5000) -- 主语句 <br />declare @strTmp varchar(110) -- 临时变量 <br />declare @strOrder varchar(400) -- 排序类型 <br />if @doCount != 0 <br />begin <br />if @strWhere !='' <br />set @strSQL = "select count(*) as Total from [" + @tblName + "] where "<a href="mailto:+@strWhere">+@strWhere</a><br />else <br />set @strSQL = "select count(*) as Total from [" + @tblName + "]" <br />end <br />--以上代码的意思是如果@doCount传递过来的不是0，就执行总数统计。以下的所有代码都是@doCount为0的情况 </p>
		<p>else <br />begin <br />if @OrderType != 0 <br />begin <br />set @strTmp = "&lt;(select min" <br />set @strOrder = " order by [" + @fldName +"] desc" <br />--如果@OrderType不是0，就执行降序，这句很重要！ <br />end </p>
		<p>else <br />begin <br />set @strTmp = "&gt;(select max" <br />set @strOrder = " order by [" + @fldName +"] asc" <br />end <br />if @PageIndex = 1 <br />begin <br />if @strWhere != '' <br />set @strSQL = "select top " + str(@PageSize) +" "<a href="mailto:+@strGetFields">+@strGetFields</a>+ " from [" + @tblName + "] where " + @strWhere + " " + @strOrder <br />else <br />set @strSQL = "select top " + str(@PageSize) +" "<a href="mailto:+@strGetFields">+@strGetFields</a>+ " from ["+ @tblName + "] "+ @strOrder <br />--如果是第一页就执行以上代码，这样会加快执行速度 <br />end </p>
		<p>else <br />begin <br />--以下代码赋予了@strSQL以真正执行的SQL代码 <br />set @strSQL = "select top " + str(@PageSize) +" "<a href="mailto:+@strGetFields">+@strGetFields</a>+ " from [" <br />+ @tblName + "] where [" + @fldName + "]" + @strTmp + "(["+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["+ @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"+ @strOrder <br />if @strWhere != '' <br />set @strSQL = "select top " + str(@PageSize) +" "<a href="mailto:+@strGetFields">+@strGetFields</a>+ " from [" <br />+ @tblName + "] where [" + @fldName + "]" + @strTmp + "([" <br />+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " [" <br />+ @fldName + "] from [" + @tblName + "] where " + @strWhere + " " <br />+ @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder <br />end <br />end <br />exec (@strSQL)<br />GO</p>
		<p>
				<br /> </p>
<img src ="http://www.blogjava.net/passyt/aggbug/38654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-01 22:21 <a href="http://www.blogjava.net/passyt/archive/2006/04/01/38654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>变态级JAVA程序员面试32问</title><link>http://www.blogjava.net/passyt/archive/2006/04/01/38653.html</link><dc:creator>与笑凌</dc:creator><author>与笑凌</author><pubDate>Sat, 01 Apr 2006 14:19:00 GMT</pubDate><guid>http://www.blogjava.net/passyt/archive/2006/04/01/38653.html</guid><wfw:comment>http://www.blogjava.net/passyt/comments/38653.html</wfw:comment><comments>http://www.blogjava.net/passyt/archive/2006/04/01/38653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/passyt/comments/commentRss/38653.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/passyt/services/trackbacks/38653.html</trackback:ping><description><![CDATA[
		<p>        第一，谈谈final, finally, finalize的区别。 <br />　　<br />　　第二，Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)?<br />　　<br />　　第三，Static Nested Class 和 Inner Class的不同，说得越多越好(面试题有的很笼统)。<br />　　<br />　　第四，&amp;和&amp;&amp;的区别。<br />　　<br />　　第五，HashMap和Hashtable的区别。<br />　　<br />　　第六，Collection 和 Collections的区别。<br />　　<br />　　第七，什么时候用assert。<br />　　<br />　　第八，GC是什么? 为什么要有GC? <br />　　<br />　　第九，String s = new String("xyz");创建了几个String Object?<br />　　<br />　　第十，Math.round(11.5)等於多少? Math.round(-11.5)等於多少?<br />　　<br />　　第十一，short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?<br />　　<br />　　第十二，sleep() 和 wait() 有什么区别?<br />　　<br />　　第十三，Java有没有goto?<br />　　<br />　　第十四，数组有没有length()这个方法? String有没有length()这个方法?<br />　　<br />　　第十五，Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?<br />　　<br />　　第十六，Set里的元素是不能重复的，那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?<br />　　<br />　　第十七，给我一个你最常见到的runtime exception。<br />　　<br />　　第十八，error和exception有什么区别?<br />　　<br />　　第十九，List, Set, Map是否继承自Collection接口?<br />　　<br />　　第二十，abstract class和interface有什么区别?<br />　　<br />　　第二十一，abstract的method是否可同时是static,是否可同时是native，是否可同时是synchronized?<br />　　<br />　　第二十二，接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?<br />　　<br />　　第二十三，启动一个线程是用run()还是start()?<br />　　<br />　　第二十四，构造器Constructor是否可被override?<br />　　<br />　　第二十五，是否可以继承String类?<br />　　<br />　　第二十六，当一个线程进入一个对象的一个synchronized方法后，其它线程是否可进入此对象的其它方法?<br />　　<br />　　第二十七，try {}里有一个return语句，那么紧跟在这个try后的finally {}里的code会不会被执行，什么时候被执行，在return前还是后?<br />　　<br />　　第二十八，编程题: 用最有效率的方法算出2乘以8等於几?<br />　　<br />　　第二十九，两个对象值相同(x.equals(y) == true)，但却可有不同的hash code，这句话对不对?<br />　　<br />　　第三十，当一个对象被当作参数传递到一个方法后，此方法可改变这个对象的属性，并可返回变化后的结果，那么这里到底是值传递还是引用传递?<br />　　<br />　　第三十一，swtich是否能作用在byte上，是否能作用在long上，是否能作用在String上?<br />　　<br />　　第三十二，编程题: 写一个Singleton出来。</p>
		<p>
				<br />＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝</p>
		<p>以下是答案：</p>
		<p>＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝</p>
		<p>第一，谈谈final, finally, finalize的区别。<br />　　final—修饰符（关键字）如果一个类被声明为final，意味着它不能再派生出新的子类，不能作为父类被继承。因此一个类不能既被声明为 abstract的，又被声明为final的。将变量或方法声明为final，可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值，而在以后的引用中只能读取，不可修改。被声明为final的方法也同样只能使用，不能重载<br />　　finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常，那么相匹配的 catch 子句就会执行，然后控制就会进入 finally 块（如果有的话）。<br />　　finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的，因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。<br />　　<br />　　第二，Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)?<br />　　匿名的内部类是没有名字的内部类。不能extends(继承) 其它类，但一个内部类可以作为一个接口，由另一个内部类实现。<br />　　<br />　　第三，Static Nested Class 和 Inner Class的不同，说得越多越好(面试题有的很笼统)。<br />　　Nested Class （一般是C++的说法），Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&amp;page=1<br />　　注： 静态内部类（Inner Class）意味着1创建一个static内部类的对象，不需要一个外部类对象，2不能从一个static内部类的一个对象访问一个外部类对象<br />　　Hashtable继承自Dictionary类，而HashMap是Java1.2引进的Map interface的一个实现 </p>
		<p>　　HashMap允许将null作为一个entry的key或者value，而Hashtable不允许 </p>
		<p>　　还有就是，HashMap把Hashtable的contains方法去掉了，改成containsvalue和containsKey。因为contains方法容易让人引起误解。 </p>
		<p>　　最大的不同是，Hashtable的方法是Synchronize的，而HashMap不是，在 <br />多个线程访问Hashtable时，不需要自己为它的方法实现同步，而HashMap <br />就必须为之提供外同步。<br />　　第四，&amp;和&amp;&amp;的区别。<br />　　&amp;是位运算符。&amp;&amp;是布尔逻辑运算符。<br />　　<br />　　第五，HashMap和Hashtable的区别。<br />　　都属于Map接口的类，实现了将惟一键映射到特定的值上。<br />　　HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。 <br />　　Hashtable 类似于 HashMap，但是不允许 null 键和 null 值。它也比 HashMap 慢，因为它是同步的。<br />　　Hashtable继承自Dictionary类，而HashMap是Java1.2引进的Map interface的一个实现 </p>
		<p>　　还有就是，HashMap把Hashtable的contains方法去掉了，改成containsvalue和containsKey。因为contains方法容易让人引起误解。 </p>
		<p>　　最大的不同是，Hashtable的方法是Synchronize的，而HashMap不是，在 <br />多个线程访问Hashtable时，不需要自己为它的方法实现同步，而HashMap <br />就必须为之提供外同步。 </p>
		<p>　　第六，Collection 和 Collections的区别。<br />　　Collections是个java.util下的类，它包含有各种有关集合操作的静态方法。<br />　　Collection是个java.util下的接口，它是各种集合结构的父接口.<br />　　第七，什么时候用assert。<br />　　断言是一个包含布尔表达式的语句，在执行这个语句时假定该表达式为 true。如果表达式计算为 false，那么系统会报告一个 AssertionError。它用于调试目的： <br />　　assert(a &gt; 0); // throws an AssertionError if a &lt;= 0 <br />　　断言可以有两种形式： <br />　　assert Expression1 ; <br />　　assert Expression1 : Expression2 ; <br />　　Expression1 应该总是产生一个布尔值。 <br />　　Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。<br />　　断言在默认情况下是禁用的。要在编译时启用断言，需要使用 source 1.4 标记： <br />　　javac -source 1.4 Test.java<br />　　要在运行时启用断言，可使用 -enableassertions 或者 -ea 标记。 <br />　　要在运行时选择禁用断言，可使用 -da 或者 -disableassertions 标记。 <br />　　要系统类中启用断言，可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。 <br />　　可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过，断言不应该用于验证传递给公有方法的参数，因为不管是否启用了断言，公有方法都必须检查其参数。不过，既可以在公有方法中，也可以在非公有方法中利用断言测试后置条件。另外，断言不应该以任何方式改变程序的状态。 <br />　　<br />　　<br />　　第八，GC是什么? 为什么要有GC? (基础)。<br />　　GC是垃圾收集器。Java 程序员不用担心内存管理，因为垃圾收集器会自动进行管理。要请求垃圾收集，可以调用下面的方法之一： <br />　　System.gc()<br />　　Runtime.getRuntime().gc()<br />　　<br />　　第九，String s = new String("xyz");创建了几个String Object?<br />　　两个对象，一个是“xyx”,一个是指向“xyx”的引用对象s。<br />　　<br />　　第十，Math.round(11.5)等於多少? Math.round(-11.5)等於多少?<br />　　Math.round(11.5)返回（long）12，Math.round(-11.5)返回（long）-11;<br />　　<br />　　第十一，short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?<br />　　short s1 = 1; s1 = s1 + 1;有错，s1是short型，s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。<br />　　<br />　　第十二，sleep() 和 wait() 有什么区别? 搞线程的最爱<br />　　sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后，线程不一定立即恢复执行。这是因为在那个时刻，其它线程可能正在运行而且没有被调度为放弃执行，除非(a)“醒来”的线程具有更高的优先级<br />　　(b)正在运行的线程因为其它原因而阻塞。<br />　　wait()是线程交互时，如果线程对一个同步对象x 发出一个wait()调用，该线程会暂停执行，被调对象进入等待状态，直到被唤醒或等待时间到。<br />　　第十三，Java有没有goto?<br />　　Goto—java中的保留字，现在没有在java中使用。<br />　　<br />　　第十四，数组有没有length()这个方法? String有没有length()这个方法？<br />　　数组没有length()这个方法，有length的属性。<br />　　String有有length()这个方法。<br />　　<br />　　第十五，Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?<br />　　方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现，重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数，我们说该方法被重写 (Overriding)。子类的对象使用这个方法时，将调用子类中的定义，对它而言，父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法，它们或有不同的参数个数或有不同的参数类型，则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。<br />　　<br />　　第十六，Set里的元素是不能重复的，那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?<br />　　Set里的元素是不能重复的，那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。<br />　　equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖，为的是当两个分离的对象的内容和类型相配的话，返回真值。<br />　　<br />　　第十七，给我一个你最常见到的runtime exception。<br />　　ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, <br />　　ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException<br />　　<br />　　第十八，error和exception有什么区别?<br />　　error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。<br />　　exception 表示一种设计或实现问题。也就是说，它表示如果程序运行正常，从不会发生的情况。<br />　　第十九，List, Set, Map是否继承自Collection接口?<br />　　List，Set是<br />　　<br />　　Map不是<br />　　<br />　　第二十，abstract class和interface有什么区别?<br />　　声明方法的存在而不去实现它的类被叫做抽象类（abstract class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量，其类型是一个抽象类，并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现，否则它们也是抽象类为。取而代之，在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。<br />　　接口（interface）是抽象类的变体。在接口中，所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的，没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似，除了该实现类不能从接口定义中继承行为。当类实现特殊接口时，它定义（即将程序体给予）所有这种接口的方法。然后，它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类，它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换，instanceof 运算符可以用来决定某对象的类是否实现了接口。<br />　　<br />　　第二十一，abstract的method是否可同时是static,是否可同时是native，是否可同时是synchronized?<br />　　都不能<br />　　<br />　　第二十二，接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?<br />　　接口可以继承接口。抽象类可以实现(implements)接口，抽象类是否可继承实体类，但前提是实体类必须有明确的构造函数。<br />　　<br />　　第二十三，启动一个线程是用run()还是start()?<br />　　启动一个线程是调用start()方法，使线程所代表的虚拟处理机处于可运行状态，这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。<br />　　第二十四，构造器Constructor是否可被override?<br />　　构造器Constructor不能被继承，因此不能重写Overriding，但可以被重载Overloading。<br />　　<br />　　第二十五，是否可以继承String类?<br />　　String类是final类故不可以继承。<br />　　<br />　　第二十六，当一个线程进入一个对象的一个synchronized方法后，其它线程是否可进入此对象的其它方法?<br />　　不能，一个对象的一个synchronized方法只能由一个线程访问。<br />　　<br />　　第二十七，try {}里有一个return语句，那么紧跟在这个try后的finally {}里的code会不会被执行，什么时候被执行，在return前还是后?<br />　　会执行，在return前执行。<br />　　<br />　　<br />　　第二十八，编程题: 用最有效率的方法算出2乘以8等於几?<br />　　有C背景的程序员特别喜欢问这种问题。<br />　　<br />　　2 &lt;&lt; 3<br />　　<br />　　第二十九，两个对象值相同(x.equals(y) == true)，但却可有不同的hash code，这句话对不对?<br />　　不对，有相同的hash code。<br />　　<br />　　第三十，当一个对象被当作参数传递到一个方法后，此方法可改变这个对象的属性，并可返回变化后的结果，那么这里到底是值传递还是引用传递? <br />　　是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时，参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变，但对象的引用是永远不会改变的。<br />　　<br />　　<br />　　第三十一，swtich是否能作用在byte上，是否能作用在long上，是否能作用在String上?<br />　　switch（expr1）中，expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。<br />　　第三十二，编程题: 写一个Singleton出来。<br />　　Singleton模式主要作用是保证在Java应用程序中，一个类Class只有一个实例存在。<br />　　一般Singleton模式通常有几种种形式:<br />　　第一种形式: 定义一个类，它的构造函数为private的，它有一个static的private的该类变量，在类初始化时实例话，通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。<br />　　public class Singleton {<br />　　private Singleton(){}<br />　　//在自己内部定义自己一个实例，是不是很奇怪？<br />　　//注意这是private 只供内部调用<br />　　private static Singleton instance = new Singleton();<br />　　//这里提供了一个供外部访问本class的静态方法，可以直接访问 <br />　　public static Singleton getInstance() {<br />　　return instance; <br />　　} <br />　　} <br />　　第二种形式: <br />　　public class Singleton { <br />　　private static Singleton instance = null;<br />　　public static synchronized Singleton getInstance() {<br />　　//这个方法比上面有所改进，不用每次都进行生成对象，只是第一次 <br />　　//使用时生成实例，提高了效率！<br />　　if (instance==null)<br />　　instance＝new Singleton();<br />　　return instance; } <br />　　} <br />　　其他形式:<br />　　定义一个类，它的构造函数为private的，所有方法为static的。<br />　　一般认为第一种形式要更加安全 </p>
		<p> </p>
<img src ="http://www.blogjava.net/passyt/aggbug/38653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/passyt/" target="_blank">与笑凌</a> 2006-04-01 22:19 <a href="http://www.blogjava.net/passyt/archive/2006/04/01/38653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>