﻿<?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-Share JAVA-随笔分类-A)   java</title><link>http://www.blogjava.net/bcims/category/7096.html</link><description>&lt;font color="red"&gt;&lt;b&gt;什么样的素质决定什么样的技术&lt;/b&gt;&lt;/font&gt; 

&lt;div style="font-size:12px;cursor:pointer"&gt; &lt;span  title="www"&gt; www.WoMenSou.com &lt;我们搜&gt;&lt;/span&gt;&lt;/div</description><language>zh-cn</language><lastBuildDate>Fri, 28 Mar 2008 19:05:25 GMT</lastBuildDate><pubDate>Fri, 28 Mar 2008 19:05:25 GMT</pubDate><ttl>60</ttl><item><title>jacob问题-大家帮我看看,先谢过！</title><link>http://www.blogjava.net/bcims/archive/2008/03/29/189395.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Fri, 28 Mar 2008 18:16:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2008/03/29/189395.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/189395.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2008/03/29/189395.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/189395.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/189395.html</trackback:ping><description><![CDATA[
		<p>首先我已经做了如下配置：<br /><b>1.</b>导入 jacob.jar 这个包。<br /><b>2.</b>把 jacob.dll 拷贝到 C:\WINDOWS\system32 目录下。<br />以上的两个文件您可以到网上<strong><font color="#ff0000"><a href="http://danadler.com/jacob/">http://danadler.com/jacob/</a> 下载的1.7的版本<br /></font></strong>jacob.jar 与 jacob.dll 版本一致。<br /><br />代码如下：<br />package one;</p>
		<p>import com.jacob.com.*;<br />import com.jacob.activeX.*;<br />import java.io.*; <br />//取得指定目录下面所有的doc文件名称<br />public class wordtohtml2 {<br /> // ------------------------------------------------------------------------------<br /> // 方法原型: change(String paths)<br /> // 功能描述: 将指定目录下面所有的doc文件转化为HTML(html文件夹必须存在)并存储在相同目录下<br /> // 输入参数: String<br /> // 输出参数: 无<br /> // 返 回 值: 无<br /> // 其它说明: 递归<br /> // ------------------------------------------------------------------------------<br /> public static void change(String paths, String savepaths) {<br />  File d = new File(paths);<br />  // 取得当前文件夹下所有文件和目录的列表<br />  File lists[] = d.listFiles();<br />  String pathss = new String("");<br />  // 对当前目录下面所有文件进行检索<br />  for (int i = 0; i &lt; lists.length; i++) {<br />   if (lists[i].isFile()) {<br />    String filename = lists[i].getName();<br />    String filetype = new String("");<br />    // 取得文件类型<br />    filetype = filename.substring((filename.length() - 3), filename.length());<br />    // 判断是否为doc文件<br />    if (filetype.equals("doc")) {<br />     System.out.println("当前正在转换......");<br />     // 打印当前目录路径<br />     System.out.println(paths);<br />     // 打印doc文件名<br />     System.out.println(filename.substring(0, (filename.length() - 4)));<br />     ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word<br />     String docpath = paths + filename;<br />     String htmlpath = savepaths + filename.substring(0, (filename.length() - 4));<br />     String inFile = docpath;<br />     // 要转换的word文件<br />     String tpFile = htmlpath;<br />     // HTML文件<br />     boolean flag = false;<br />     try {<br />      app.setProperty("Visible", new Variant(false));<br />      // 设置word不可见<br />      Dispatch docs = app.getProperty("Documents").toDispatch();<br />      Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[] {inFile, new Variant(false), new Variant(true)}, new int[1]).toDispatch();<br />      // 打开word文件<br />      Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { tpFile, new Variant(8) }, new int[1]);<br />      // 作为html格式保存到临时文件<br />      Variant f = new Variant(false);<br />      Dispatch.call(doc, "Close", f);<br />      flag = true;<br />     } catch (Exception e) {<br />      e.printStackTrace();<br />     } finally {<br />      app.invoke("Quit", new Variant[] {});<br />     }<br />     System.out.println("转化完毕！");<br />    }<br />   } else {<br />    pathss = paths;<br />    // 进入下一级目录<br />    pathss = pathss + lists[i].getName() + "\\";<br />    // 递归遍历所有目录<br />    change(pathss, savepaths);<br />   }<br />  }<br /> }<br /> public static void main(String[] args) {<br />  String paths = new String("e:\\english\\ebook\\");<br />  String savepaths = new String("e:\\english\\ebook\\");<br />  change(paths, savepaths);<br /> }<br />} <br />运行后出现的错误为：<br />com.jacob.com.ComFailException: A COM exception has been encountered:<br />At Invoke of: Documents<br />Description: An unknown COM error has occured.<br /> at com.jacob.com.Dispatch.invokev(Native Method)<br /> at com.jacob.activeX.ActiveXComponent.getProperty(ActiveXComponent.java)<br /> at one.WordtoHtml.change(WordtoHtml.java:25)<br /> at one.WordtoHtml.main(WordtoHtml.java:39)<br />Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:<br />At Invoke of: Quit<br />Description: An unknown COM error has occured.<br /> at com.jacob.com.Dispatch.invokev(Native Method)<br /> at com.jacob.activeX.ActiveXComponent.invoke(ActiveXComponent.java)<br /> at one.WordtoHtml.change(WordtoHtml.java:35)<br /> at one.WordtoHtml.main(WordtoHtml.java:39)<br /><br /><br /><font color="#ff0000"><strong>附加：下面是总结了的错误！</strong></font><br />1、如果出现下面的错误 <br />com.jacob.com.ComFailException: A COM exception has been encountered: <br />At Invoke of: Version <br />Description: An unknown COM error has occured. <br />表示dll的版本不对，换成最新版本即可。 <br />2、如果出现下面的错误 <br />no jacob in java.library.path <br />java.lang.UnsatisfiedLinkError: no jacob in java.library.path <br />表示把dll放到path下即可，设置path或是放到window/system32下 </p>
<img src ="http://www.blogjava.net/bcims/aggbug/189395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2008-03-29 02:16 <a href="http://www.blogjava.net/bcims/archive/2008/03/29/189395.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不错的Ext 2.0，推荐给各位！</title><link>http://www.blogjava.net/bcims/archive/2008/02/16/180180.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sat, 16 Feb 2008 04:53:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2008/02/16/180180.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/180180.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2008/02/16/180180.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/180180.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/180180.html</trackback:ping><description><![CDATA[前段时候朋友推荐我去下ext包看看<br />下完了看了一下文档和在网上找了些介绍的资料<br />试了一下，就是一个ajax的包，如果你用来做小项目的话，还真的不错<br />省去了你很多麻烦.....<br />具体怎么个好法的话 ，最好你还是自己试用一下<br />推荐你进<a href="http://www.cn-java.com/www1/?uid-45-action-viewspace-itemid-4263">http://www.cn-java.com/www1/?uid-45-action-viewspace-itemid-4263</a>  这个小教程<br /><br />我试了一下，效果图如下<br /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&amp;t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&amp;t=633043282327207582" width="1" border="0" /><br /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&amp;t=633043282327207582" width="1" border="0" /><br /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&amp;t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&amp;t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&amp;t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&amp;t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&amp;t=633043282327207582" width="1" border="0" /><img height="1" alt="AY~GNS81UC[2M9%U~O7XZBN.jpg" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&amp;t=633043282327207582" width="1" border="0" /><img height="331" alt="45.jpg" src="http://www.blogjava.net/images/blogjava_net/bcims/插图/45.jpg" width="546" border="0" /><img src ="http://www.blogjava.net/bcims/aggbug/180180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2008-02-16 12:53 <a href="http://www.blogjava.net/bcims/archive/2008/02/16/180180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>帐号激活实现思路</title><link>http://www.blogjava.net/bcims/archive/2008/01/27/177992.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sun, 27 Jan 2008 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2008/01/27/177992.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/177992.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2008/01/27/177992.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/177992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/177992.html</trackback:ping><description><![CDATA[账号激活主要是防止用户注册时填写假的E-mail地址，藉以账号激活将激活码发送至用户邮箱以便激活账号。 <br /><br />需要数据表的设计： <br />1，用户名（Unique） <br />2，E-mail（Unique） <br />3，激活码（Unique） <br />4，状态：1：尚待激活；2：已激活 <br /><br />在用户注册时，通过用户名、E-mail及注册时间（毫秒时间）等信息采用特定的算法，一般采用不可逆的摘要算法，如：MD5、SHA等。生成一组摘要，注册后将激活码作为URL参数，比如：<a href="http://www.abc.com/user/activation?code=123456">www.abc.com/user/activation?code=123456</a>，code的值为激活码，将这一链接发送E-mail给用户，在用户点击该链接后，通过code将这个激活码的账号状态设为“已激活”即可。由于激活码是Unique的，所以不可能出现相同的，之所以采用MD5、SHA，是由于MD5出现碰撞的概率很小，SHA则更小，而且Java中也提供了现成的类库用于产生信息摘要，使用起来比较方便。 <br /><img src ="http://www.blogjava.net/bcims/aggbug/177992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2008-01-27 10:56 <a href="http://www.blogjava.net/bcims/archive/2008/01/27/177992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun以10亿美元收购MySQL</title><link>http://www.blogjava.net/bcims/archive/2008/01/17/176043.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Thu, 17 Jan 2008 11:08:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2008/01/17/176043.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/176043.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2008/01/17/176043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/176043.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/176043.html</trackback:ping><description><![CDATA[
		<p>1月16日,Sun宣布已经与MySQL AB达成协议，以大约10亿美元收购MySQL AB，其中8亿美元现金收购MySQL AB的全部股权，另外的2亿美元作为期权。 </p>
		<p>MySQL负责开发社区的副总裁 Kaj 在他的blog中分析了这单交易对于MySQL的用户、核心社区以及公司员工会带来哪些影响，还发表了他与MySQL的两位创始人Monty和David关于此事的交谈。 </p>
		<p>MySQL总部位于瑞典，在全球25个国家共有约400名员工。交易完成之后，MySQL首席执行官马顿·尼科斯(Marten Mickos)将加盟Sun管理层。Sun一直是开放源代码软件的坚定支持者，该公司希望通过这一模式从软件业务获得更多营收。在此之前，Sun一直为MySQL的竞争对手PostgreSQL销售支持服务。 </p>
		<p>对于Sun来说，收购MySQL有助于该公司更好地为开放源代码网络应用平台LAMP提供支持。LAMP是Linux操作系统、Apache网络服务器、MySQL数据库和PHP/Perl编程语言的首字母缩写。这一交易预计将于2008年第三季度或第四季度完成，如何获得足够的现金，对于Sun来说将是第一要务。Sun首席执行官乔纳森·舒瓦茨(Jonathan Schwartz)表示，在交易完成之前，该公司就将开始为MySQL客户提供支持服务。</p>
<img src ="http://www.blogjava.net/bcims/aggbug/176043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2008-01-17 19:08 <a href="http://www.blogjava.net/bcims/archive/2008/01/17/176043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat5.5.16环境下虚拟目录的设置</title><link>http://www.blogjava.net/bcims/archive/2007/12/26/170727.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Wed, 26 Dec 2007 13:57:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/12/26/170727.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/170727.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/12/26/170727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/170727.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/170727.html</trackback:ping><description><![CDATA[
		<p>假如，现在要建一个名为 jsp 的虚拟目录，物理目录为D:\jsp，如果tomcat5.5安装在D:\Tomcat 5.5，则找到tomcat安装目录下的conf\Catalina\localhost文件夹，在里面新加名为 jsp.xml 的xml文件，文件内容如下：</p>
		<p>&lt;Context path="/jsp" docBase="d:/jsp" reloadable="true" crossContext="true" debug="0" &gt;&lt;/Context&gt;</p>
		<p>注意：1、xml的文件名必须和虚拟目录相同<br />          2、一个xml文件只能设置一个Context path<br /> </p>
<img src ="http://www.blogjava.net/bcims/aggbug/170727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-12-26 21:57 <a href="http://www.blogjava.net/bcims/archive/2007/12/26/170727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MYSQL-FRONT 3.2 注册码</title><link>http://www.blogjava.net/bcims/archive/2007/12/26/170436.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Tue, 25 Dec 2007 18:23:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/12/26/170436.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/170436.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/12/26/170436.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/170436.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/170436.html</trackback:ping><description><![CDATA[
		<p>虽然front停止开发了，但仍然是一个不错的工具....<br /></p>
		<p>复制以下内容到mysql front 上</p>
		<div class="UBBContent">aLuo8QAslIZw/xEq9+A4LczWqdUdCq/fS<br />AgwKBpvj3uLonNP5NnixM+qDj3Od1JzPf<br />m5XpDptwF2zNsIq1PSLNmp9OLRHpT/zke<br />By4M6aBTTrNA9bnX4hb9RPpT1nIViykZb<br />iYO/dc33UNBt6MTQX+F8xIrmVrIPkCvS6<br />AaQAwOb+LgykeD7iwLDkUCvTXlP5HHHTY<br />whtg6+VKRTas04Wm8zvzQnxFNjOpF8F0e<br />Bo2wNmKtGz/o8V5lbqTq0cisaqzfb55lH<br />54i6NDGb4DhCVg== </div>
<img src ="http://www.blogjava.net/bcims/aggbug/170436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-12-26 02:23 <a href="http://www.blogjava.net/bcims/archive/2007/12/26/170436.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>msn登录不了错误代码80048820扩展错误代码 80048412</title><link>http://www.blogjava.net/bcims/archive/2007/12/05/165473.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Wed, 05 Dec 2007 05:43:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/12/05/165473.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/165473.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/12/05/165473.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/165473.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/165473.html</trackback:ping><description><![CDATA[
		<p>昨天来登陆MSN的时候，突然登陆不上了，出现了问题。<br />主要是时间不对的问题。<br />最有可能的原因： 系统时间错误 返回信息：80048820,总是说防火墙设置阻止MSN的连接。但在MSN的网络连接测试中都是成功。 解决方法：系统日期不对造成的！！！！，请你认真查看是否在你升级到MSN7.5以后，系统日期变成了2004年，如果是直接将系统日期改成现在的时间。 点击右下角系统时间设置为当前正确时间。OK！<br />下面是解决的方法....<br />下面引用官方关于该代码的答复： <br />How to fix error code 80048820 <br />Problem description <br />When you start MSN Messenger you cannot sign in, and you get the message: <br />Sorry, we were unable to sign you in to the MSN Messenger at this time. Please try again later. To let us try and troubleshoot the problem, click the Troubleshoot button. 80048820 <br />Fix this error / possible solution <br />This error seems to indicate a problem with MSN Messenger's encryption routines. <br />The usual cause is that the time on your computer is not correct. To correct the time on your computer, double-click the clock in the bottom right of your screen, in the window that appears you should check both the time and date. If you use Windows XP, you can automatically correct the time by clicking the "Internet Time" tab, next click the "Update Now" button. <br />If you still have problems connecting with the time adjusted, try to run this file. This will make sure MSN Messenger can find all the files it needs on your computer. <br />中文大概意思：当你的MSN 无法登录，且提示错误代码为80048820，这种问题一般是由于你的系统时间不对，先校准系统时间，如果仍然无法登录，可能是由于DLL文件注册信息丢失，下载这个批处理文件 <a href="http://www.msn-problems.com/downloads/register-messenger-dll-files.bat">http://www.msn-problems.com/downloads/register-messenger-dll-files.bat</a> 运行一下，问题应该可以解决<br /><br />然后教你怎么样。。。。<br />This register-messenger-dll.bat file will register DLL files required for Messenger.<br />To run it simply doubleclick, or click it with right mouse and select Open.</p>
		<p>For your safety, it is advised you only download the file from imzers.com<br />You can always have a look at it's content by opening it with any text editor.</p>
		<p>It will execute the following commands:<br />regsvr32 softpub.dll<br />regsvr32 Wintrust.dll<br />regsvr32 Initpki.dll<br />regsvr32 Dssenh.dll<br />regsvr32 Rsaenh.dll<br />Regsvr32 Gpkcsp.dll<br />Regsvr32 Sccbase.dll<br />Regsvr32 Slbcsp.dll<br />Regsvr32 Mssip32.dll<br />Regsvr32 Cryptdlg.dll</p>
		<p>You can also do this by hand. Click Start, and then press Run...<br />Now type: 'regsvr32 softpub.dll' and click OK or press ENTER. <br />Repeat with all other lines as shown above.</p>
		<p>Have fun using Messenger!</p>
<img src ="http://www.blogjava.net/bcims/aggbug/165473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-12-05 13:43 <a href="http://www.blogjava.net/bcims/archive/2007/12/05/165473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个很酷也很实用的RIA工具，在线visio </title><link>http://www.blogjava.net/bcims/archive/2007/11/16/160881.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Thu, 15 Nov 2007 17:55:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/11/16/160881.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/160881.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/11/16/160881.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/160881.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/160881.html</trackback:ping><description><![CDATA[
		<p>在JAVAEYE上看到这个工具，感觉不错，收起来跟朋友共享，感谢JAVAEYE.........<br />有了这个工具，如果没有装visio，在线画画吧，真不错！<br /></p>
		<p>
				<a href="http://www.best4c.com/" target="blank">best4c.com 最好的web画图工具</a>
		</p>
		<p>Best4C提供的功能与微软的流程图制作工具Visio类似,这是一款新上线的来自于国内网络工具,目前提供基础图形、流程图、网络图、家居设计图、办公室布局图,UML图多个种类,每种种类都提供了相应的模版.能够让你随时,随地的方便的创建,修改,分享各种图表.Best4c图表可以使消息变得更为简练,帮助人们记住要点,同时帮助人们跨越文化和技术障碍. <br /><br />1 方便的在线画图和分享 <br />2 拖拽灵活，强大的桌面软件体验 <br />3 无需下载安装，兼容FireFox,IE,Opera,Safari <br />4 能够为您的图导出PDF和PNG格式并且能够迅速的复制到Word,Excel,Powerpoint中。 <br />5 强大的协同平台（邀请他人编辑或查看您的图，并且可以保存所有的修改版本） <br />6 灵活的模版，能够轻松画出 流程图，室内布置图，网络图，UML图等多种图形</p>
		<p>
				<a href="http://lifthand.javaeye.com/blog/140311" target="blank">大家可以点此看看在JavaEye blog的实际效果</a>
		</p>
		<p>
				<img src="http://www.cnbeta.com/upimg/070819/ugmbbc_210500.jpg" border="0" />
		</p>
		<p>
				<img src="http://www.cnbeta.com/upimg/070819/ugmbbc_210509.jpg" border="0" />
		</p>
		<p>这个产品 随着是联想中央研发机构--联想研究院网站<a href="http://www.javaeye.com/news/lenovolabs.com" target="blank">lenovolabs.com</a>一起 推出的。据悉，这是联想研究院是为了探索互联网技术而开设的网站，采取了Web2.0模式，走的是SaaS“软件就是服务”的路线。 </p>
<img src ="http://www.blogjava.net/bcims/aggbug/160881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-11-16 01:55 <a href="http://www.blogjava.net/bcims/archive/2007/11/16/160881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache目录浏览设置</title><link>http://www.blogjava.net/bcims/archive/2007/10/29/156563.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sun, 28 Oct 2007 18:15:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/10/29/156563.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/156563.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/10/29/156563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/156563.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/156563.html</trackback:ping><description><![CDATA[
		<p>用途：在目录下如果没有默认首页面（如index.html default.htm）时防止用户访问web时浏览目录<br />打开httpd.conf<br />查找Options Indexes FollowSymLinks<br />修改为：<br />Options <font color="#ff0000">-</font>Indexes FollowSymLinks</p>
		<p>修改保存退出，重新启动apache<br />访问<a href="http://127.0.0.1/">http://127.0.0.1</a>如果看到以下提示说明修改成功</p>
		<h1>Forbidden</h1>
		<p>You don't have permission to access / on this server.</p>
		<hr />
		<address>Apache/2.0.53 (Unix) Server at 192.168.0.1Port 80</address>
		<address>
				<address> </address>
				<address> </address>
				<address> </address>
				<address>开启浏览:</address>
				<address>&lt;Directory /&gt;<br />    Options FollowSymLinks<br />    AllowOverride None<br />    <font color="#ff0000">Options Indexes           #就加这句就可以了,目录按需要选择</font><br />&lt;/Directory&gt;</address>
		</address>
<img src ="http://www.blogjava.net/bcims/aggbug/156563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-10-29 02:15 <a href="http://www.blogjava.net/bcims/archive/2007/10/29/156563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>很形象的接口的使用——针对初学者 </title><link>http://www.blogjava.net/bcims/archive/2007/09/15/145322.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sat, 15 Sep 2007 03:05:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/09/15/145322.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/145322.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/09/15/145322.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/145322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/145322.html</trackback:ping><description><![CDATA[里氏代换原则是什么？听起来很高深，不过我们也不是什么学院派，就不讲大道理了，直接拿个例子来说一下。<br />我们拿人和程序员举个例子。人是一个大类，程序员是继承自人的子类。看看这句话：人需要吃饭。这句话我们把“人”换成“程序员”，就是：程序员需要吃饭，这样换不会有什么问题。现在我们反过来，把“程序员可以用计算机写程序”里边的程序员换成“人”，就是：人可以用计算机写程序。这样就不一定正确了，否则问题可就大了，我们这些程序员只怕没得饭吃了。<br />这个就是里氏代换原则：使用父类的地方肯定可以用它的一个子类来替换掉，但是使用一个子类的时候用它的父类来替换就不一定正确了。<br />好，现在我们回到程序设计里边来。<br />看看下面的程序：<br />一个学校里边，有两种人：学生、老师。他们都要吃饭和睡觉。
<div><br />public interface 人{<br />    void 吃饭();<br />    void 睡觉();<br />}</div><div> </div><div>public class 学生 implements 人{<br />    public void 吃饭(){<br />        //去食堂吃饭<br />    }<br />    public void 睡觉(){<br />        //回寝室睡觉<br />    }<br />    ...//其他特有方法，比如泡妞、打游戏<br />}</div><div> </div><div>public class 老师 implements 人{<br />    public void 吃饭(){<br />        //回家吃饭<br />    }<br />    public void 睡觉(){<br />        //回家睡觉<br />    }<br />    ...//其它特有方法，比如为生儿育女传宗接代的历史使命努力等不足为外人道的事情<br />}</div><div> </div><div>public class 学校{<br />    public void 开饭(人 ren){<br />        ren.吃饭();<br />    }</div><div>    public void 放学(人 ren){<br />        ren.睡觉();<br />    }<br />}</div><div> </div><div>这里就用到了里氏代换原则，"开饭()"和"放学()"的参数都是人，那么这个地方如果换成学生和老师肯定也可以。</div><div> </div><div>人 a = new 学生();<br />学校.开饭(a);<br />学校.放学(a);</div><div> </div><div>这样执行的结果就是学生回寝室吃饭。</div><div> </div><div>人 b = new 老师();<br />学校.开饭(b);<br />学校.放学(b);</div><div> </div><div>这样执行的结果就是老师回家吃饭。</div><div> </div><div>为什么要这样写呢？这样写有什么好处呢？<br />我在开饭的时候完全可以直接调用"学生.吃饭();"、"老师.吃饭();"啊。<br />接着看。<br />有一天，学校里来了第三种人，家长。<br />家长既不是去寝室睡觉也不是回家睡觉，而是旅馆睡觉，既不是去食堂吃饭也不是回家吃饭，而是去下馆子。<br />这个时候学校这个系统该怎么处理呢？<br />如果原来没有定义"人"这个接口那就麻烦啦，所有用到人的地方代码都要改。<br />现在不一样了，我可以直接定义一个类：家长，这个类实现人这个接口就可以了。<br />好，看代码：</div><div> </div><div>public class 家长 implements 人{<br />    public void 吃饭(){<br />        //下馆子<br />    }<br />    public void 睡觉(){<br />        //去旅馆睡觉<br />    }<br />    ...//其它特有方法，比如会见老师，晓之以钱，动之以利等等，不一而足<br />}</div><div> </div><div>在调用的时候不需要修改任何代码，还和原来一样：</div><div> </div><div>人 c=new 家长();<br />学校.开饭(c);<br />学校.放学(c);</div><div> </div><div>轻松搞定家长的食宿问题！</div><div> </div><div>这样一来学校来再多的客人都没关系啊，绝对可以应付自如，这也就是传说中的可扩展性！</div><div>不知道初学者看到这里是不是能够明白接口的作用。如果你还不明白，那么你把人这个接口去掉，自己写一个学校开饭和放学的类，然后再加一个家长这个新新人类进去，看看你的代码是什么样子的，再想一下在人口这么多的中国，万一哪天你的学校里来了成千上万个新新人类你该怎么办！</div><img src ="http://www.blogjava.net/bcims/aggbug/145322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-09-15 11:05 <a href="http://www.blogjava.net/bcims/archive/2007/09/15/145322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>时刻关注RFID的发展</title><link>http://www.blogjava.net/bcims/archive/2007/08/08/135319.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Wed, 08 Aug 2007 11:10:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/08/08/135319.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/135319.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/08/08/135319.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/135319.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/135319.html</trackback:ping><description><![CDATA[　这几年来，科学技术的飞速发展的同时也正改变着人们的生活。我还记得小时候买东西，商品上基本上是没有什么识别码的，现在基本有了条型码，给商品的销售，识别，存储等各方面带来了方便，RFID技术 的诞生将再一次给人们带来极大的便利，RFID正在向日常生活和工作的各个方面快速渗透。国内对RFID技术和应用的研究在经历了概念认知，技术储备，产品研发，业务摸索等阶段之后，对RFID的认识越趋理性化，而随着国内RFID标准的制订和明确，中国RFID将得到更快速的发展。 
<p>　　谈到RFID，不能不提沃尔玛。作为供货强制令的始作俑者，沃尔玛在2005年的应用整体情况看好。来自沃尔玛的报告表明，截至到2005年6月，在美国的沃尔玛104家超市、36家山姆会员店和36个配送中心已经使用了RFID技术，同时参与这个项目的已有130个供应商，55000个托盘，并已收到贴有标签的货箱189万个，这一应用状况已大大超过了沃尔玛的预期。而根据阿肯色大学最近一项长达7个月的研究发现，在使用RFID标签的沃尔玛商场里面的货品脱销现象减少16%，RFID技术在货品补充上要比传统条形码技术快3倍。<br /><br />      之所以国外一些公司提出这样的要求是因为普遍使用的条形码标签其致命缺陷是其低存储容量和不能重新编程的特点。 <br />技术上讲更好的方案是在硅芯片之上存储数据。我们日常生活中在用的最常见的电子数据设备是接触式IC卡(电话卡，银行卡等)。然是机械接触的IC卡却限制了其适用性。在数据承载设备和阅读器之间的非接触式数据传输可以带来更大的灵活性。在理想情况下，用于操作数据承载设备所需的电力也可以通过非接触方式从阅读器进行传输。因为用于传输数据和电力的方式，非接触ID 系统也称为是<em>RFID </em><em>系统</em>(射频识别)。 活跃在RFID系统领域中进行开发和销售的公司的数量说明了这是一个应该认真对待的市场。<em>RFID </em><em>市场因此成为射频技术领域</em> （还包括移动电话和无绳电话）增长最快的领域。 <br /><img height="351" alt="clip_image002_0001.jpg" src="http://www.blogjava.net/images/blogjava_net/steelhand/rfid/clip_image002_0001.jpg" width="576" border="0" /><br />               <font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">   </font><a id="_Toc120083992" name="_Toc120083992"><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">图</font></a><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff"> 1 RFID的应用市场增长</font><br />并且，近年来，非接触识别已经发展成一本独立的交叉学科，它整合了多种完全不同的领域：高频技术和EMC，半导体技术，数据保护和加密，通信，制造科学和其他相关领域的技术。 </p><h2><a id="_Toc120084060" name="_Toc120084060">自动识别系统Automatic Identification Systems</a>）</h2><p><img height="320" alt="clip_image004_0001.jpg" src="http://www.blogjava.net/images/blogjava_net/steelhand/rfid/clip_image004_0001.jpg" width="448" border="0" /><br />               <a id="_Toc120083993" name="_Toc120083993"><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">图</font></a><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">2 主要的自动识别技术</font></p><h3><a id="_Toc120084061" name="_Toc120084061">条形码系统</a></h3><p>条形码系统（Bar Code System）在过去20年历牢牢的统治着识别系统领域。 据专家估计，在上世界90年代早期，条形码系统在西欧的总容量曾达到30亿德国马克。 <br />条形码是由平行排列的线条和间隔所组成的二进制编码。它们根据预定的模式进行排列并且表达相应记号系统的数据项。宽窄不同的线条和间隔的排列次序可以解释成数字或者字母。它可以进行光学扫描阅读，即根据黑色线条和白色间隔对激光的不同反射来识别。但是尽管其物理原理相似，目前在用的大约有10数种不同的编码和布局方案。 <br />最流行的条形码方案是<em>EAN </em><em>编码</em> (欧洲物体编码)，它在1976年设计，本来针对杂货店。EAN 编码是美国UPC (通用产品编码)的发展。今天， UPC表达为EAN 编码的子集，并且可以兼容之。 <br />EAN 编码由13位数字组成：国家标识符，公司标识符，制造商的物品标识符和校验位。如图3： <br /><img height="183" alt="clip_image005.jpg" src="http://www.blogjava.net/images/blogjava_net/steelhand/rfid/clip_image005.jpg" width="451" border="0" /><br />                    <a id="_Toc120083994" name="_Toc120083994"><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">图表</font></a><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff"> 3  EAN编码的条形码实例</font><br />除了EAN 之外，下列条形码在各种领域也很流行：</p><ul><li>Code Codabar: 医学和临床应用，以及高安全需求的领域 
</li><li>Code 2/5 interleaved: 自动化工业， 货物存储，货盘， 装船容器和重工业。 
</li><li>Code 39: 流程工业，物流， 大学和图书馆。 </li></ul><p align="center"><img height="142" alt="clip_image007.jpg" src="http://www.blogjava.net/images/blogjava_net/steelhand/rfid/clip_image007.jpg" width="168" border="0" /><br /><a id="_Toc120083995" name="_Toc120083995"><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">图</font></a><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">4  ISBN统一书号代码</font><br />由于一维条码的信息容量很小，如商品上的条码仅能容纳几位或者几十位阿拉伯数字或字母，商品的详细描述只能依赖数据库提供，离开了预先建立的数据库，一维条码的使用就受到了局限。基于这个原因，人们迫切希望发明一种新的码制，除具备一维条码的优点外，同时还有信息容量大、可靠性高、保密防伪性强等优点。为了满足人们的这种需求，美国Symbol公司经过几年的努力，于1991年正式推出名为PDF417的二维条码，简称为PDF417条码（见下图），即 “便携式数据文件”。 <br /><img height="107" alt="clip_image008_0001.jpg" src="http://www.blogjava.net/images/blogjava_net/steelhand/rfid/clip_image008_0001.jpg" width="295" border="0" /><br /><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">图表5 二维条码PDF417</font><br />PDF417条码是一种高密度、高信息含量的便携式数据文件，是实现证件及卡片等大容量、高可靠性信息自动存储、携带并可用机器自动识读的理想手段。PDF417条码具有如下特点： </p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">信息容量大</font></li></ul><p>根据不同的条空比例每平方英寸可以容纳<strong>250</strong><strong>到</strong><strong>1100</strong>个字符。在国际标准的证卡有效面积上(相当于信用卡面积的2/3，约为76mm＊25mm), PDF417条码可以容纳1848个字母字符或2729个数字字符，约500个汉字信息。这种二维条码比普通条码信息容量高几十倍。 </p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">编码范围广</font></li></ul><p>PDF417条码可以将照片、指纹、掌纹、签字、声音、文字等凡可数字化的信息进行编码。 </p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">保密、防伪性能较好</font></li></ul><p>PDF417条码具有多重防伪特性，它可以采用密码防伪、软件加密及利用所包含的信息如指纹、照片等进行防伪，因此具有极强的保密防伪性能。 </p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">译码可靠性高</font></li></ul><p>普通条码的译码错误率约为百万分之二左右，而PDF417条码的误码率不超过千万分之一，译码可靠性极高。 </p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">修正错误能力强</font></li></ul><p>PDF417条码采用了世界上最先进的数学纠错理论，如果破损面积不超过50％，条码由于沾污、破损等所丢失的信息，可以照常破译出丢失的信息。 </p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">容易制作且成本低</font></li></ul><p>利用现有的点阵、激光、喷墨、热敏/热转印、制卡机等打印技术，即可在纸张、卡片、PVC、甚至金属表面上印出PDF417二维条码。由此所增加的费用仅是油墨的成本，因此人们又称PDF417是“零成本”技术。 </p><ul><li><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">条码符号的形状可变</font></li></ul><p>同样的信息量，PDF417条码的形状可以根据载体面积及美工设计等进行自我调整。 <br />在我国，中国物品编码中心介绍了二维条码国家标准《四一七条码》，即GB／T17172－1997。</p><p>　　来自业界的信息表明：几家主要的国际零售商的RFID执行计划已经进入第二轮，而沃尔玛的实施时间表比预计的提前了；另外，中国的许多制造业供应商去年已经收到要求在产品贴标签的正式通知，不过每个厂商反应的方式不相同，那些在企业内部供应链上也能见到效应的更积极一些；另外，就公司参与的RFID项目也显示美国的许多沃尔玛供应商已经开始了内部供应链的应用；而在标签技术上，EPC Gen2在今年的成熟将加速其在世界范围的应用，并将推动中国的RFID应用快速发展。<br /><br />7月30日，中国RFID产业联盟副理事长、科技部张智文教授在国家金卡工程协调领导小组办公室联合信息产业部无线电管理局召开的“《800/900MHz频段射频识别(RFID)技术应用规定(试行)》宣贯会”上针对RFID的技术和标准问题讲了下面几个方面。<br /> <br /><strong>RFID在中国的应用还刚刚开始<br />中国政府各相关部委已经重视RFID发展<br />中国一定将有自己的标准体系 <br />我们仍然缺少具有自主知识产权的RFID核心技术，鼓励企业进入<br />RFID是一个庞大的系统，希望各部门，企业，社会互相配合 <br /><br /></strong>在java方面，系统RFID软件3.0与SAP NetWeaver平台Auto-ID架构组件的集成，将实现Sun与SAP RFID技术之间RFID数据网络通讯，实现从任何RFID驱动的设备到mySAP商用套件之间的无缝数据流传输。这个新软件使用了Jini基于技术的动态联网能力，即使是在苛刻的生产环境下，RFID数据也可以持续向SAP应用传输。Sun的RFID软件本质上可以与任何企业级应用相集成，包括带有SAP的Auto-ID架构的可用连接。 Java嵌入的读取器也可以利用Sun的Jini网络技术增加其它服务。Jini可以用在RFID环境中帮助读取器自我恢复和制订更高级别决策软件的自动配置。</p><p><font style="BACKGROUND-COLOR: #ff0000" color="#ffffff">在国内RFID技术也已经应用，像杭州的少部分公交和上海的液化气管理采用了RFID后，都得到了良好的效果。<br /><br />当然RFID在国内还刚开始起步，发展的空间也很大，我希望大家和我一起关注，和喜欢RFID技术的朋友一起讨论共同进步。<br /></font><br /></p><img src ="http://www.blogjava.net/bcims/aggbug/135319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-08-08 19:10 <a href="http://www.blogjava.net/bcims/archive/2007/08/08/135319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随手整理Java与C的不同点及心得</title><link>http://www.blogjava.net/bcims/archive/2007/07/29/133117.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sun, 29 Jul 2007 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/07/29/133117.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/133117.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/07/29/133117.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/133117.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/133117.html</trackback:ping><description><![CDATA[不知道从什么时候起喜欢JAVA的，从JDK1.4到现在1.6，从最基本的main()开始到现在从事J2EE的开发，从ASP做WEB程序到现在用JAVA独立开发软件，回头看一下，光阴已走，路还是这条路。<br />朋友偶尔问我C语言方面的东西，自己从来没有系统学过，有些问题一知半解，到最近几天拿着高中买的数据结构&lt;C语言版&gt;看，似乎爱上了C，程序贵在相通，万变不离其宗，上手很快。趁现在坐在客厅里吹风，有本本在，随手在网上找些资料整理一下JAVA和C的区别，但又很矛盾，如果单从语言来比较是没有什么太多意义的，一个类似寄生虫一样的东西，一个是生下来就可以跑的家伙，但我今天的BLOG还是要写，以此充数吧！至少也是我的心得。<img height="19" src="http://www.blogjava.net/Emoticons/emsmilep.gif" width="19" border="0" /><br /><br />    1． Java没有预处理指令。（如C中的#define , #include , #ifdef等）。C中的常量定义在Java中用static final来取代。<br />    2． Java中没有C中的全局变量。<br />    3． Java中的主类型的size是确定的，而C中主类型的size跟平台相关。<br />    4． Java中没有了指针，它使用了类似的句柄来取代指针，但是Java中不允许对句柄进行加减，没有取地址操作符之类的东东。<br />    5． Java有垃圾收集机制，不需要自己释放空间。<br />    6． Java没有goto语句。Java在C提供的控制语句基础上增加了异常处理和标签break和continue语句。这些可以替代goto的作用。<br />    7． C要求一个方法或块中使用的所有局部变量的定义在该方法或块的最开始处定义，而Java允许这些定义在方法或块的任意地方出现。<br />    8． Java不要求在调用一个函数以前已经定义了该函数，可以在调用点后面定义。而C有这个要求。<br />    9． Java不支持C中的strut 和 union类型。Java支持方法重载。<br />    10． Java已经支持C中的enum关键字（SE5.0就支持了）。<br />    11． Java不支持C中的bitfields能力。<br />    12． Java不支持C的typedef。<br />    13． Java不支持C的方法指针。<br />    14． Java支持可变参数表。 <br />    15，java有 Reflection ，c 没有<br />   16，java有Annotations，c没有<br />   17，java有generics，c没有<br />   16，java有interface，c没有<img src ="http://www.blogjava.net/bcims/aggbug/133117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-07-29 13:58 <a href="http://www.blogjava.net/bcims/archive/2007/07/29/133117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的软件《好易随中药管理系统》即将开源</title><link>http://www.blogjava.net/bcims/archive/2007/07/25/132302.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Wed, 25 Jul 2007 06:25:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/07/25/132302.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/132302.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/07/25/132302.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/132302.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/132302.html</trackback:ping><description><![CDATA[由于自己家里做中药的原因，已经做了两个中药管理软件了。<br />功能包含了一般药店所需的小票打印，数据分析，进销存,等功能。<br />一个是C/S版本，采用vb.net  ms-sql 2000  开发<br />另一个是B/S版本，采用struts+hibernate+spring+mysql5.2+tomcat,在性能中优化struts中action的灵活调用<br />在权限方面，采用的spring aop来进行管理，在eclipse 3.2上进行开发。<br />下面把这两个软件的界面发上面看下，因为有很多朋友要我把源代码发给他们进行参考或学习，所以我决定<br />把两个软件整理一下，过些日子在我的下一个项目（<a href="http://www.javaOs.cn">www.javaOs.cn</a>中国JAVA开源社区）中进行发布，有这方面<br />需要的朋友可以进行关注。<br />----------------------------------------------------------------------------------------------------------------------------------<br />这是C/S版本<br /><img height="767" alt="f.bmp" src="http://www.blogjava.net/images/blogjava_net/bcims/king/f.bmp" width="819" border="0" /><br /><br />------------------------------------------------------------------------------------------------------------------------------------------<br />下面这里是B/S版本<br />此图是用户登陆界面，用户登录后可以自动进行识别用户等级再进行分配权限。<br /><br /><img height="382" alt="a.bmp" src="http://www.blogjava.net/images/blogjava_net/bcims/king/a.bmp" width="583" border="0" /><br /><br /><br />这是进货管理的页面<br /><img height="627" alt="b.bmp" src="http://www.blogjava.net/images/blogjava_net/bcims/king/b.bmp" width="1260" border="0" /><br /><br />此图是从数据库查寻出来后，动态的生成饼图<br /><img height="643" alt="c.bmp" src="http://www.blogjava.net/images/blogjava_net/bcims/king/c.bmp" width="829" border="0" /><br /><br /><br />用户管理，还可以上传相片<br /><br /><br /><br /><br /><br /><img height="638" alt="d.bmp" src="http://www.blogjava.net/images/blogjava_net/bcims/king/d.bmp" width="1138" border="0" /><br /><br />添加客户<br /><br /><img height="641" alt="e.bmp" src="http://www.blogjava.net/images/blogjava_net/bcims/king/e.bmp" width="1271" border="0" /><br /><br /><br />这是对客户资料进行打印<img height="421" alt="g.bmp" src="http://www.blogjava.net/images/blogjava_net/bcims/king/g.bmp" width="1039" border="0" /><br /><br /><img src ="http://www.blogjava.net/bcims/aggbug/132302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-07-25 14:25 <a href="http://www.blogjava.net/bcims/archive/2007/07/25/132302.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate更新数据出现乱码的问题</title><link>http://www.blogjava.net/bcims/archive/2007/05/11/116885.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Fri, 11 May 2007 13:44:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/05/11/116885.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/116885.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/05/11/116885.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/116885.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/116885.html</trackback:ping><description><![CDATA[
		<p>hibernate插入数据时没有一点问题，但更新数据的时候出现乱码的问题，<br />找了好久，后来发现是这个问题。<br /><br />hibernate3使用了新的hsql解释器，使用了antlr。如果在hsql正文中直接使用中<br />文的话，会出现乱码，例如：</p>
		<p>String s = "张三";<br />String hsql = "from User where username='"+s+"'";<br />List list = session.createQuery(hsql).list;<br />这种查询不会出结果。因为整个语句在被antlr解释后会有乱码。</p>
		<p>好的写法是：<br />String s = "张三";<br />String hsql = "from User where username=?"<br />List list = session.createQuery(hsql).setString(0,s).list;<br />这就不会有问题。</p>
		<p>原因：第二种方式，是hibernate在antlr解释完了以后，再把参数传入，这个时候<br />就不会有乱码了。</p>
		<p>
				<br />即使没有这个问题，也最好不要在sql语句中带上很多的变量参数。hibernate这种<br />思想是对的：sql和变量分离开来，不要把两者混在一起。</p>
		<p>
				<br />另外，如果使用hibernate2则不会有上面的问题，因为hibernate2使用的是旧版的<br />hsql解释器。但hibernate2的语法不如hibernate3丰富。</p>
<img src ="http://www.blogjava.net/bcims/aggbug/116885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-05-11 21:44 <a href="http://www.blogjava.net/bcims/archive/2007/05/11/116885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2ee架构师</title><link>http://www.blogjava.net/bcims/archive/2007/04/28/114432.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sat, 28 Apr 2007 13:56:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/04/28/114432.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/114432.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/04/28/114432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/114432.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/114432.html</trackback:ping><description><![CDATA[
		<font color="#000000">软件架构师是软件行业中一种新兴职业，工作职责是在一个软件项目开发过程中，将客户的需求转换为规范的开发计划及文本，并制定这个项目的总体架构，指导整个开发团队完成这个计划。架构师的主要任务不是从事具体的软件程序的编写，而是从事更高层次的开发构架工作。他必须对开发技术非常了解，并且需要有良好的组织管理能力。可以这样说，一个架构师工作的好坏决定了整个软件开发项目的成败。<br /><br />软件架构师实际上就是软件的总体设计师。首席设计师就是总设计师，打个通俗的比方：邓小平是中国改革开放的总设计师，我们用现在的说法可以讲，邓小平是中国改革开放的首席架构师。架构师的形成一定是在实践中积累起来的，而并非上了几次培训班，读了几本书就可以成功的，架构师是在工程实践中培养出来的！ <br /><br />架构师也并非是万能的。架构师是客户需求和开发者之间的桥梁。在软件行业中，一般提到的架构师是技术架构师，而忽略了领域架构师或者讲是领域工程师的概念。一个好的领域专家一定是业务领域的架构师，他能够给出某一个业务领域的架构，我们可以称为业务架构，只有技术架构和业务架构紧密结合才有可能真正创造出一个好的系统！<br /><br />架构师，首先让我想起的是高楼大厦的设计人员，通常一座大厦在建之前,都先由设计师将蓝图描绘出来，包括其形状、结构、尺寸、材料等等，然后建筑工程师带领工人们按照蓝图将大厦一层一层地建起来。<br /><br />近年来，软件领域也渐渐地流行起架构师的角色，特别是对一些大型软件产品或项目的开发，这一角色显得很关键，因为缺乏好的软件架构师而导致项目失败的例子不胜枚举，一个没有经验和能力的架构师也会使项目失败的速度加快。<br /><br />软件架构师的重要作用<br /><br />软件架构师在整个软件开发过程中都起着重要的作用，并随着开发进程的推进而其职责或关注点不断地变化，在需求阶段，软件架构师主要负责理解和管理非功能性系统需求，比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等，此外，架构师还要经常审查和客户及市场人员所提出的需求，确认开发团队所提出的设计；在需求越来越明确后，架构师的关注点开始转移到组织开发团队成员和开发过程定义上；在软件设计阶段，架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计；在编码阶段，架构师则成为详细设计者和代码编写者的顾问，并且经常性地要举行一些技术研讨会、技术培训班等；随着软件开始测试、集成和交付，集成和测试支持将成为软件架构师的工作重点；在软件维护开始时，软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。<br /><br />如何成为优秀的软件架构师<br /><br />显而易见，在软件开发过程中，一个优秀软件架构师的重要性是不应低估的。那么如何成为优秀的软件架构师呢？<br /><br />首先必须具有丰富的软件设计与开发经验，这有助于理解并解释所进行的设计是如何映射到实现中去。<br /><br />其次要具有领导能力与团队协作技能，软件架构师必须是一个得到承认的技术领导，能在关键时候对技术的选择作出及时、有效的决定。<br /><br />第三是具有很强的沟通能力，呵呵，其时这一点好象什么鬼角色都最好具备，软件架构师需要与各路人马经常打交道，客户、市场人员、开发人员、测试人员、项目经理、网络管理员、数据库工程师等等，而且在很多角色之间还要起沟通者的作用。在技术能力方面，软件架构师最重要也是最需求掌握的知识是构件通信机制方面的知识，比如远程过程调用、JAVARMI、CORBA、COM/DCOM、各种标准的通信协议、网络服务、面对对象数据库、关系数据库等等，另外，架构师应时刻注意新软件设计和开发方面的发展情况，并不断探索更有效的新方法。开发语言、设计模式和开发平台不断很快地升级，软件架构师需要吸收这些新技术新知识，并将它们用于软件系统开发工作中。当然，行业的业务知识对软件架构师也是很重要的，有助于设计<br /><br />出一个满足客户需求的体系结构，优秀的软件架构师常常因为要尽快获得对行业业务的理解而必须快速学习并且进行敏锐的观察。<br /><br />上面的描述是枯燥乏味的，但作为一个软件架构师，在整个软件系统的开发过程中是乐趣无穷的，因为这个角色很具有挑战性，有时需要左右逢源八面玲珑，有时又需要果断坚定不留情面。在国内，较少软件企业拥有独立的架构师，通常一个软件高手身兼数职，既是项目经理，又是软件架构师，还是软件开发者，有时还要客串一个测试人员，这对软件的开发周期和产品质量是不利的，有时一个人的观点立场是很片面的，而且繁重的工作、沉重的压力会影响一个人的情绪，情绪会影响决策，决策影响结果，所以值得我们三思而后行。<br /><br />构架师自我培养过程<br /><br />构架师不是通过理论学习可以搞出来的，不过不学习相关知识那肯定是不行的。总结构架师自我培养过程大致如下，仅供参考。<br /><br />1、构架师胚胎（程序员）<br />学习的知识是语言基础、设计基础、通信基础等，应该在大学完成，内容包括java、c、c++、uml、RUP、XML、socket通信（通信协议）——学习搭建应用系统所必须的原材料。 <br /><br />2、构架师萌芽（高级程序员）<br />学习分布式系统、组建等内容，可以在大学或第一年工作时间接触，包括分布式系统原理、ejb、corba、com/com+、webservice（研究生可以研究网络计算机、高性能并发处理等内容） <br /><br />3、构架师幼苗（设计师）<br />应该在掌握上述基础之上，结合实际项目经验，透彻领会应用设计模式，内容包括设计模式（c++版本、java版本）、ejb设计模式、J2EE构架、UDDI、软件设计模式等。在此期间，最好能够了解软件工程在实际项目中的应用以及小组开发、团队管理。 <br /><br />4、软件构架师的正是成型在于机遇、个人努力和天赋软件构架师其实是一种职位，但一个程序员在充分掌握软构架师所需的基本技能后，如何得到这样的机会、如何利用所掌握的技能进行应用的合理构架、如何不断的抽象和归纳自己的构架模式、如何深入行业成为能够胜任分析、构架为一体的精英人才这可不是每个人都能够遇上的馅饼……<br /><br />软件构架师职场概况<br /><br />如果您今天有幸同全球首富比尔·盖茨交换名片，您会注意到他的头衔是微软公司首席软件架构师。同样假如您得到中国首富丁磊的名片，您也会看到他的头衔是网易公司首席架构师。悄然间，架构师已经成为职场上最让人羡慕的职位。<br /><br />在我国，随着软件业规模的不断扩大，软件人才结构性矛盾将更加突出。国家人事部门预计到2005年我国软件产业的规模将达到2500亿元，全国计算机应用专业人才的需求每年将增加百万人左右。其中，架构师这样的专业高级人才每年培养人数全国不过数百名，缺口非常之大，而其中尤其以Java架构师缺口最为明显。<br /><br />众所周知，Java是当前最热门的软件开发语言，它具有跨平台、面向对象、强大的网络功能等特性。你不仅能在电脑上使用Java程序，还能在手机、PDA、家用电器上使用Java程序，甚至举世瞩目的火星车也全部采用Java技术。Java在不到10年时间内已经变成最流行的软件开发平台，最新的企业级Java 2.0版本（简称：J2EE）也成为企业应用系统上最受欢迎的开发标准。<br /><br />事实上，全世界范围内的J2EE架构师都是紧缺的人才，只是中国更加明显而已。在英国，有经验的J2EE架构师，目前平均年薪已经飙涨到七万至十万英镑。全球著名的电子商务平台提供商SilverStream软件公司的技术服务总监Mark Ashton对J2EE人才的短缺深有感受，他表示许多求职者的履历表上都有把J2EE列进去，但是仔细查看或是面试之后就会发现大多数人只是听过J2EE，并没有真正用过这些技术。信息产业部电子信息产品管理司副司长丁文武近期也表示，目前我国Java人才还远远不够，至少短缺20万。特别是随着大量软件外包业务进入中国，许多外资或中资软件企业也开始面临着高级Java人才奇缺的问题，尤其是熟悉J2EE又能掌握一门相应外语的人才成为了众多大公司争抢的对象。<br /><br />作为Java的发明者和Java开发标准的主要制定者——美国Sun公司对从事Java开发的技术人员提供了三级认证体系，即初级的程序员认证（SCJP）、中级的开发员认证（SCJD和SCWD）和高级的架构师认证（SCEA）。这也是软件行业中最权威的国际认证之一。目前国内已经有针对美国Sun公司认证体系的培训，但绝大多数主要针对初级的程序员认证，只有极少数专业培训机构能够提供三层完整培训。</font>
<img src ="http://www.blogjava.net/bcims/aggbug/114432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-04-28 21:56 <a href="http://www.blogjava.net/bcims/archive/2007/04/28/114432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>毕业设计问题之：使用JSP生成验证码 </title><link>http://www.blogjava.net/bcims/archive/2007/04/18/111784.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Wed, 18 Apr 2007 15:38:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/04/18/111784.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/111784.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/04/18/111784.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/111784.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/111784.html</trackback:ping><description><![CDATA[
		<div class="code_title">在开发中验证码是比较常用到有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试的方式。</div>
		<div class="code_title">此演示程序包括三个文件：</div>
		<div class="code_title">
				<font color="#0000ff">1.index.jsp:登录页面</font>
		</div>
		<div class="code_title">
				<font color="#0000ff">2.image.jsp:生成验证码图片页面</font>
		</div>
		<div class="code_title">
				<font color="#0000ff">3.result.jsp:结果页面<br /><font color="#000000"><font color="#0000ff">【页面显示】<br /></font><img height="377" alt="哦哦D74ED2}0.jpg" src="http://www.blogjava.net/images/blogjava_net/bcims/哦哦D74ED2}0.jpg" width="540" border="0" /><br /></font><br /><div class="code_title">【页面代码】</div><div class="code_title"><font color="#0000ff">1.index.jsp</font></div><div class="code_title"><font color="#0000ff"></font></div><div class="code_title"><font color="#ff0000"><div class="code_title">html代码</div><div class="dp-highlighter"><div class="bar"></div><ol class="dp-xml"><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>      </span></span></li><li><span></span><span class="tag">&lt;</span><span class="tag-name">form</span><span></span><span class="attribute">method</span><span>=</span><span class="attribute-value">post</span><span></span><span class="attribute">action</span><span>=</span><span class="attribute-value">"result.jsp"</span><span class="tag">&gt;</span><span>      </span></li><li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">input</span><span></span><span class="attribute">type</span><span>=</span><span class="attribute-value">text</span><span></span><span class="attribute">name</span><span>=</span><span class="attribute-value">input</span><span></span><span class="attribute">maxlength</span><span>=</span><span class="attribute-value">4</span><span class="tag">&gt;</span><span>      </span></li><li><span></span><span class="tag">&lt;</span><span class="tag-name">img</span><span></span><span class="attribute">border</span><span>=</span><span class="attribute-value">0</span><span></span><span class="attribute">src</span><span>=</span><span class="attribute-value">"image.jsp"</span><span class="tag">&gt;</span><span>      </span></li><li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">input</span><span></span><span class="attribute">type</span><span>=</span><span class="attribute-value">"submit"</span><span></span><span class="attribute">value</span><span>=</span><span class="attribute-value">"submit"</span><span class="tag">&gt;</span><span>      </span></li><li><span></span><span class="tag">&lt;/</span><span class="tag-name">form</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>  </span></li></ol></div>[注意]:</font></div><div class="code_title">(1)使用<font face="Arial"><font color="#ff6600">maxlength</font>属性来限制输入字符;</font></div><div class="code_title">(2)使用&lt;<font color="#ff6600">img&gt;</font>标签来显示生成的验证码图片.</div><div class="code_title"><font color="#0000ff"></font></div><div class="code_title"><font color="#0000ff">2.image.jsp</font></div><font color="#0000ff"><div class="code_title"><div class="bar"></div><div><ol class="dp-xml"><span><span class="tag"><ol class="dp-j"><li class="alt"><span><span>&lt;%@ page contentType=</span><span class="string">"image/JPEG"</span><span>      </span></span></li><li><span>    </span><span class="keyword">import</span><span>=</span><span class="string">"java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"</span><span>      </span></li><li class="alt"><span>      pageEncoding=</span><span class="string">"GBK"</span><span>%&gt;&lt;%!Color getRandColor(</span><span class="keyword">int</span><span> fc, </span><span class="keyword">int</span><span> bc) {</span><span class="comment">//给定范围获得随机颜色     </span><span>  </span></li><li><span>          Random random = </span><span class="keyword">new</span><span> Random();       </span></li><li class="alt"><span>        </span><span class="keyword">if</span><span> (fc &gt; </span><span class="number">255</span><span>)       </span></li><li><span>              fc = </span><span class="number">255</span><span>;       </span></li><li class="alt"><span>        </span><span class="keyword">if</span><span> (bc &gt; </span><span class="number">255</span><span>)       </span></li><li><span>              bc = </span><span class="number">255</span><span>;       </span></li><li class="alt"><span>        </span><span class="keyword">int</span><span> r = fc + random.nextInt(bc - fc);       </span></li><li><span>        </span><span class="keyword">int</span><span> g = fc + random.nextInt(bc - fc);       </span></li><li class="alt"><span>        </span><span class="keyword">int</span><span> b = fc + random.nextInt(bc - fc);       </span></li><li><span>        </span><span class="keyword">return</span><span></span><span class="keyword">new</span><span> Color(r, g, b);       </span></li><li class="alt"><span>      }%&gt;&lt;%       </span></li><li><span>    </span><span class="comment">//设置页面不缓存     </span><span>  </span></li><li class="alt"><span>      response.setHeader(</span><span class="string">"Pragma"</span><span>, </span><span class="string">"No-cache"</span><span>);       </span></li><li><span>      response.setHeader(</span><span class="string">"Cache-Control"</span><span>, </span><span class="string">"no-cache"</span><span>);       </span></li><li class="alt"><span>      response.setDateHeader(</span><span class="string">"Expires"</span><span>, </span><span class="number">0</span><span>);       </span></li><li><span>      </span></li><li class="alt"><span>    </span><span class="comment">// 在内存中创建图象     </span><span>  </span></li><li><span>    </span><span class="keyword">int</span><span> width = </span><span class="number">60</span><span>, height = </span><span class="number">20</span><span>;       </span></li><li class="alt"><span>      BufferedImage image = </span><span class="keyword">new</span><span> BufferedImage(width, height,       </span></li><li><span>              BufferedImage.TYPE_INT_RGB);       </span></li><li class="alt"><span>      </span></li><li><span>    </span><span class="comment">// 获取图形上下文     </span><span>  </span></li><li class="alt"><span>      Graphics g = image.getGraphics();       </span></li><li><span>      </span></li><li class="alt"><span>    </span><span class="comment">//生成随机类     </span><span>  </span></li><li><span>      Random random = </span><span class="keyword">new</span><span> Random();       </span></li><li class="alt"><span>      </span></li><li><span>    </span><span class="comment">// 设定背景色     </span><span>  </span></li><li class="alt"><span>      g.setColor(getRandColor(</span><span class="number">200</span><span>, </span><span class="number">250</span><span>));       </span></li><li><span>      g.fillRect(</span><span class="number">0</span><span>, </span><span class="number">0</span><span>, width, height);       </span></li><li class="alt"><span>      </span></li><li><span>    </span><span class="comment">//设定字体     </span><span>  </span></li><li class="alt"><span>      g.setFont(</span><span class="keyword">new</span><span> Font(</span><span class="string">"Times New Roman"</span><span>, Font.PLAIN, </span><span class="number">18</span><span>));       </span></li><li><span>      </span></li><li class="alt"><span>    </span><span class="comment">//画边框     </span><span>  </span></li><li><span>    </span><span class="comment">//g.setColor(new Color());     </span><span>  </span></li><li class="alt"><span>    </span><span class="comment">//g.drawRect(0,0,width-1,height-1);     </span><span>  </span></li><li><span>      </span></li><li class="alt"><span>    </span><span class="comment">// 随机产生155条干扰线，使图象中的认证码不易被其它程序探测到     </span><span>  </span></li><li><span>      g.setColor(getRandColor(</span><span class="number">160</span><span>, </span><span class="number">200</span><span>));       </span></li><li class="alt"><span>    </span><span class="keyword">for</span><span> (</span><span class="keyword">int</span><span> i = </span><span class="number">0</span><span>; i &lt; </span><span class="number">100</span><span>; i++) {       </span></li><li><span>        </span><span class="keyword">int</span><span> x = random.nextInt(width);       </span></li><li class="alt"><span>        </span><span class="keyword">int</span><span> y = random.nextInt(height);       </span></li><li><span>        </span><span class="keyword">int</span><span> xl = random.nextInt(</span><span class="number">12</span><span>);       </span></li><li class="alt"><span>        </span><span class="keyword">int</span><span> yl = random.nextInt(</span><span class="number">12</span><span>);       </span></li><li><span>          g.drawLine(x, y, x + xl, y + yl);       </span></li><li class="alt"><span>      }       </span></li><li><span>      </span></li><li class="alt"><span>    </span><span class="comment">// 取随机产生的认证码(4位数字)     </span><span>  </span></li><li><span>      String sRand = </span><span class="string">""</span><span>;       </span></li><li class="alt"><span>    </span><span class="keyword">for</span><span> (</span><span class="keyword">int</span><span> i = </span><span class="number">0</span><span>; i &lt; </span><span class="number">4</span><span>; i++) {       </span></li><li><span>          String rand = String.valueOf(random.nextInt(</span><span class="number">10</span><span>));       </span></li><li class="alt"><span>          sRand += rand;       </span></li><li><span>        </span><span class="comment">// 将认证码显示到图象中     </span><span>  </span></li><li class="alt"><span>          g.setColor(</span><span class="keyword">new</span><span> Color(</span><span class="number">20</span><span> + random.nextInt(</span><span class="number">110</span><span>), </span><span class="number">20</span><span> + random       </span></li><li><span>          .nextInt(</span><span class="number">110</span><span>), </span><span class="number">20</span><span> + random.nextInt(</span><span class="number">110</span><span>)));</span><span class="comment">//调用函数出来的颜色相同，可能是因为种子太接近，所以只能直接生成     </span><span>  </span></li><li class="alt"><span>          g.drawString(rand, </span><span class="number">13</span><span> * i + </span><span class="number">6</span><span>, </span><span class="number">16</span><span>);       </span></li><li><span>      }       </span></li><li class="alt"><span>      </span></li><li><span>    </span><span class="comment">// 将认证码存入SESSION     </span><span>  </span></li><li class="alt"><span>      session.setAttribute(</span><span class="string">"code"</span><span>, sRand);       </span></li><li><span>      </span></li><li class="alt"><span>    </span><span class="comment">// 图象生效     </span><span>  </span></li><li><span>      g.dispose();       </span></li><li class="alt"><span>      </span></li><li><span>    </span><span class="comment">// 输出图象到页面     </span><span>  </span></li><li class="alt"><span>      ImageIO.write(image, </span><span class="string">"JPEG"</span><span>, response.getOutputStream());       </span></li><li><span>%&gt;  </span></li></ol></span></span><span>  </span></ol></div></div><div class="code_title"></div><div class="code_title"><font color="#000000"><font color="#ff0000">[注意]:</font></font></div><div class="code_title"><font color="#000000">(1)<font face="Arial"><font color="#ff6600">contentType</font>值设置为<font color="#ff6600">"image/JPEG"</font></font></font></div><div class="code_title"></div><div class="code_title"><font color="#0000ff"><font color="#000000"></font></font></div><div class="code_title"><font color="#0000ff"><font color="#000000"><font color="#0000ff">3.result.jsp</font></font></font><font color="#0000ff"></font><div class="code_title"><font color="#0000ff"></font></div><div class="code_title"></div><div class="code_title"><font color="#0000ff"></font></div><div class="code_title"><font color="#0000ff"></font></div><div class="code_title"><font color="#0000ff"></font><font color="#0000ff"><div class="code_title"></div></font></div><div class="code_title"></div></div><div class="code_title"><div class="bar"></div><div><ol class="dp-xml"><li class="alt"><span><span class="tag">&lt;</span><span>%@ page </span><span class="attribute">language</span><span>=</span><span class="attribute-value">"java"</span><span></span><span class="attribute">import</span><span>=</span><span class="attribute-value">"java.util.*"</span><span></span><span class="attribute">pageEncoding</span><span>=</span><span class="attribute-value">"GBK"</span><span>%</span><span class="tag">&gt;</span><span>  </span></span></li><li><span></span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>  </span></li><li class="alt"><span></span><span class="tag">&lt;</span><span>%   </span></li><li><span>      String </span><span class="attribute">input</span><span>=</span><span class="attribute-value">request</span><span>.getParameter("input");   </span></li><li class="alt"><span>      String </span><span class="attribute">code</span><span>=(String)session.getAttribute("code");       </span></li><li><span>      if(input.equals(code)){   </span></li><li class="alt"><span>          out.println("验证成功!");   </span></li><li><span>      }else{   </span></li><li class="alt"><span>          out.println("验证失败!");   </span></li><li><span>      }   </span></li><li class="alt"><span>%</span><span class="tag">&gt;</span><span>  </span></li><li><span></span><span class="tag"><span class="tag-name">&lt;/body</span><span class="tag">&gt;&lt;/</span><span class="tag"><span class="tag-name">html</span><span class="tag">&gt;</span><span>  </span></span></span></li></ol></div></div></font></font>
		</div>
<img src ="http://www.blogjava.net/bcims/aggbug/111784.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-04-18 23:38 <a href="http://www.blogjava.net/bcims/archive/2007/04/18/111784.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java API中文版下载 </title><link>http://www.blogjava.net/bcims/archive/2007/04/16/111061.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Mon, 16 Apr 2007 11:54:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/04/16/111061.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/111061.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/04/16/111061.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/111061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/111061.html</trackback:ping><description><![CDATA[Java API中文版下载<br />2006-12-20 21:27<br />Java API中文版下载<br /><br />Java API Docs是学习和使用Java语言中最经常使用的参考资料之一，完整的Java API文档中文版文档共包括32个类库。但是长期以来此文档只有英文版和日文版，对于中国地区的Java开发者来说相当的不便。通过Sun公司的翻译团队10个月的不懈努力以及广大网友的热心支持， Java API中文文档的翻译工作如期完成，呈现到中国广大的Java用户和学习者面前。<br /><br />Sun 官方下载地址:（推荐）<br />http://gceclub.sun.com.cn/Java_Docs/html_zh_CN.zip<br /><br /> p.s:文件的生成日期都是2006-06-22，比我原来下的新。好像多了些东东，自己看啦<br /><br />中文API在线阅读（有更新）：<br />http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html<br /><br />API 文档中文版技术论坛<br />http://gceclub.sun.com.cn/NASApp/sme/jive/forum.jsp?forum=35<br /><br /><br />JDK 1.5.0中文版CHM：（推荐）<br />http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/JDK_API_1_5_zh_CN.CHM <br /><br />API资源：<br />https://jdk-api-zh-cn.dev.java.net/<br /><br />英文版CHM<br />http://java.sun.com/docs/windows_format.html <br /><br /> <br /><br /> sun中文站点：<br />http://cn.sun.com/<br /><br />中文技术社区：（可找到很多资源，推荐！）<br />http://gceclub.sun.com.cn/ <br /><br />文档：<br />http://docs.sun.com/app/docs<br /><br />英文在线文档：<br />http://java.sun.com/j2se/1.5.0/docs/api/index.html<br /><br /><p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1509986</p><img src ="http://www.blogjava.net/bcims/aggbug/111061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-04-16 19:54 <a href="http://www.blogjava.net/bcims/archive/2007/04/16/111061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于java的权限控制系统设计</title><link>http://www.blogjava.net/bcims/archive/2007/04/16/110882.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Mon, 16 Apr 2007 01:17:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/04/16/110882.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/110882.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/04/16/110882.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/110882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/110882.html</trackback:ping><description><![CDATA[
		<p>一、概要 </p>
		<p>
				<br />通常，需要单独的权限系统是解决授权的管理和维护，再分配等难题，不针对开发而言。 </p>
		<p>
				<br />系统架构目标：在易于理解和管理，开发的前提下，满足绝大部分粗粒度和细粒度权限控制的功能需要。 </p>
		<p>
				<br />除了粗粒度权限，系统中必然还会包括无数对具体Instance的细粒度权限。这些问题，被留给对框架的扩展方法来解决，这样的考虑基于以下两点：<br />  1、细粒度的权限判断必须要在资源上获取权限分配的支持的上下文信息才可能得以实现。 </p>
		<p>
				<br />2、细粒度的权限常常具有相当大的业务逻辑相关性。对不同的业务逻辑，常常意味着完全不同的权限判定原则和策略。相比之下，粗粒度的权限更具通用性，将其实现为一个架构，更有重用价值；而将细粒度的权限判断实现为一个架构级别的东西就显得繁琐，增加架构的复杂性。而且不是那么的有必要，用定制的代码来实现就更简洁，更灵活。否则会变成各种逻辑代码的堆砌。 </p>
		<p>
				<br />比如，product post数量的控制，这种一般要知道用户个性化的信息，付钱数量到数据库中查找最高数量，还要知道此用户已经有多少产品等，规则不具备通用性和重用性， </p>
		<p>
				<br />   所以细粒度控制不应该放在权限架构层来解决。实例级的细粒度权限的解决方案就是将它转化为粗粒度权限，这样我们权限客户端就变得很简单了。 </p>
		<p>
				<br />名词解释： </p>
		<p>
				<br />    粗粒度权限 ：一般可以通过配置文件来授权，授权只有真假，没有多少之分，不需要上下文的支持。 </p>
		<p>
				<br />    不消耗资源的。 </p>
		<p>
				<br />    逻辑表达式：判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。 </p>
		<p>
				<br />    别名：静态授权、类级授权 </p>
		<p>
				<br /> 细粒度权限：不能通过配置文件等表达，需要特定上下文的支持. </p>
		<p>
				<br />    逻辑表达式：判断“When(Where)的时候，Who对What(Which)进行How的操作”的逻辑表达式是否为真。 </p>
		<p>
				<br />    别名：动态授权、实例级授权 </p>
		<p>
				<br />设计原则 ： </p>
		<p>
				<br />框架只提供粗粒度的权限。 </p>
		<p>
				<br />细粒度的权限也需要集中管理和维护 </p>
		<p>
				<br />细粒度的权限通过定制的扩展代码将细粒度转化为粗粒度授权。 </p>
		<p>
				<br />二、权限系统的设计 </p>
		<p>
				<br />权限往往是一个极其复杂的问题， 设计权限系统第一个要解决的问题就是什么样的行为是需要权限控制，什么样的是业务方法。他们之间本来是没有明确的区分，任何权限从某种角度上说可以是一种业务方法。为了以后管理和开发方面我们从概念上需要将权限和业务明确划分清楚，指导开发。</p>
		<p>
				<br /> 权限控制行为：  对What(Which)进行How的操作需要区分Who，具有Who身份差异性和可替换性。  我们将此类操作作为权限。 </p>
		<p>
				<br />     特点： 可以收回也可以分配的，具有一定的抽象级别。       消耗资源，行为结果具备一些持久性的影响。 </p>
		<p>
				<br /> 业务逻辑行为：  对What(Which)进行How的操作的时候与Who的身份无关或者具有Who身份差异性但             是不具有可替换性。</p>
		<p>
				<br />    特点： 不能抽象和共享，很难回收和分配。不消耗资源，不产生持久性。现实中也存在某一时期行为是业务逻辑，最后演变成权限控制，或者相反的过程。 </p>
		<p>
				<br />1、粗粒度权限设计</p>
		<p>
				<br />       采用自主型访问控制方法，操作给予访问控制列表。每一个用户通过角色获得一组权限集合，权限系统的功能是验证用户申请的权限（集合）是否在这个集合当中，即申请的权限（集合）是否投影在用户拥有的权限集合,换句话说：只要某用户直接或者间接的属于某个Role那么它就具备这个Role的所有权限许可。</p>
		<p>
				<br />一个自主型访问控制方法的权限系统包括以下几个部分：角色、权限、访问控制表、 </p>
		<p>
				<br />l         权限 </p>
		<p>
				<br />描述一个权限可以通过以下几个要素说明： </p>
		<p>
				<br />类型（class）: </p>
		<p>
				<br />名称（name）：</p>
		<p>
				<br />动作(actions)：</p>
		<p>
				<br />掩码（mask）：</p>
		<p>
				<br />属性： </p>
		<p>
				<br />具体权限Example:</p>
		<p>
				<br />1、Test</p>
		<p>
				<br />类型（class）:com.yangjs.secutiry. permissions. TestPermission </p>
		<p>
				<br />名称（name）：如：test.* ，test.sub.* ,test.sub1.sub2</p>
		<p>
				<br />动作(actions)： brower_detail ,post,repost,…… </p>
		<p>
				<br />掩码（mask）：0x1,0x2,0x4…..</p>
		<p>
				<br />属性： 无 </p>
		<p>
				<br />.………….. </p>
		<p>
				<br />l         存取控制器（my--acl.xml）配置 </p>
		<p>
				<br />存取控制项（ACE）：角色到权限的映射集合，表示某个角色可以在某些资源上执行某些动作，它们之间通过role关联（继承），ACE之间产生包含关系。</p>
		<p>
				<br />存取控制列表（ACL）：ACE的集合。 </p>
		<p>
				<br /> 我们的存取控制器（ACL）是通过一个xml的配置文件说明，存取控制列表由多个存取控制项（ACE）来描述。使用方法(略）</p>
		<p>
				<br /> 2、细粒度权限设计 </p>
		<p>
				<br />    细粒度授权需要上下文的支持，而且每个权限控制的上下问题都不一样，这由相关的业务逻辑决定，而且此类授权一般变化较快，应此需要将强的可维护性和扩展性，支持变化，但又不能够太复杂，否则缺乏可执行性。虽然此类权限个性化较强，我们仍然可以总结出很多共性： </p>
		<p>
				<br />1.       几乎所有的授权需要用户的角色和ID. </p>
		<p>
				<br />2.       特定的上下文几乎都同用户资源使用情况相关.</p>
		<p>
				<br />   我们将此类信息称为UserState 即：User角色以及资源使用情况和当前状态。大部分信息我们在用户登陆的时候已经。获得。授权贯穿Web层和Biz层，因此我们的登陆要独立于Web端。因此上下文我们可以用UserState结合其他来抽象。 </p>
		<p>
				<br />   关于上下文的维护问题，我们不可能将UserState此类参数在Web层和Biz层来回传递，更加不能在需要授权的地方都加上一个这样的方法参数，这样不太现实。其次如果在授权的地方再从数据库中取一次这样虽然能够解决部分问题（不能解决userId的传递），这样效率太低，不能接受。 </p>
		<p>
				<br />       解决方法就是将此类信息cache起来，用的时候再去取，由于此类信息具有非常高的并发性，对线程安全较高，因此我们决定将此类信息放入一个线程上下文的内存cache中。此外我们由于引入cache，就需要解决所有cache共有的维护性问题。</p>
		<p>
				<br />       Cache的生命周期：用户的一次请求，属于线程级，用户请求线程结束，Cache结束。</p>
		<p>
				<br />       Cache的更新：当上下文信息发生变化是需要及时更新Cache，这是一个不可避免的步骤。</p>
		<p>
				<br />        Cache丢失：发生在如系统down机，线程崩溃，内存溢出等等，对用户来说就是当前请求突然中断。</p>
		<p>
				<br />       当用户重新发送请求，我们的系统就需要重新验证用户，此时我们可以更新Cache解</p>
		<p>
				<br />       决丢失问题。</p>
		<p>
				<br />       Cache的清理：这个实现就是当用户请求结束，返回应答的时候清理，可以通过Filter实现，比较简单。</p>
		<p>
				<br />以上是相关的原理部分，我们看看系统地实现：</p>
		<p>
				<br />实现：线程上下文的cache</p>
		<p>
				<br />实现类：com.yangjs.cache.ThreadContextCache: </p>
		<p>
				<br />public class ThreadContextCache { </p>
		<p>
				<br />    public static Map asMap()； </p>
		<p>
				<br />    public static boolean containsKey(Object key)； </p>
		<p>
				<br />    public static boolean containsValue(Object key)； </p>
		<p>
				<br />    public static Object get(Object key)； </p>
		<p>
				<br />    public static void put(Object key, Object value)； </p>
		<p>
				<br />    public static Object remove(Object key)； </p>
		<p>
				<br />    public static void clean()； </p>
		<p>
				<br />public static int size() ； </p>
		<p>
				<br />public static void destroy()</p>
<img src ="http://www.blogjava.net/bcims/aggbug/110882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-04-16 09:17 <a href="http://www.blogjava.net/bcims/archive/2007/04/16/110882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不可多得的Javascript(AJAX)开发工具 － Aptana</title><link>http://www.blogjava.net/bcims/archive/2007/04/15/110833.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sun, 15 Apr 2007 15:07:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/04/15/110833.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/110833.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/04/15/110833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/110833.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/110833.html</trackback:ping><description><![CDATA[
		<p>自从开始做Web开发起，一直都没有找到一个很让人满意的Javascript开发工具。从Editplus、Dreamweaver到FrontPage、Visual Studio，没有一样是很称手的。你是不是还在为Visual Studio中的那一点点智能提示感到兴奋不已？的确VS比其他的好那么一点点，但是相对于VS中的C#、VB等来说对javascript的支持实在是太少了。</p>
		<p>下面我要向你介绍一款非常优秀的Javascript(AJAX) 开发工具：<a href="http://www.aptana.com/"><font color="#1a8bc8">Aptana</font></a>。应为它实在太棒了，所以我忍不住想向你推荐它。</p>
		<p>Aptana中的智能提示称为 <strong>Code Assist</strong>，相当于VS中的Intellisense。<br /><a href="http://www.cnblogs.com/images/cnblogs_com/jackielin/WindowsLiveWriter/JavascriptAJAXAptana_121F/code_assist%5B2%5D.png" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="193" src="http://www.cnblogs.com/images/cnblogs_com/jackielin/WindowsLiveWriter/JavascriptAJAXAptana_121F/code_assist_thumb.png" width="428" border="0" /></a><br />看到后面的浏览器图标了吗？那是<strong>浏览器兼容性</strong>的提示。如果你是一个JS老鸟你应该知道那对开发者来说有多重要。</p>
		<p>不仅仅是javascript，智能提示的范围还包括DOM 1,2 for HTML：<a href="http://www.cnblogs.com/images/cnblogs_com/jackielin/WindowsLiveWriter/JavascriptAJAXAptana_121F/screenshot_html_code_assist%5B2%5D.png" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="213" src="http://www.cnblogs.com/images/cnblogs_com/jackielin/WindowsLiveWriter/JavascriptAJAXAptana_121F/screenshot_html_code_assist_thumb.png" width="570" border="0" /></a><br />CSS：<br /><a href="http://www.cnblogs.com/images/cnblogs_com/jackielin/WindowsLiveWriter/JavascriptAJAXAptana_121F/screenshot_css_code_assist%5B1%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="273" src="http://www.cnblogs.com/images/cnblogs_com/jackielin/WindowsLiveWriter/JavascriptAJAXAptana_121F/screenshot_css_code_assist_thumb%5B1%5D.jpg" width="557" border="0" /></a><br />看到后面的黄框框了吗？那是VS里称为Quick Info的东西。</p>
		<p>错误提示 －－ 一个都不能少：<br /><a href="http://www.cnblogs.com/images/cnblogs_com/jackielin/WindowsLiveWriter/JavascriptAJAXAptana_121F/screenshot_problems_view_integrated%5B1%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="575" src="http://www.cnblogs.com/images/cnblogs_com/jackielin/WindowsLiveWriter/JavascriptAJAXAptana_121F/screenshot_problems_view_integrated_thumb%5B1%5D.jpg" width="494" border="0" /></a></p>
		<p>Doument outline（文档结构）CSS、HTML、JS统一显示：<br /><a href="http://www.cnblogs.com/images/cnblogs_com/jackielin/WindowsLiveWriter/JavascriptAJAXAptana_121F/screenshot_outline_integrated%5B6%5D.png" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="535" src="http://www.cnblogs.com/images/cnblogs_com/jackielin/WindowsLiveWriter/JavascriptAJAXAptana_121F/screenshot_outline_integrated_thumb%5B6%5D.png" width="490" border="0" /></a></p>
		<p>代码折叠、项目管理这些小菜不用讲了，都支持。Aptana还有很丰富的在线文档，是以wiki形式不断更新的，当然在连线的情况下你可以在Aptana中直接访问这些文档。</p>
		<p>最新版的Aptana（0.2.6）已经开始支持Debug了，不过要通过Firefox插件的形式。</p>
		<p>Aptana是一个java开源项目（.NET程序员应该扪心自问了吧），现在还在beta阶段（从版本号你就可以看出来了）。所以它是跨平台的。你在windows上运行它可能会觉得有一点点慢（比VS快多了）。其实Aptana的内存占用很少，才2M多，不过JVM...我就不想说什么了。</p>
		<p>幸运的是你可以通过javascript扩展它，这里是它的<a href="http://www.aptana.com/dev/api/ide/aptana_ide_0.2.6/"><font color="#1a8bc8">API</font></a>。</p>
		<p>Aptana还有太多让人惊艳的地方，你一定要自己用过了才知道。</p>
<img src ="http://www.blogjava.net/bcims/aggbug/110833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-04-15 23:07 <a href="http://www.blogjava.net/bcims/archive/2007/04/15/110833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基础问题：JAVA中用接口实现多继承和多态的方法</title><link>http://www.blogjava.net/bcims/archive/2007/04/13/110546.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Fri, 13 Apr 2007 14:54:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/04/13/110546.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/110546.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/04/13/110546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/110546.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/110546.html</trackback:ping><description><![CDATA[
		<p>1.JAVA里没有多继承，一个类之能有一个父类。而继承的表现就是多态。一个父类可以有多个子类，而在子类里可以重写父类的方法（例如方法print()），这样每个子类里重写的代码不一样，自然表现形式就不一样。这样用父类的变量去引用不同的子类，在调用这个相同的方法print()的时候得到的结果和表现形式就不一样了，这就是多态，相同的消息（也就是调用相同的方法）会有不同的结果。举例说明： </p>
		<p>//父类<br />public class Father{<br />   //父类有一个打孩子方法<br />   public void hitChild(){<br />   }<br />}<br />//子类1<br />public class Son1 extends Father{<br />   //重写父类打孩子方法<br />   public void hitChild(){<br />      System.out.println("为什么打我？我做错什么了！");<br />   }<br />}<br />//子类2<br />public class Son2 extends Father{<br />   //重写父类打孩子方法<br />   public void hitChild(){<br />      System.out.println("我知道错了，别打了！");<br />   }<br />}<br />//子类3<br />public class Son3 extends Father{<br />   //重写父类打孩子方法<br />   public void hitChild(){<br />      System.out.println("我跑，你打不着！");<br />   }<br />}</p>
		<p>//测试类<br />public class Test{<br />   public static void main(String args[]){<br />      Father father;</p>
		<p>      father = new Son1();<br />      father.hitChild();</p>
		<p>      father = new Son2();<br />      father.hitChild();</p>
		<p>      father = new Son3();<br />      father.hitChild();<br />   }<br />}</p>
		<p>
				<br />都调用了相同的方法，出现了不同的结果！这就是多态的表现！ </p>
		<p> </p>
		<p>2.JAVA中没有多继承，而用接口实现了多继承！一个类或是可以同时实现多个接口！（就相当于C++里一个类同时继承了多个类！）例如： </p>
		<p>public class Son implements Father1,Father2,Father3{ </p>
		<p>
				<br />} </p>
		<p>
				<br />接口有利于代码功能的扩展（增加新的功能）！而继承则有利于代码功能的修改（把旧的功能改成新的功能）！这里旧功能的修改和新功能的增加前提是不修改旧的功能，旧的功能仍然可以使用！旧类的代码也不做修改！ </p>
		<p>
				<br />接着上面的继承举例：上面例子中的子类我们统称为一代子类 </p>
		<p>
				<br />1.用继承修改旧的功能。 </p>
		<p>现在如果一代Son1的功能打孩子，也就是方法hitChild()里边的功能实现有问题，我们要把具体实现修改掉，那么我们可以重新写一个新的二代子类Son11继承自一代子类Son1，并重写其hitChild()方法。 </p>
		<p>
				<br />//二代子类<br />public class Son11 extends Son1{<br />   //重写父类打孩子方法<br />   public void hitChild(){<br />      System.out.println("我是二代子类对此方法的新实现");<br />   }<br />}</p>
		<p> </p>
		<p>2.用接口实现增加新的功能。 </p>
		<p>现在类Son1已经有了‘打孩子’功能（也就是方法），而我们有了新的需求，我们需要它还要有一个新的功能‘宠孩子’（新方法pet();）。而旧的代码不能动！那么我们可以定义一个新的接口（PetInterFace），接口里定义这个方法pet()的声明。再重新写一个二代子类Son11，让它先继承类Son1，同时实现接口 PetInterFace！并实现接口里的 pet()方法！ </p>
		<p>//新接口<br />public interface PetInterFace{<br />   //新功能方法<br />   public void pet();<br />}</p>
		<p>//二代子类<br />public class Son11 extends Son1 implements PetInterFace{<br />   //实现接口方法<br />   public void pet(){<br />      System.out.println("父亲很爱我！");<br />   }<br />}</p>
		<p> </p>
		<p>这样这个二代子类即有了老的方法，又有新的功能！</p>
<img src ="http://www.blogjava.net/bcims/aggbug/110546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-04-13 22:54 <a href="http://www.blogjava.net/bcims/archive/2007/04/13/110546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>权限控制算法</title><link>http://www.blogjava.net/bcims/archive/2007/04/13/110537.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Fri, 13 Apr 2007 14:05:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/04/13/110537.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/110537.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/04/13/110537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/110537.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/110537.html</trackback:ping><description><![CDATA[
		<p>向大家介绍一种很不错，也是Linux中的权限管理算法。</p>
		<p>　　定义a^b为：a的b次方<br />　　假如，我们为每一个操作设定一个唯一的整数值，比如：</p>
		<p>删除Ａ－－－0<br />修改Ａ－－－1<br />添加Ａ－－－2</p>
		<p>删除Ｂ－－－3<br />修改Ｂ－－－4<br />添加Ｂ－－－5<br />。。。</p>
		<p>　　理论上可以有Ｎ个操作，这取决于你用于储存用户权限值的数据类型了。</p>
		<p>　　这样，如果用户有权限：添加Ａ－－－2；删除Ｂ－－－3；修改Ｂ－－－4<br />那用户的权限值 purview =2^2+2^3+2^4＝28，也就是2的权的和了<br />化成二进制可以表示为11100<br />　　如果要验证用户是否有删除Ｂ的权限，就可以通过位与运算来实现。<br />　　在Ｊａｖａ里，位与运算运算符号为＆<br />　　即是：int value = purview &amp;((int)Math.pow(2,3));<br />　　你会发现，当用户有操作权限时，运算出来的结果都会等于这个操作需要的权限值！</p>
		<p>原理：<br />位与运算，顾名思义就是对位进行与运算：<br />以上面的式子为例：purview &amp; 2^3 也就是　28&amp;8<br />将它们化成二进制有<br />　11100<br />＆ 01000<br />-------------------<br />　 01000 == 8(十进制)　＝＝　2^3<br />同理，如果要验证是否有删除Ａ－－－0的权限<br />可以用：purview &amp;((int)Math.pow(2,0));<br />即：<br />　11100<br />＆ 00001<br />------------------------<br />　 00000 == 0(十进制)　　！＝　2^0 </p>
		<p>　　这种算法的一个优点是速度快。可以同时处理Ｎ个权限，设置Ｎ种角色．<br />　　如果想验证是否同时有删除Ａ－－－0和删除Ｂ－－－3的权限<br />　　可以用purview&amp;(2^0+2^3)==(2^0+2^3)?true:false;<br />　　设置多角色用户。根据权限值判断用户的角色。。。</p>
		<p>　　下面提供一个java的单操作权限判断的代码：</p>
		<p>
				<br />//userPurview是用户具有的总权限<br />//optPurview是一个操作要求的权限为一个整数（没有经过权的！）<br />public static boolean checkPower(int userPurview, int optPurview){<br />　　int purviewValue = (int)Math.pow(2, optPurview);<br />　　return (userPurview &amp; purviewValue) == purviewValue;<br />}<br />　　当然，多权限的验证只要扩展一下就可以了。<br />　　几点注意事项：首先，一个系统可能有很多的操作，因此，请建立数据字典，以便查阅，修改时使用。其次，如果用数据库储存用户权限，请注意数值的有效范围。操作权限值请用唯一的整数！Java的int类型最多可以储存11个权限和．如果超过，可以选择其它数据类型，而且建议不同模块，使用多个权限变量．</p>
<img src ="http://www.blogjava.net/bcims/aggbug/110537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-04-13 22:05 <a href="http://www.blogjava.net/bcims/archive/2007/04/13/110537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>是谁在说SWING开发的界面不漂亮？</title><link>http://www.blogjava.net/bcims/archive/2007/04/05/108622.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Thu, 05 Apr 2007 02:14:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/04/05/108622.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/108622.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/04/05/108622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/108622.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/108622.html</trackback:ping><description><![CDATA[如果看过之后还有人说swing很丑，那就不知道说他什么好了。<br /><br /><a href="https://substance.dev.java.net/webstart/test.jnlp"><u><font color="#800080">https://substance.dev.java.net/webstart/test.jnlp</font></u></a><br /><a class="txt_4" href="http://www.jidesoft.com/products/1.4/jide_demo.jnlp"><u><font color="#800080">http://www.jidesoft.com/products/1.4/jide_demo.jnlp</font></u></a><font class="txt_3"><br /><br />可惜jide是收费的，不然制作swing商用软件界面太爽了，简直就是爽歪歪。 <br /><br />上一张图片，先爽歪歪一下。。。。。。<br /><img height="496" alt="222.JPG" src="http://www.blogjava.net/images/blogjava_net/bcims/king/222.JPG" width="574" border="0" /><br /></font><img src ="http://www.blogjava.net/bcims/aggbug/108622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-04-05 10:14 <a href="http://www.blogjava.net/bcims/archive/2007/04/05/108622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>毕业设计问题之：DispatchAction的运用和其中的exccute+各种方法的运用</title><link>http://www.blogjava.net/bcims/archive/2007/04/04/108426.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Wed, 04 Apr 2007 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/04/04/108426.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/108426.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/04/04/108426.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/108426.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/108426.html</trackback:ping><description><![CDATA[  DispatchAction 必须不写execute(... ...)方法, <br />否则反而有问题, 使用中我发现如果你写了exceute 方法 struts仍然首先调用改excute()方法, <br />这是即使你配置了 method 参数如 action="abcAction.do?method=load" 也无效,<br /> struts 仍然首先执行execute, 故DispatchAction中不要写execute( ... ...) 方法. <br /><br />----------------------------方法都要象下面一样写------------------------------------------------------------<br /> public ActionForward  delete(ActionMapping mapping, ActionForm form,<br />   HttpServletRequest request, HttpServletResponse response){<br />  System.out.println("this is delete! ");<br />  return mapping.findForward("pageInfo");<br /> }<br />--------------------------struts-config.xml里的写法(我没有写form)--------------------------------------------------------<br />    &lt;action<br />      path="/displayAll"<br />      input="/resultDb/pageInfo.jsp"<br />      type="ctm.struts.action.DisplayAllAction"<br />      <font color="#ff3300">parameter="method"  //要注意<br /></font>      scope="request"<br />      validate="false" &gt;<br />      &lt;/action&gt;<br />--------------------------------------------------------------------------------------------------------<img src ="http://www.blogjava.net/bcims/aggbug/108426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-04-04 14:36 <a href="http://www.blogjava.net/bcims/archive/2007/04/04/108426.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何解决Eclipse中ISO8859-1 字符集?</title><link>http://www.blogjava.net/bcims/archive/2007/04/04/108305.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Tue, 03 Apr 2007 17:01:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/04/04/108305.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/108305.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/04/04/108305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/108305.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/108305.html</trackback:ping><description><![CDATA[
		<p>
				<a href="http://www.cnblogs.com/jackielin/archive/2006/11/05/550422.html">
				</a> </p>
		<p>第一种问题：<br /><br />在写JSP时,里面面有涉及到数据库操作,当保存时就会弹出<br />save could not be completed<br />原因是some characters could not be mapped using iso8859-1</p>
		<p>&lt;%@ page language="java" pageEncoding="GBK"%&gt;<br />设成GBK或UTF－8就可以了，只要他里面的支持中文就KO了</p>
		<p>第二种问题：<br />用eclipse编写jsp页面或JAVA类的时候,直接在页面里输入汉字，保存的时候出现"字符不能匹配ISO-8859-1"的错误提示，因为ISO-8859-1是英文编码，不能识别汉字，我就想把它改为utf-8,可是我找不到能改变编码的地方，首先我打开工程的属性，在"info"里看到"Text file encoding"就世界把它改为utf-8，可是还是出现错误提示，搞了好半天还是搞不定它，就在网上找找看有没人遇到过这样的问题。对这个问题解答比较多的是在"edit"---"set encoding"(好像这个是为单独的文件临时设置编码),可是我在eclipse里没找到(我用的是3.2，不知道是不是这个原因)，后来又找到一个解释：设置默认编码：<br />window--&gt;preferences--&gt;general--&gt;editor--&gt;text file encoding，<br />我打开perferences还是没有找到，狂晕~~~~~~~~~，<br />接着看看别的地方有没有设置编码的地方，<br />还是没有找到..........<br /> 又回到perferences，觉得还是在这里可以解决，呵呵，问题还是出在这里，<br />我找到"General"--"Content Types"，<br />右边有个树形的text，<br />展开找到"JSP",开始没发现，<br />那家伙躲在最低下...........，<br />大家不要像我粗心，<br />最低下有个"Default encoding"，<br />里面默认的是"ISO-8859-1",<br />终于找到了，<br />删掉"ISO-8859-1"填上"UTF-8"，<br />在点一下"update"，<br />OK。再保存，<br />就没有错误了..............<br /><img height="513" alt="{8C6FE5A0-E3ED-46BC-810E-566EB08B4234}.JPG" src="http://www.blogjava.net/images/blogjava_net/bcims/king/{8C6FE5A0-E3ED-46BC-810E-566EB08B4234}.JPG" width="570" border="0" /></p>
<img src ="http://www.blogjava.net/bcims/aggbug/108305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-04-04 01:01 <a href="http://www.blogjava.net/bcims/archive/2007/04/04/108305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>毕业设计问题之：Hibernate  VS  iBATIS</title><link>http://www.blogjava.net/bcims/archive/2007/03/23/105988.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Fri, 23 Mar 2007 15:17:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/03/23/105988.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/105988.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/03/23/105988.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/105988.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/105988.html</trackback:ping><description><![CDATA[
		<p style="MARGIN: 13pt 0cm">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="3">首先这个题目有点哗众取宠,呵呵,故意的.</font>
				</span>
		</p>
		<p style="MARGIN: 13pt 0cm">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="3">参考了网上许多前辈的见解,然后加了自己一点点的理解.如果有什么板砖,欢迎来拍 .<br /><br /></font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="5">简介</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="3">
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是当前最流行的</span>
						<span lang="EN-US">
								<font face="Times New Roman">O/R mapping</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架，当前版本是</span>
						<span lang="EN-US">
								<font face="Times New Roman">3.05</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。它出身于</span>
						<span lang="EN-US">
								<font face="Times New Roman">sf.net</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，现在已经成为</span>
						<span lang="EN-US">
								<font face="Times New Roman">Jboss</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的一部分了</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<font size="3">
										<p>
										</p>
								</font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="3">
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是另外一种优秀的</span>
						<span lang="EN-US">
								<font face="Times New Roman">O/R mapping</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架，当前版本是</span>
						<span lang="EN-US">
								<font face="Times New Roman">2.0</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。目前属于</span>
						<span lang="EN-US">
								<font face="Times New Roman">apache</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的一个子项目了。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<font size="3">
										<p>
										</p>
								</font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相对</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">“</span>
						<span lang="EN-US">
								<font face="Times New Roman">O/R</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”而言，</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一种“</span>
						<span lang="EN-US">
								<font face="Times New Roman">Sql Mapping</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”的</span>
						<span lang="EN-US">
								<font face="Times New Roman">ORM</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现。</span>
						<span lang="EN-US">
								<font face="Times New Roman">
								</font>
						</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<font size="3">
										<p>
										</p>
								</font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="3">
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对数据库结构提供了较为完整的封装，</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
						<span lang="EN-US">
								<font face="Times New Roman">O/R Mapping</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现了</span>
						<span lang="EN-US">
								<font face="Times New Roman">POJO </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和数据库表之间的映射，以及</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的自动生成和执行。程序员往往只需定义好了</span>
						<span lang="EN-US">
								<font face="Times New Roman">POJO </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">到数据库表的映射关系，即可通过</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供的方法完成持久层操作。程序员甚至不需要对</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的熟练掌握，</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate/OJB </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会根据制定的存储逻辑，自动生成对应的</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并调用</span>
						<span lang="EN-US">
								<font face="Times New Roman">JDBC </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口加以执行。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<font size="3">
										<p>
										</p>
								</font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的着力点，则在于</span>
						<span lang="EN-US">
								<font face="Times New Roman">POJO </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之间的映射关系。也就是说，</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并不会为程序员在运行期自动生成</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">执行。具体的</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需要程序员编写，然后通过映射配置文件，将</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所需的参数，以及返回的结果字段映射到指定</span>
						<span lang="EN-US">
								<font face="Times New Roman">POJO</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供的</span>
						<span lang="EN-US">
								<font face="Times New Roman">ORM</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">机制，对业务逻辑实现人员而言，面对的是纯粹的</span>
						<span lang="EN-US">
								<font face="Times New Roman">Java</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象，</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这一层与通过</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现</span>
						<span lang="EN-US">
								<font face="Times New Roman">ORM </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而言基本一致，而对于具体的数据操作，</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会自动生成</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语句，而</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">则要求开发者编写具体的</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语句。相对</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而言，</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS </font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发的工作量和数据库移植性上的让步，为系统设计提供了更大的自由空间。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="3">
								<font face="Times New Roman">
										<p>
										</p>
								</font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<h3 style="MARGIN: 13pt 0cm">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="5">二者的对比：</font>
				</span>
		</h3>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<font face="Times New Roman">
						<span lang="EN-US">
								<font size="3">1．</font>
								<span style="FONT: 7pt 'Times New Roman'">  </span>
						</span>
						<span lang="EN-US">
								<font size="3">iBATIS</font>
						</span>
				</font>
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">非常简单易学，</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相对较复杂，门槛较高。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<font size="3">2．</font>
								<span style="FONT: 7pt 'Times New Roman'">  </span>
						</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="3">二者都是比较优秀的开源产品</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<font size="3">3．</font>
								<span style="FONT: 7pt 'Times New Roman'">  </span>
						</font>
				</span>
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当系统属于二次开发</span>
						<span lang="EN-US">
								<font face="Times New Roman">,</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">无法对数据库结构做到控制和修改</span>
						<span lang="EN-US">
								<font face="Times New Roman">,</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">那</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的灵活性将比</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">更适合</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<font size="3">4．</font>
								<span style="FONT: 7pt 'Times New Roman'">  </span>
						</font>
				</span>
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系统数据处理量巨大，性能要求极为苛刻，这往往意味着我们必须通过经过高度优化的</span>
						<span lang="EN-US">
								<font face="Times New Roman">SQL</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语句（或存储过程）才能达到系统性能设计指标。在这种情况下</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会有更好的可控性和表现。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<font face="Times New Roman">
						<span lang="EN-US">
								<font size="3">5．</font>
								<span style="FONT: 7pt 'Times New Roman'">  </span>
						</span>
						<span lang="EN-US">
								<font size="3">iBATIS</font>
						</span>
				</font>
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需要手写</span>
						<span lang="EN-US">
								<font face="Times New Roman">sql</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语句，也可以生成一部分，</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">则基本上可以自动生成，偶尔会写一些</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hql</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。同样的需求</span>
						<span lang="EN-US">
								<font face="Times New Roman">,iBATIS</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的工作量比</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">要大很多。类似的，如果涉及到数据库字段的修改，</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改的地方很少，而</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">要把那些</span>
						<span lang="EN-US">
								<font face="Times New Roman">sql mapping</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的地方一一修改。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<font size="3">6．</font>
								<span style="FONT: 7pt 'Times New Roman'">  </span>
						</font>
				</span>
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以数据库字段一一对应映射得到的</span>
						<span lang="EN-US">
								<font face="Times New Roman">PO</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernte</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这种对象化映射得到的</span>
						<span lang="EN-US">
								<font face="Times New Roman">PO</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是截然不同的，本质区别在于这种</span>
						<span lang="EN-US">
								<font face="Times New Roman">PO</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是扁平化的，不像</span>
						<span lang="EN-US">
								<font face="Times New Roman">Hibernate</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">映射的</span>
						<span lang="EN-US">
								<font face="Times New Roman">PO</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是可以表达立体的对象继承，聚合等等关系的，这将会直接影响到你的整个软件系统的设计思路。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<font face="Times New Roman">
						<span lang="EN-US">
								<font size="3">7．</font>
								<span style="FONT: 7pt 'Times New Roman'">  </span>
						</span>
						<span lang="EN-US">
								<font size="3">Hibernate</font>
						</span>
				</font>
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">现在已经是主流</span>
						<span lang="EN-US">
								<font face="Times New Roman">O/R Mapping</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架，从文档的丰富性，产品的完善性，版本的开发速度都要强于</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS</font>
						</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<font size="3">8．</font>
								<span style="FONT: 7pt 'Times New Roman'">  </span>
						</font>
				</span>
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最关键的一句话是</span>
						<span lang="EN-US">
								<font face="Times New Roman">iBATIS</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的作者说的：</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font face="Times New Roman" size="3">If you are starting a new project and you're in full control of your object model and database design, Hibernate is a good choice of O/R tool.</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font face="Times New Roman" size="3">If you are accessing any 3rd party databases (e.g. vendor supplied), or you're working with a legacy database, or even just a really poorly designed database, then an O/R mapper might not be capable of handling the situation. That's were an SQL Mapper comes in handy</font>
				</span>
		</p>
		<span lang="EN-US">
				<font face="Times New Roman" size="3">
						<font size="2">
								<h3 class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> </h3>
								<h3>
										<span lang="EN-US">结论:</span>
								</h3>
						</font>
						<span lang="EN-US">结论:</span>
						<p>
								<span lang="EN-US">Hibernate 和iBATIS可以说是互相补充,共同发展的关系.具体你想用什么要看实际情况.如果看了上面的文字还是拿不定注意,那就Just to try it.实践是检验真理的唯一标准.鞋合不合适,只有试了才知道</span>
						</p>
				</font>
		</span>
<img src ="http://www.blogjava.net/bcims/aggbug/105988.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-03-23 23:17 <a href="http://www.blogjava.net/bcims/archive/2007/03/23/105988.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>毕业设计问题之：简要JAVA数据类型转换（附 基本数据类型的大小）</title><link>http://www.blogjava.net/bcims/archive/2007/03/19/104632.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sun, 18 Mar 2007 16:33:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/03/19/104632.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/104632.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/03/19/104632.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/104632.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/104632.html</trackback:ping><description><![CDATA[
		<p>1如何将字串 String 转换成整数 int? </p>
		<p>A. 有两个方法: </p>
		<p>1). int i = Integer.parseInt([String]); 或 <br />i = Integer.parseInt([String],[int radix]); </p>
		<p>2). int i = Integer.valueOf(my_str).intValue(); </p>
		<p>注: 字串转成 Double, Float, Long 的方法大同小异. </p>
		<p>
				<br />2 如何将整数 int 转换成字串 String ? </p>
		<p>
				<br />A. 有叁种方法: </p>
		<p>1.) String s = String.valueOf(i); </p>
		<p>2.) String s = Integer.toString(i); </p>
		<p>3.) String s = "" + i; </p>
		<p>注: Double, Float, Long 转成字串的方法大同小异. </p>
		<p> </p>
		<p>JAVA数据类型转换 ynniebo [收藏] <br />关键字 类型转换 <br />出处 </p>
		<p>这是一个例子,说的是JAVA中数据数型的转换.供大家学习引 </p>
		<p>package cn.com.lwkj.erts.register; <br />import java.sql.Date; <br />public class TypeChange { <br />public TypeChange() { <br />} <br />//change the string type to the int type <br />public static int stringToInt(String intstr) <br />{ <br />Integer integer; <br />integer = Integer.valueOf(intstr); <br />return integer.intValue(); <br />} <br />//change int type to the string type <br />public static String intToString(int value) <br />{ <br />Integer integer = new Integer(value); <br />return integer.toString(); <br />} <br />//change the string type to the float type <br />public static float stringToFloat(String floatstr) <br />{ <br />Float floatee; <br />floatee = Float.valueOf(floatstr); <br />return floatee.floatValue(); <br />} <br />//change the float type to the string type <br />public static String floatToString(float value) <br />{ <br />Float floatee = new Float(value); <br />return floatee.toString(); <br />} <br />//change the string type to the sqlDate type <br />public static java.sql.Date stringToDate(String dateStr) <br />{ <br />return java.sql.Date.valueOf(dateStr); <br />} <br />//change the sqlDate type to the string type <br />public static String dateToString(java.sql.Date datee) <br />{ <br />return datee.toString(); <br />} </p>
		<p>public static void main(String[] args) <br />{ <br />java.sql.Date day ; <br />day = TypeChange.stringToDate("2003-11-3"); <br />String strday = TypeChange.dateToString(day); <br />System.out.println(strday); <br />} </p>
		<p>
				<br />} </p>
		<p>
				<br />JAVA中常用数据类型转换函数 <br />虽然都能在JAVA API中找到，整理一下做个备份。 </p>
		<p>string-&gt;byte <br />Byte static byte parseByte(String s) </p>
		<p>byte-&gt;string <br />Byte static String toString(byte b) </p>
		<p>char-&gt;string <br />Character static String to String (char c) </p>
		<p>string-&gt;Short <br />Short static Short parseShort(String s) </p>
		<p>Short-&gt;String <br />Short static String toString(Short s) </p>
		<p>String-&gt;Integer <br />Integer static int parseInt(String s) </p>
		<p>Integer-&gt;String <br />Integer static String tostring(int i) </p>
		<p>String-&gt;Long <br />Long static long parseLong(String s) </p>
		<p>Long-&gt;String <br />Long static String toString(Long i) </p>
		<p>String-&gt;Float <br />Float static float parseFloat(String s) </p>
		<p>Float-&gt;String <br />Float static String toString(float f) </p>
		<p>String-&gt;Double <br />Double static double parseDouble(String s) </p>
		<p>Double-&gt;String <br />Double static String toString(Double) </p>
		<p>
				<br />（ 附 基本数据类型的大小）<br /> 基本型别   大小      最小值         最大值 <br /> boolean   -----     -----          ------ <br /> char      16-bit    Unicode 0      Unicode 2^16-1 <br /> byte      8-bit     -128           +127 <br /> short     16-bit    -2^15          +2^15-1 <br /> int       32-bit    -2^31          +2^31-1 <br /> long      64-bit    -2^63          +2^63-1 <br /> float     32-bit    IEEE754        IEEE754 <br /> double    64-bit    IEEE754        IEEE754 <br /> void   </p>
		<p>注意！：表格里的^代表的是次方哈～ </p>
<img src ="http://www.blogjava.net/bcims/aggbug/104632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-03-19 00:33 <a href="http://www.blogjava.net/bcims/archive/2007/03/19/104632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA字符集</title><link>http://www.blogjava.net/bcims/archive/2007/02/08/98820.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Thu, 08 Feb 2007 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/02/08/98820.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/98820.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/02/08/98820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/98820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/98820.html</trackback:ping><description><![CDATA[
		<font color="#000000" size="2">1. 概述 <br /><br />本文主要包括以下几个方面：编码基本知识，java，系统软件，url，工具软件等。 <br /><br />在下面的描述中，将以"中文"两个字为例，经查表可以知道其GB2312编码是"d6d0 cec4"，Unicode编码为"4e2d 6587"，UTF编码就是"e4b8ad e69687"。注意，这两个字没有iso8859-1编码，但可以用iso8859-1编码来"表示"。 <br /><br />2. 编码基本知识 <br /><br />最早的编码是iso8859-1，和ascii编码相似。但为了方便表示各种各样的语言，逐渐出现了很多标准编码，重要的有如下几个。 <br /><br />2.1. iso8859-1 <br /><br />属于单字节编码，最多能表示的字符范围是0-255，应用于英文系列。比如，字母'a'的编码为0x61=97。 <br /><br />很明显，iso8859-1编码表示的字符范围很窄，无法表示中文字符。但是，由于是单字节编码，和计算机最基础的表示单位一致，所以很多时候，仍旧使用iso8859-1编码来表示。而且在很多协议上，默认使用该编码。比如，虽然"中文"两个字不存在iso8859-1编码，以gb2312编码为例，应该是"d6d0 cec4"两个字符，使用iso8859-1编码的时候则将它拆开为4个字节来表示："d6 d0 ce c4"（事实上，在进行存储的时候，也是以字节为单位处理的）。而如果是UTF编码，则是6个字节"e4 b8 ad e6 96 87"。很明显，这种表示方法还需要以另一种编码为基础。 <br /><br />2.2. GB2312/GBK <br /><br />这就是汉子的国标码，专门用来表示汉字，是双字节编码，而英文字母和iso8859-1一致（兼容iso8859-1编码）。其中gbk编码能够用来同时表示繁体字和简体字，而gb2312只能表示简体字，gbk是兼容gb2312编码的。 <br /><br />2.3. unicode <br /><br />这是最统一的编码，可以用来表示所有语言的字符，而且是定长双字节（也有四字节的）编码，包括英文字母在内。所以可以说它是不兼容iso8859-1编码的，也不兼容任何编码。不过，相对于iso8859-1编码来说，uniocode编码只是在前面增加了一个0字节，比如字母'a'为"00 61"。 <br /><br />需要说明的是，定长编码便于计算机处理（注意GB2312/GBK不是定长编码），而unicode又可以用来表示所有字符，所以在很多软件内部是使用unicode编码来处理的，比如java。 <br /><br />2.4. UTF <br /><br />考虑到unicode编码不兼容iso8859-1编码，而且容易占用更多的空间：因为对于英文字母，unicode也需要两个字节来表示。所以unicode不便于传输和存储。因此而产生了utf编码，utf编码兼容iso8859-1编码，同时也可以用来表示所有语言的字符，不过，utf编码是不定长编码，每一个字符的长度从1-6个字节不等。另外，utf编码自带简单的校验功能。一般来讲，英文字母都是用一个字节表示，而汉字使用三个字节。 <br /><br />注意，虽然说utf是为了使用更少的空间而使用的，但那只是相对于unicode编码来说，如果已经知道是汉字，则使用GB2312/GBK无疑是最节省的。不过另一方面，值得说明的是，虽然utf编码对汉字使用3个字节，但即使对于汉字网页，utf编码也会比unicode编码节省，因为网页中包含了很多的英文字符。 <br /><br />3. java对字符的处理 <br /><br />在java应用软件中，会有多处涉及到字符集编码，有些地方需要进行正确的设置，有些地方需要进行一定程度的处理。 <br /><br />3.1. getBytes(charset) <br /><br />这是java字符串处理的一个标准函数，其作用是将字符串所表示的字符按照charset编码，并以字节方式表示。注意字符串在java内存中总是按unicode编码存储的。比如"中文"，正常情况下（即没有错误的时候）存储为"4e2d 6587"，如果charset为"gbk"，则被编码为"d6d0 cec4"，然后返回字节"d6 d0 ce c4"。如果charset为"utf8"则最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1"，则由于无法编码，最后返回 "3f 3f"（两个问号）。 <br /><br />3.2. new String(charset) <br /><br />这是java字符串处理的另一个标准函数，和上一个函数的作用相反，将字节数组按照charset编码进行组合识别，最后转换为unicode存储。参考上述getBytes的例子，"gbk" 和"utf8"都可以得出正确的结果"4e2d 6587"，但iso8859-1最后变成了"003f 003f"（两个问号）。 <br /><br />因为utf8可以用来表示/编码所有字符，所以new String( str.getBytes( "utf8" ), "utf8" ) === str，即完全可逆。 <br /><br />3.3. setCharacterEncoding() <br /><br />该函数用来设置http请求或者相应的编码。 <br /><br />对于request，是指提交内容的编码，指定后可以通过getParameter()则直接获得正确的字符串，如果不指定，则默认使用iso8859-1编码，需要进一步处理。参见下述"表单输入"。值得注意的是在执行setCharacterEncoding()之前，不能执行任何getParameter()。java doc上说明：This method must be called prior to reading request parameters or reading input using getReader()。而且，该指定只对POST方法有效，对GET方法无效。分析原因，应该是在执行第一个getParameter()的时候，java将会按照编码分析所有的提交内容，而后续的getParameter()不再进行分析，所以setCharacterEncoding()无效。而对于GET方法提交表单是，提交的内容在URL中，一开始就已经按照编码分析所有的提交内容，setCharacterEncoding()自然就无效。 <br /><br />对于response，则是指定输出内容的编码，同时，该设置会传递给浏览器，告诉浏览器输出内容所采用的编码。 <br /><br />3.4. 处理过程 <br /><br />下面分析两个有代表性的例子，说明java对编码有关问题的处理方法。 <br /><br />3.4.1. 表单输入 <br /><br />User input  *(gbk:d6d0 cec4)  browser  *(gbk:d6d0 cec4)  web server  iso8859-1(00d6 00d 000ce 00c4)  class，需要在class中进行处理：getbytes("iso8859-1")为d6 d0 ce c4，new String("gbk")为d6d0 cec4，内存中以unicode编码则为4e2d 6587。 <br /><br />l 用户输入的编码方式和页面指定的编码有关，也和用户的操作系统有关，所以是不确定的，上例以gbk为例。 <br /><br />l 从browser到web server，可以在表单中指定提交内容时使用的字符集，否则会使用页面指定的编码。而如果在url中直接用?的方式输入参数，则其编码往往是操作系统本身的编码，因为这时和页面无关。上述仍旧以gbk编码为例。 <br /><br />l Web server接收到的是字节流，默认时（getParameter）会以iso8859-1编码处理之，结果是不正确的，所以需要进行处理。但如果预先设置了编码（通过request. setCharacterEncoding ()），则能够直接获取到正确的结果。 <br /><br />l 在页面中指定编码是个好习惯，否则可能失去控制，无法指定正确的编码。 <br /><br />3.4.2. 文件编译 <br /><br />假设文件是gbk编码保存的，而编译有两种编码选择：gbk或者iso8859-1，前者是中文windows的默认编码，后者是linux的默认编码，当然也可以在编译时指定编码。 <br /><br />Jsp  *(gbk:d6d0 cec4)  java file  *(gbk:d6d0 cec4)  compiler read  uincode(gbk: 4e2d 6587; iso8859-1: 00d6 00d 000ce 00c4)  compiler write  utf(gbk: e4b8ad e69687; iso8859-1: *)  compiled file  unicode(gbk: 4e2d 6587; iso8859-1: 00d6 00d 000ce 00c4)  class。所以用gbk编码保存，而用iso8859-1编译的结果是不正确的。 <br /><br />class  unicode(4e2d 6587)  system.out / jsp.out  gbk(d6d0 cec4)  os console / browser。 <br /><br />l 文件可以以多种编码方式保存，中文windows下，默认为ansi/gbk。 <br /><br />l 编译器读取文件时，需要得到文件的编码，如果未指定，则使用系统默认编码。一般class文件，是以系统默认编码保存的，所以编译不会出问题，但对于jsp文件，如果在中文windows下编辑保存，而部署在英文linux下运行/编译，则会出现问题。所以需要在jsp文件中用pageEncoding指定编码。 <br /><br />l Java编译的时候会转换成统一的unicode编码处理，最后保存的时候再转换为utf编码。 <br /><br />l 当系统输出字符的时候，会按指定编码输出，对于中文windows下，System.out将使用gbk编码，而对于response（浏览器），则使用jsp文件头指定的contentType，或者可以直接为response指定编码。同时，会告诉browser网页的编码。如果未指定，则会使用iso8859-1编码。对于中文，应该为browser指定输出字符串的编码。 <br /><br />l browser显示网页的时候，首先使用response中指定的编码（jsp文件头指定的contentType最终也反映在response上），如果未指定，则会使用网页中meta项指定中的contentType。 <br /><br />3.5. 几处设置 <br /><br />对于web应用程序，和编码有关的设置或者函数如下。 <br /><br />3.5.1. jsp编译 <br /><br />指定文件的存储编码，很明显，该设置应该置于文件的开头。例如：&lt;%@page pageEncoding="GBK"%&gt;。另外，对于一般class文件，可以在编译的时候指定编码。 <br /><br />3.5.2. jsp输出 <br /><br />指定文件输出到browser是使用的编码，该设置也应该置于文件的开头。例如：&lt;%@ page contentType="text/html; charset= GBK" %&gt;。该设置和response.setCharacterEncoding("GBK")等效。 <br /><br />3.5.3. meta设置 <br /><br />指定网页使用的编码，该设置对静态网页尤其有作用。因为静态网页无法采用jsp的设置，而且也无法执行response.setCharacterEncoding()。例如：&lt;META http-equiv="Content-Type" content="text/html; charset=GBK" /&gt; <br /><br />如果同时采用了jsp输出和meta设置两种编码指定方式，则jsp指定的优先。因为jsp指定的直接体现在response中。 <br /><br />需要注意的是，apache有一个设置可以给无编码指定的网页指定编码，该指定等同于jsp的编码指定方式，所以会覆盖静态网页中的meta指定。所以有人建议关闭该设置。 <br /><br />3.5.4. form设置 <br /><br />当浏览器提交表单的时候，可以指定相应的编码。例如：&lt;form accept-charset= "gb2312"&gt;。一般不必不使用该设置，浏览器会直接使用网页的编码。 <br /><br />4. 系统软件 <br /><br />下面讨论几个相关的系统软件。 <br /><br />4.1. mysql数据库 <br /><br />很明显，要支持多语言，应该将数据库的编码设置成utf或者unicode，而utf更适合与存储。但是，如果中文数据中包含的英文字母很少，其实unicode更为适合。 <br /><br />数据库的编码可以通过mysql的配置文件设置，例如default-character-set=utf8。还可以在数据库链接URL中设置，例如： useUnicode=true&amp;characterEncoding=UTF-8。注意这两者应该保持一致，在新的sql版本里，在数据库链接URL里可以不进行设置，但也不能是错误的设置。 <br /><br />4.2. apache <br /><br />appache和编码有关的配置在httpd.conf中，例如AddDefaultCharset UTF-8。如前所述，该功能会将所有静态页面的编码设置为UTF-8，最好关闭该功能。 <br /><br />另外，apache还有单独的模块来处理网页响应头，其中也可能对编码进行设置。 <br /><br />4.3. linux默认编码 <br /><br />这里所说的linux默认编码，是指运行时的环境变量。两个重要的环境变量是LC_ALL和LANG，默认编码会影响到java URLEncode的行为，下面有描述。 <br /><br />建议都设置为"zh_CN.UTF-8"。 <br /><br />4.4. 其它 <br /><br />为了支持中文文件名，linux在加载磁盘时应该指定字符集，例如：mount /dev/hda5 /mnt/hda5/ -t ntfs -o iocharset=gb2312。 <br /><br />另外，如前所述，使用GET方法提交的信息不支持request.setCharacterEncoding()，但可以通过tomcat的配置文件指定字符集，在tomcat的server.xml文件中，形如：&lt;Connector ... URIEncoding="GBK"/&gt;。这种方法将统一设置所有请求，而不能针对具体页面进行设置，也不一定和browser使用的编码相同，所以有时候并不是所期望的。 <br /><br />5. URL地址 <br /><br />URL地址中含有中文字符是很麻烦的，前面描述过使用GET方法提交表单的情况，使用GET方法时，参数就是包含在URL中。 <br /><br />5.1. URL编码 <br /><br />对于URL中的一些特殊字符，浏览器会自动进行编码。这些字符除了"/?&amp;"等外，还包括unicode字符，比如汉子。这时的编码比较特殊。 <br /><br />IE有一个选项"总是使用UTF-8发送URL"，当该选项有效时，IE将会对特殊字符进行UTF-8编码，同时进行URL编码。如果改选项无效，则使用默认编码"GBK"，并且不进行URL编码。但是，对于URL后面的参数，则总是不进行编码，相当于UTF-8选项无效。比如"中文.html?a=中文"，当UTF-8选项有效时，将发送链接"%e4%b8%ad%e6%96%87.html?a=\x4e\x2d\x65\x87"；而UTF-8选项无效时，将发送链接"\x4e\x2d\x65\x87.html?a=\x4e\x2d\x65\x87"。注意后者前面的"中文"两个字只有4个字节，而前者却有18个字节，这主要时URL编码的原因。 <br /><br />当web server（tomcat）接收到该链接时，将会进行URL解码，即去掉"%"，同时按照ISO8859-1编码（上面已经描述，可以使用URLEncoding来设置成其它编码）识别。上述例子的结果分别是"\ue4\ub8\uad\ue6\u96\u87.html?a=\u4e\u2d\u65\u87"和"\u4e\u2d\u65\u87.html?a=\u4e\u2d\u65\u87"，注意前者前面的"中文"两个字恢复成了6个字符。这里用"\u"，表示是unicode。 <br /><br />所以，由于客户端设置的不同，相同的链接，在服务器上得到了不同结果。这个问题不少人都遇到，却没有很好的解决办法。所以有的网站会建议用户尝试关闭UTF-8选项。不过，下面会描述一个更好的处理办法。 <br /><br />5.2. rewrite <br /><br />熟悉的人都知道，apache有一个功能强大的rewrite模块，这里不描述其功能。需要说明的是该模块会自动将URL解码（去除%），即完成上述web server（tomcat）的部分功能。有相关文档介绍说可以使用[NE]参数来关闭该功能，但我试验并未成功，可能是因为版本（我使用的是apache 2.0.54）问题。另外，当参数中含有"?&amp; "等符号的时候，该功能将导致系统得不到正常结果。 <br /><br />rewrite本身似乎完全是采用字节处理的方式，而不考虑字符串的编码，所以不会带来编码问题。 <br /><br />5.3. URLEncode.encode() <br /><br />这是Java本身提供对的URL编码函数，完成的工作和上述UTF-8选项有效时浏览器所做的工作相似。值得说明的是，java已经不赞成不指定编码来使用该方法（deprecated）。应该在使用的时候增加编码指定。 <br /><br />当不指定编码的时候，该方法使用系统默认编码，这会导致软件运行结果得不确定。比如对于"中文"，当系统默认编码为"gb2312"时，结果是"%4e%2d%65%87"，而默认编码为"UTF-8"，结果却是"%e4%b8%ad%e6%96%87"，后续程序将难以处理。另外，这儿说的系统默认编码是由运行tomcat时的环境变量LC_ALL和LANG等决定的，曾经出现过tomcat重启后就出现乱码的问题，最后才郁闷的发现是因为修改修改了这两个环境变量。 <br /><br />建议统一指定为"UTF-8"编码，可能需要修改相应的程序。 <br /><br />5.4. 一个解决方案 <br /><br />上面说起过，因为浏览器设置的不同，对于同一个链接，web server收到的是不同内容，而软件系统有无法知道这中间的区别，所以这一协议目前还存在缺陷。 <br /><br />针对具体问题，不应该侥幸认为所有客户的IE设置都是UTF-8有效的，也不应该粗暴的建议用户修改IE设置，要知道，用户不可能去记住每一个web server的设置。所以，接下来的解决办法就只能是让自己的程序多一点智能：根据内容来分析编码是否UTF-8。 <br /><br />比较幸运的是UTF-8编码相当有规律，所以可以通过分析传输过来的链接内容，来判断是否是正确的UTF-8字符，如果是，则以UTF-8处理之，如果不是，则使用客户默认编码（比如"GBK"），下面是一个判断是否UTF-8的例子，如果你了解相应规律，就容易理解。 <br /><br />public static boolean isValidUtf8(byte[] b,int aMaxCount){ <br /><br />       int lLen=b.length,lCharCount=0; <br /><br />       for(int i=0;i&lt;lLen &amp;&amp; lCharCount&lt;aMaxCount;++lCharCount){ <br /><br />              byte lByte=b[i++];//to fast operation, ++ now, ready for the following for(;;) <br /><br />              if(lByte&gt;=0) continue;//&gt;=0 is normal ascii <br /><br />              if(lByte&lt;(byte)0xc0 || lByte&gt;(byte)0xfd) return false; <br /><br />              int lCount=lByte&gt;(byte)0xfc?5:lByte&gt;(byte)0xf8?4 <br /><br />                     :lByte&gt;(byte)0xf0?3:lByte&gt;(byte)0xe0?2:1; <br /><br />              if(i+lCount&gt;lLen) return false; <br /><br />              for(int j=0;j&lt;lCount;++j,++i) if(b[i]&gt;=(byte)0xc0) return false; <br /><br />       } <br /><br />       return true; <br /><br />} <br /><br />相应地，一个使用上述方法的例子如下： <br /><br />public static String getUrlParam(String aStr,String aDefaultCharset) <br /><br />throws UnsupportedEncodingException{ <br /><br />       if(aStr==null) return null; <br /><br />       byte[] lBytes=aStr.getBytes("ISO-8859-1"); <br /><br />       return new String(lBytes,StringUtil.isValidUtf8(lBytes)?"utf8":aDefaultCharset); <br /><br />} <br /><br />不过，该方法也存在缺陷，如下两方面： <br /><br />l 没有包括对用户默认编码的识别，这可以根据请求信息的语言来判断，但不一定正确，因为我们有时候也会输入一些韩文，或者其他文字。 <br /><br />l 可能会错误判断UTF-8字符，一个例子是"学习"两个字，其GBK编码是" \xd1\xa7\xcf\xb0"，如果使用上述isValidUtf8方法判断，将返回true。可以考虑使用更严格的判断方法，不过估计效果不大。 <br /><br />有一个例子可以证明google也遇到了上述问题，而且也采用了和上述相似的处理方法，比如，如果在地址栏中输入"http://www.google.com/search?hl=zh-CN&amp;newwindow=1&amp;q=学习"，google将无法正确识别，而其他汉字一般能够正常识别。 <br /><br />最后，应该补充说明一下，如果不使用rewrite规则，或者通过表单提交数据，其实并不一定会遇到上述问题，因为这时可以在提交数据时指定希望的编码。另外，中文文件名确实会带来问题，应该谨慎使用。 <br /><br />6. 其它 <br /><br />下面描述一些和编码有关的其他问题。 <br /><br />6.1. SecureCRT <br /><br />除了浏览器和控制台与编码有关外，一些客户端也很有关系。比如在使用SecureCRT连接linux时，应该让SecureCRT的显示编码（不同的session，可以有不同的编码设置）和linux的编码环境变量保持一致。否则看到的一些帮助信息，就可能是乱码。 <br /><br />另外，mysql有自己的编码设置，也应该保持和SecureCRT的显示编码一致。否则通过SecureCRT执行sql语句的时候，可能无法处理中文字符，查询结果也会出现乱码。 <br /><br />对于Utf-8文件，很多编辑器（比如记事本）会在文件开头增加三个不可见的标志字节，如果作为mysql的输入文件，则必须要去掉这三个字符。（用linux的vi保存可以去掉这三个字符）。一个有趣的现象是，在中文windows下，创建一个新txt文件，用记事本打开，输入"连通"两个字，保存，再打开，你会发现两个字没了，只留下一个小黑点。 <br /><br />6.2. 过滤器 <br /><br />如果需要统一设置编码，则通过filter进行设置是个不错的选择。在filter class中，可以统一为需要的请求或者回应设置编码。参加上述setCharacterEncoding()。这个类apache已经给出了可以直接使用的例子SetCharacterEncodingFilter。 <br /><br />6.3. POST和GET <br /><br />很明显，以POST提交信息时，URL有更好的可读性，而且可以方便的使用setCharacterEncoding()来处理字符集问题。但GET方法形成的URL能够更容易表达网页的实际内容，也能够用于收藏。 <br /><br />从统一的角度考虑问题，建议采用GET方法，这要求在程序中获得参数是进行特殊处理，而无法使用setCharacterEncoding()的便利，如果不考虑rewrite，就不存在IE的UTF-8问题，可以考虑通过设置URIEncoding来方便获取URL中的参数。 <br /><br />6.4. 简繁体编码转换 <br /><br />GBK同时包含简体和繁体编码，也就是说同一个字，由于编码不同，在GBK编码下属于两个字。有时候，为了正确取得完整的结果，应该将繁体和简体进行统一。可以考虑将UTF、GBK中的所有繁体字，转换为相应的简体字，BIG5编码的数据，也应该转化成相应的简体字。当然，仍旧以UTF编码存储。 <br /><br />例如，对于"语言 ?言"，用UTF表示为"\xE8\xAF\xAD\xE8\xA8\x80 \xE8\xAA\x9E\xE8\xA8\x80"，进行简繁体编码转换后应该是两个相同的 "\xE8\xAF\xAD\xE8\xA8\x80&gt;"。 </font>
<img src ="http://www.blogjava.net/bcims/aggbug/98820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-02-08 17:14 <a href="http://www.blogjava.net/bcims/archive/2007/02/08/98820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>模仿MSN用户上线popup的例子 </title><link>http://www.blogjava.net/bcims/archive/2007/02/05/98138.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Mon, 05 Feb 2007 15:05:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/02/05/98138.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/98138.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/02/05/98138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/98138.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/98138.html</trackback:ping><description><![CDATA[相信大家都使用过MSN，QQ这样的即时聊天类软件，对于它们的好友上线提示功能并不陌生吧？从屏幕右下角弹出一个小界面，慢慢上升，最后消失。我们能不能在自已的程序中也做出相同的功能呢？能！笔者现用JAVA和eclipse的SWT用户界面组件实现这个功能。 <br /><br />　　<strong>什么是SWT呢？</strong><br /><br />　　SWT原来是eclipse项目组为开发eclipse IDE所编写的图形界面API，运行时，其先判断本机是否有相同的界面元素，如果有则直接调用显示，如没有才进行模拟显示。其运行机制使速度比AWT，SWING快很多。<br /><br />　　了解更多请看：http://www.eclipse.org/swt<br /><br />　　<font size="3"><strong>编写思路<br /></strong><br />　　先取得用户屏幕大小，用屏幕高度减去popup界面的高度计算出popup界面在屏幕显示的最高位置（当界面移动到此位置时就停止移动）。<br /><br /></font><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1"><tbody><tr><td>Rectangle area = Display.getDefault().getClientArea(); <br />int upPosition = area.height - 100;</td></tr></tbody></table><br />　　用屏幕高度加上popup界面的高度就计算出popup界面的初始位置（初始化时不可见，然后慢慢上移到upPosition点后停止移动，再显示若干秒后消失）。<br /><br /><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1"><tbody><tr><td>int downPosition = area.height + 100;</td></tr></tbody></table><br />　　移动位置我们用线程实现，当初始化界面后，调用start()方法运行此线程，在线程中循环判断downPosition的大小是否小于upPosition，如果小于的话说明还未到停止的时候，设置popup界面的边框为downPosition，并暂停10毫秒，如果downPosition大于upPosition的，说明popup界面已移动到了最高位置。调用sleep()暂停5秒钟后关闭界面并退出程序。就这么简单，ok, Let's go! 下面给出整个程序代码：<br /><br />这是运行后的效果<img height="153" alt="o_img1.gif" src="http://www.blogjava.net/images/blogjava_net/hexuzhong/1137/o_img1.gif" width="219" border="0" /> <br />在这之前要像我下面一样把swt包导进来！<br /> <img height="338" alt="{DA72CB76-6E12-4B99-9C8A-6C0A9D09EFAD}.JPG" src="http://www.blogjava.net/images/blogjava_net/bcims/king/{DA72CB76-6E12-4B99-9C8A-6C0A9D09EFAD}.JPG" width="914" border="0" /><br /><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Test.java</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.SWT;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.events.SelectionAdapter;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.events.SelectionEvent;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.widgets.Button;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.widgets.Display;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.widgets.Shell;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_272_923_Open_Image" onclick="this.style.display='none'; Codehighlighter1_272_923_Open_Text.style.display='none'; Codehighlighter1_272_923_Closed_Image.style.display='inline'; Codehighlighter1_272_923_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_272_923_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_272_923_Closed_Text.style.display='none'; Codehighlighter1_272_923_Open_Image.style.display='inline'; Codehighlighter1_272_923_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Test </span><span id="Codehighlighter1_272_923_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_272_923_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_315_921_Open_Image" onclick="this.style.display='none'; Codehighlighter1_315_921_Open_Text.style.display='none'; Codehighlighter1_315_921_Closed_Image.style.display='inline'; Codehighlighter1_315_921_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_315_921_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_315_921_Closed_Text.style.display='none'; Codehighlighter1_315_921_Open_Image.style.display='inline'; Codehighlighter1_315_921_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args) </span><span id="Codehighlighter1_315_921_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_315_921_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  final Display display </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Display();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  Shell shell </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Shell();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  shell.setText(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">aaa</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  shell.setSize(</span><span style="COLOR: #000000">250</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">150</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  final Button button </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Button(shell, SWT.NONE);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  button.setBounds(</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">25</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  button.setText(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">button</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);  <br /><img id="Codehighlighter1_617_772_Open_Image" onclick="this.style.display='none'; Codehighlighter1_617_772_Open_Text.style.display='none'; Codehighlighter1_617_772_Closed_Image.style.display='inline'; Codehighlighter1_617_772_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_617_772_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_617_772_Closed_Text.style.display='none'; Codehighlighter1_617_772_Open_Image.style.display='inline'; Codehighlighter1_617_772_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  button.addSelectionListener(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> SelectionAdapter() </span><span id="Codehighlighter1_617_772_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_617_772_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_667_768_Open_Image" onclick="this.style.display='none'; Codehighlighter1_667_768_Open_Text.style.display='none'; Codehighlighter1_667_768_Closed_Image.style.display='inline'; Codehighlighter1_667_768_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_667_768_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_667_768_Closed_Text.style.display='none'; Codehighlighter1_667_768_Open_Image.style.display='inline'; Codehighlighter1_667_768_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />   </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> widgetSelected(SelectionEvent e) </span><span id="Codehighlighter1_667_768_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_667_768_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    System.</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">click</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Popup popup </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Popup(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">您的好友xxx上线了。</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    popup.start();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />   }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  shell.open();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img id="Codehighlighter1_830_897_Open_Image" onclick="this.style.display='none'; Codehighlighter1_830_897_Open_Text.style.display='none'; Codehighlighter1_830_897_Closed_Image.style.display='inline'; Codehighlighter1_830_897_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_830_897_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_830_897_Closed_Text.style.display='none'; Codehighlighter1_830_897_Open_Image.style.display='inline'; Codehighlighter1_830_897_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">shell.isDisposed()) </span><span id="Codehighlighter1_830_897_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_830_897_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_867_893_Open_Image" onclick="this.style.display='none'; Codehighlighter1_867_893_Open_Text.style.display='none'; Codehighlighter1_867_893_Closed_Image.style.display='inline'; Codehighlighter1_867_893_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_867_893_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_867_893_Closed_Text.style.display='none'; Codehighlighter1_867_893_Open_Image.style.display='inline'; Codehighlighter1_867_893_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />   </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">display.readAndDispatch()) </span><span id="Codehighlighter1_867_893_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_867_893_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    display.sleep();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />   }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  display.dispose();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Popup.java</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.SWT;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.graphics.Rectangle;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.widgets.Display;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.widgets.Shell;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />import org.eclipse.swt.widgets.Text;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_1162_2373_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1162_2373_Open_Text.style.display='none'; Codehighlighter1_1162_2373_Closed_Image.style.display='inline'; Codehighlighter1_1162_2373_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1162_2373_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1162_2373_Closed_Text.style.display='none'; Codehighlighter1_1162_2373_Open_Image.style.display='inline'; Codehighlighter1_1162_2373_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Popup extends Thread </span><span id="Codehighlighter1_1162_2373_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1162_2373_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> Shell shell;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> moveStep </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> upPosition;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> downPosition;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> leftPosition;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1331_1786_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1331_1786_Open_Text.style.display='none'; Codehighlighter1_1331_1786_Closed_Image.style.display='inline'; Codehighlighter1_1331_1786_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1331_1786_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1331_1786_Closed_Text.style.display='none'; Codehighlighter1_1331_1786_Open_Image.style.display='inline'; Codehighlighter1_1331_1786_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Popup(final String message) </span><span id="Codehighlighter1_1331_1786_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1331_1786_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  shell </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Shell(SWT.ON_TOP);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  Text text </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Text(shell, SWT.MULTI </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> SWT.WRAP);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  text.setBounds(</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">180</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">80</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  text.setBackground(shell.getBackground());  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  text.setText(message);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  Rectangle area </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Display.getDefault().getClientArea();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  upPosition </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> area.height </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  downPosition </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> area.height </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  leftPosition </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> area.width </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">180</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  shell.setSize(</span><span style="COLOR: #000000">180</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  shell.setLocation(leftPosition, downPosition);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  shell.open();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1808_2371_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1808_2371_Open_Text.style.display='none'; Codehighlighter1_1808_2371_Closed_Image.style.display='inline'; Codehighlighter1_1808_2371_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1808_2371_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1808_2371_Closed_Text.style.display='none'; Codehighlighter1_1808_2371_Open_Image.style.display='inline'; Codehighlighter1_1808_2371_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> run() </span><span id="Codehighlighter1_1808_2371_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1808_2371_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  Display display </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> shell.getDisplay();<br /><img id="Codehighlighter1_1866_2368_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1866_2368_Open_Text.style.display='none'; Codehighlighter1_1866_2368_Closed_Image.style.display='inline'; Codehighlighter1_1866_2368_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1866_2368_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1866_2368_Closed_Text.style.display='none'; Codehighlighter1_1866_2368_Open_Image.style.display='inline'; Codehighlighter1_1866_2368_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_1866_2368_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1866_2368_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_1875_2301_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1875_2301_Open_Text.style.display='none'; Codehighlighter1_1875_2301_Closed_Image.style.display='inline'; Codehighlighter1_1875_2301_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1875_2301_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1875_2301_Closed_Text.style.display='none'; Codehighlighter1_1875_2301_Open_Image.style.display='inline'; Codehighlighter1_1875_2301_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />   </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_1875_2301_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1875_2301_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Thread.sleep(</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">);<br /><img id="Codehighlighter1_1947_2151_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1947_2151_Open_Text.style.display='none'; Codehighlighter1_1947_2151_Closed_Image.style.display='inline'; Codehighlighter1_1947_2151_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1947_2151_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1947_2151_Closed_Text.style.display='none'; Codehighlighter1_1947_2151_Open_Image.style.display='inline'; Codehighlighter1_1947_2151_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ((downPosition </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> moveStep) </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> upPosition) </span><span id="Codehighlighter1_1947_2151_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1947_2151_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_1987_2143_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1987_2143_Open_Text.style.display='none'; Codehighlighter1_1987_2143_Closed_Image.style.display='inline'; Codehighlighter1_1987_2143_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1987_2143_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1987_2143_Closed_Text.style.display='none'; Codehighlighter1_1987_2143_Open_Image.style.display='inline'; Codehighlighter1_1987_2143_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />     display.asyncExec(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Runnable() </span><span id="Codehighlighter1_1987_2143_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1987_2143_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_2013_2136_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2013_2136_Open_Text.style.display='none'; Codehighlighter1_2013_2136_Closed_Image.style.display='inline'; Codehighlighter1_2013_2136_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2013_2136_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2013_2136_Closed_Text.style.display='none'; Codehighlighter1_2013_2136_Open_Image.style.display='inline'; Codehighlighter1_2013_2136_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> run() </span><span id="Codehighlighter1_2013_2136_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_2013_2136_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       shell.setLocation(<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        leftPosition,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        downPosition </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> moveStep);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       downPosition </span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000"> moveStep;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />      }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     }</span></span><span style="COLOR: #000000">);<br /><img id="Codehighlighter1_2158_2296_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2158_2296_Open_Text.style.display='none'; Codehighlighter1_2158_2296_Closed_Image.style.display='inline'; Codehighlighter1_2158_2296_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2158_2296_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2158_2296_Closed_Text.style.display='none'; Codehighlighter1_2158_2296_Open_Image.style.display='inline'; Codehighlighter1_2158_2296_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_2158_2296_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_2158_2296_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     Thread.sleep(</span><span style="COLOR: #000000">5000</span><span style="COLOR: #000000">);<br /><img id="Codehighlighter1_2223_2288_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2223_2288_Open_Text.style.display='none'; Codehighlighter1_2223_2288_Closed_Image.style.display='inline'; Codehighlighter1_2223_2288_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2223_2288_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2223_2288_Closed_Text.style.display='none'; Codehighlighter1_2223_2288_Open_Image.style.display='inline'; Codehighlighter1_2223_2288_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />     display.asyncExec(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Runnable() </span><span id="Codehighlighter1_2223_2288_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_2223_2288_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_2249_2281_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2249_2281_Open_Text.style.display='none'; Codehighlighter1_2249_2281_Closed_Image.style.display='inline'; Codehighlighter1_2249_2281_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2249_2281_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2249_2281_Closed_Text.style.display='none'; Codehighlighter1_2249_2281_Open_Image.style.display='inline'; Codehighlighter1_2249_2281_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> run() </span><span id="Codehighlighter1_2249_2281_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_2249_2281_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       shell.dispose();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />      }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     }</span></span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_2334_2364_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2334_2364_Open_Text.style.display='none'; Codehighlighter1_2334_2364_Closed_Image.style.display='inline'; Codehighlighter1_2334_2364_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2334_2364_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2334_2364_Closed_Text.style.display='none'; Codehighlighter1_2334_2364_Open_Image.style.display='inline'; Codehighlighter1_2334_2364_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />   }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (InterruptedException e) </span><span id="Codehighlighter1_2334_2364_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_2334_2364_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    e.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />   }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /></span><img src ="http://www.blogjava.net/bcims/aggbug/98138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-02-05 23:05 <a href="http://www.blogjava.net/bcims/archive/2007/02/05/98138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决hibernate+mysql中文问题 </title><link>http://www.blogjava.net/bcims/archive/2007/02/05/98074.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Mon, 05 Feb 2007 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/02/05/98074.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/98074.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/02/05/98074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/98074.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/98074.html</trackback:ping><description><![CDATA[
		<p>在网上有很多这方面文章,依照上面也解决过,但是修改了mysql的配置文件my.ini.感觉在部署时不是很爽.<br /></p>
		<p>就是default-character-set=gbk  ，可以把gbk改成别的。这里给出另一种解决方法(mysql-5.5). :)低版本的mysql似乎没出现过中文问题</p>
		<p>1.添加一个过滤器,将字符集编码设为UTF-8.<br />修改web.xml:</p>
		<p> &lt;filter&gt;<br />  &lt;filter-name&gt;SetCharacterEncoding&lt;/filter-name&gt;<br />  &lt;filter-class&gt;hxz.filter.SetEncodingFilter&lt;/filter-class&gt;<br />  &lt;init-param&gt;<br />   &lt;param-name&gt;encoding&lt;/param-name&gt;<br />   &lt;param-value&gt;UTF-8&lt;/param-value&gt;<br />  &lt;/init-param&gt;<br /> &lt;/filter&gt;<br /> <br /> &lt;filter-mapping&gt;<br />  &lt;filter-name&gt;SetCharacterEncoding&lt;/filter-name&gt;<br />  &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br /> &lt;/filter-mapping&gt;</p>
		<p>新建一个过滤器:<br />package hxz.filter;</p>
		<p>import java.io.IOException;</p>
		<p>import javax.servlet.*;</p>
		<p>public class SetEncodingFilter implements Filter {<br /> <br /> // default character encoding<br /> String defaultEncoding = "UTF-8"; <br /> <br /> public void init(FilterConfig config) throws ServletException {<br />  String encoding = config.getInitParameter("encoding");<br />  if (encoding != null) {<br />   defaultEncoding = encoding;<br />  }<br /> }</p>
		<p> public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {<br />  request.setCharacterEncoding(defaultEncoding);<br />  chain.doFilter(request, response);<br /> }</p>
		<p> public void destroy() {<br />  defaultEncoding = null;<br /> }</p>
		<p>}</p>
		<p>2.修改hibernate配置文件:<br />&lt;property name="url"&gt;<br />  &lt;value&gt;jdbc:mysql://localhost:3306/test?useUnicode=true&amp;amp;characterEncoding=UTF-8&lt;/value&gt;<br />&lt;/property&gt;<br />注意后面的:useUnicode=true&amp;amp;characterEncoding=UTF-8, 在xml中&amp;要改为;amp;</p>
		<p>3.在新版本中mysql建表时,你可以选择一种字符集,将它设为utf-8.<br />jsp或servlet中把字符集改为UTF-8.<br /></p>
		<p>//要注意当你从jsp页里得到数据时不要//String username=new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8");只要<br />  String username=request.getParameter("username");就可以了！！！！！！！！！！！！<br />  <br /><br /><br />4.trying...<br /></p>
<img src ="http://www.blogjava.net/bcims/aggbug/98074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-02-05 17:30 <a href="http://www.blogjava.net/bcims/archive/2007/02/05/98074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat与Apache整合指南 </title><link>http://www.blogjava.net/bcims/archive/2007/01/21/95137.html</link><dc:creator>EricWong</dc:creator><author>EricWong</author><pubDate>Sun, 21 Jan 2007 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/bcims/archive/2007/01/21/95137.html</guid><wfw:comment>http://www.blogjava.net/bcims/comments/95137.html</wfw:comment><comments>http://www.blogjava.net/bcims/archive/2007/01/21/95137.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bcims/comments/commentRss/95137.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bcims/services/trackbacks/95137.html</trackback:ping><description><![CDATA[
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span style="FONT-SIZE: 12pt; mso-hansi-font-family: 宋体; mso-bidi-font-size: 10.5pt">
								<font face="宋体">
										<font size="2">第一部分：整合前的准备工作</font>
								</font>
						</span>
				</b>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">准备需要的软件<span lang="EN-US">: 
<p></p></span></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo1; tab-stops: list 18.0pt">
				<font size="2">
						<b>
								<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">
												<font face="宋体">1、</font>
												<span style="FONT: 7pt 'Times New Roman'">
												</span>
										</span>
								</span>
						</b>
						<b>
								<span style="mso-hansi-font-family: 宋体">
										<font face="宋体">下载<span lang="EN-US">j2sdk<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"></chsdate>1.4.2 
<p></p></span></font>
								</span>
						</b>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">下载地址<span lang="EN-US">:http://download.sun.com</span></font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt">
				<font face="宋体">
						<font size="2">
								<b>
										<span lang="EN-US" style="mso-hansi-font-family: 宋体">2</span>
								</b>
								<b>
										<span style="mso-hansi-font-family: 宋体">、下载<span lang="EN-US">Apache <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"></chsdate>2.0.48 
<p></p></span></span>
								</b>
						</font>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">下载地址：<span lang="EN-US"><a href="http://www.apache.org/">http://www.apache.org/</a></span></font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt">
				<font face="宋体">
						<font size="2">
								<b>
										<span lang="EN-US" style="mso-hansi-font-family: 宋体">3</span>
								</b>
								<b>
										<span style="mso-hansi-font-family: 宋体">、下载<span lang="EN-US">Tomcat <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"></chsdate>5.0.14 
<p></p></span></span>
								</b>
						</font>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">下载地址<span lang="EN-US">:http://Jakarta.apache.org</span></font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt">
				<font face="宋体">
						<font size="2">
								<b>
										<span lang="EN-US" style="mso-hansi-font-family: 宋体">4</span>
								</b>
								<b>
										<span style="mso-hansi-font-family: 宋体">、下载<span lang="EN-US">mod_jk_<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"></chsdate>1.2.5_2.0.47.dll 
<p></p></span></span>
								</b>
						</font>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">下载地址<span lang="EN-US">:tomcat</span>的下载地址下载。</font>
						</font>
				</span>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">最新的下载地址:<a href="http://www.apache.org/dist/jakarta/tomcat-connectors/jk/binaries/win32/jk-1.2.6/">http://www.apache.org/dist/jakarta/tomcat-connectors/jk/binaries/win32/jk-1.2.6/</a></font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span style="FONT-SIZE: 12pt; mso-hansi-font-family: 宋体; mso-bidi-font-size: 10.5pt">
								<font face="宋体">
										<font size="2">第二部分：配置前的初始化工作</font>
								</font>
						</span>
				</b>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt">
				<font size="2">
						<b>
								<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">
												<font face="宋体">1、</font>
												<span style="FONT: 7pt 'Times New Roman'">
												</span>
										</span>
								</span>
						</b>
						<b>
								<span style="mso-hansi-font-family: 宋体">
										<font face="宋体">安装<span lang="EN-US">j2sdk<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"></chsdate>1.4.2 
<p></p></span></font>
								</span>
						</b>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">运行<span lang="EN-US">j2sdk<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"></chsdate>1.4.2</span>的自动安装包，安装<span lang="EN-US">j2sdk1.4.2</span>到<span lang="EN-US">C:\j2sdk\j2sdk1.4.2</span>目录下。</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt">
				<font size="2">
						<b>
								<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">
												<font face="宋体">2、</font>
												<span style="FONT: 7pt 'Times New Roman'">
												</span>
										</span>
								</span>
						</b>
						<b>
								<span style="mso-hansi-font-family: 宋体">
										<font face="宋体">安装<span lang="EN-US">Apache</span>服务器<span lang="EN-US"><p></p></span></font>
								</span>
						</b>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">运行<span lang="EN-US">Apache</span>的自动安装包，安装<span lang="EN-US">Apache<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"></chsdate>2.0.48</span>到<span lang="EN-US">D:\Apache\Apache2</span>目录下。</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt">
				<font size="2">
						<b>
								<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">
												<font face="宋体">3、</font>
												<span style="FONT: 7pt 'Times New Roman'">
												</span>
										</span>
								</span>
						</b>
						<b>
								<span style="mso-hansi-font-family: 宋体">
										<font face="宋体">安装<span lang="EN-US">Tomcat</span>服务器<span lang="EN-US"><p></p></span></font>
								</span>
						</b>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">运行<span lang="EN-US">Tomcat</span>的自动安装包，安装<span lang="EN-US">Tomcat<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"></chsdate>5.0.14</span>到<span lang="EN-US">D:\Apache\Tomcat5</span>目录下。</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt">
				<font size="2">
						<b>
								<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">
												<font face="宋体">4、</font>
												<span style="FONT: 7pt 'Times New Roman'">
												</span>
										</span>
								</span>
						</b>
						<b>
								<span style="mso-hansi-font-family: 宋体">
										<font face="宋体">安装<span lang="EN-US">mod_jk 
<p></p></span></font>
								</span>
						</b>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">拷贝<span lang="EN-US">mod_jk_<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"></chsdate>1.2.5_2.0.47.dll</span>文件到<span lang="EN-US">D:\Apache\Apache2\modules</span>文件夹下。</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo2; tab-stops: list 18.0pt">
				<font size="2">
						<b>
								<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">
												<font face="宋体">5、</font>
												<span style="FONT: 7pt 'Times New Roman'">
												</span>
										</span>
								</span>
						</b>
						<b>
								<span style="mso-hansi-font-family: 宋体">
										<font face="宋体">准备工作目录和测试文件<span lang="EN-US"><p></p></span></font>
								</span>
						</b>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">在<span lang="EN-US">D:</span>盘新建目录<span lang="EN-US">www,</span>并创建一个基本的<span lang="EN-US">index.jsp</span>文件，源码如下所示：</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">&lt;% 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">out.println("&lt;html&gt;"); 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">out.println("&lt;body&gt;"); 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">out.println("Welcome"); 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">out.println("&lt;/body&gt;"); 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">out.println("&lt;/html&gt;"); 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">%&gt;</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span style="FONT-SIZE: 12pt; mso-hansi-font-family: 宋体; mso-bidi-font-size: 10.5pt">
								<font face="宋体">
										<font size="2">第三部分：配置<span lang="EN-US">Apache</span>服务器</font>
								</font>
						</span>
				</b>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">编辑<span lang="EN-US">httpd.conf</span>文件<span lang="EN-US">,</span>使用文本编辑器打开<span lang="EN-US">httpd.conf</span>文件，在文件的最后添加如下内容<span lang="EN-US">:</span></font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2"># Using mod_jk2.dll to redirect dynamic calls to Tomcat 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">LoadModule jk_module modules/mod_jk_<chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"></chsdate>1.2.5_2.0.47.dll 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">JkWorkersFile "D:/Apache/Tomcat5/conf/workers.properties" 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">JkLogFile "D:/Apache/Tomcat5/logs/mod_jk2.log"<span style="mso-spacerun: yes">  </span><p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">JkLogLevel info 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">JkMount /servlet/* ajp13 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">JkMount /*.jsp ajp13 </font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">Alias /web "D:/www/"<span style="mso-spacerun: yes">  </span></font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">&lt;Directory "D:/www"&gt;<span style="mso-spacerun: yes">  </span><p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">Options Indexes MultiViews<span style="mso-spacerun: yes">  </span><p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">AddOutputFilter Includes html 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">AllowOverride None<span style="mso-spacerun: yes">  </span><p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">Order allow,deny<span style="mso-spacerun: yes">  </span><p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">Allow from all<span style="mso-spacerun: yes">  </span><p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">&lt;/Directory&gt;<span style="mso-spacerun: yes">  </span></font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<font face="宋体">
						<font size="2">
								<span lang="EN-US" style="mso-hansi-font-family: 宋体">#</span>
								<span style="mso-hansi-font-family: 宋体">包含<span lang="EN-US">Tomcat</span>中的<span lang="EN-US">mod_jk.conf</span>文件<span lang="EN-US"><p></p></span></span>
						</font>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">Include D:\Apache\Tomcat5\conf\auto\mod_jk.conf</font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span style="FONT-SIZE: 12pt; mso-hansi-font-family: 宋体; mso-bidi-font-size: 10.5pt">
								<font face="宋体">
										<font size="2">第四部分：配置<span lang="EN-US">Tomcat</span>服务器</font>
								</font>
						</span>
				</b>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo3; tab-stops: list 18.0pt">
				<font size="2">
						<b>
								<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">
												<font face="宋体">1、</font>
												<span style="FONT: 7pt 'Times New Roman'">
												</span>
										</span>
								</span>
						</b>
						<b>
								<span style="mso-hansi-font-family: 宋体">
										<font face="宋体">建立<span lang="EN-US">workers.properties</span>文件<span lang="EN-US"><p></p></span></font>
								</span>
						</b>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">在<span lang="EN-US">D:/Apache/Tomcat5/conf/</span>目录下新建文本文档并命名为<span lang="EN-US">workers.properties</span>，写入如下内容：</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体" size="2">workers.tomcat_home=C:\Tomcat  #</font>
				</span>
				<span style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体" size="2">让<span lang="EN-US">mod_jk</span>模块知道</font>
						<font face="宋体">
								<font size="2">
										<span lang="EN-US">Tomcat <br />workers.java_home=C:\jdk  #</span>让<span lang="EN-US">mod_jk</span>模块知道</font>
						</font>
						<font face="宋体">
								<font size="2">
										<span lang="EN-US">j2sdk <br />ps=\ <br />worker.list=ajp13  #</span>模块版本<span lang="EN-US">,</span>现有<span lang="EN-US">ajp14</span>了<span lang="EN-US">,</span>不要修改</font>
						</font>
						<font face="宋体">
								<font size="2">
										<span lang="EN-US">
												<br />worker.ajp13.port=8009  #</span>工作端口<span lang="EN-US">,</span>若没占用则不用修改</font>
						</font>
						<font face="宋体">
								<font size="2">
										<span lang="EN-US">
												<br />worker.ajp13.host=localhost  #</span>本机<span lang="EN-US">,</span>若上面的<span lang="EN-US">Apache</span>主机不为<span lang="EN-US">localhost,</span>作相应修改</font>
						</font>
						<font face="宋体">
								<font size="2">
										<span lang="EN-US">
												<br />worker.ajp13.type=ajp13  #</span>类型</font>
						</font>
						<font face="宋体">
								<font size="2">
										<span lang="EN-US">
												<br />worker.ajp13.lbfactor=1  #</span>代理数<span lang="EN-US">,</span>不用修改</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo3; tab-stops: list 18.0pt">
				<font size="2">
						<b>
								<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">
												<font face="宋体">2、</font>
												<span style="FONT: 7pt 'Times New Roman'">
												</span>
										</span>
								</span>
						</b>
						<b>
								<span style="mso-hansi-font-family: 宋体">
										<font face="宋体">修改<span lang="EN-US">server.xml</span>文件</font>
								</span>
						</b>
				</font>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">找到如下的配置代码：</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">&lt;!-- Tomcat Root Context --&gt; 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">&lt;!-- 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">&lt;Context path="" docBase="ROOT" debug="0"&gt; 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">--&gt;</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">在其后面增加如下一行：<span lang="EN-US"><p></p></span></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<font face="宋体">
						<font size="2">
								<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">&lt;Context path="/web" docBase="D:/www" debug="0" reloadable="true" &gt; &lt;/Context&gt;</span>
						</font>
				</font>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo3; tab-stops: list 18.0pt">
				<font size="2">
						<b>
								<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-family: 宋体">
										<span style="mso-list: Ignore">
												<font face="宋体">3、</font>
												<span style="FONT: 7pt 'Times New Roman'">
												</span>
										</span>
								</span>
						</b>
						<font face="宋体">
								<b>
										<span style="mso-hansi-font-family: 宋体">修改</span>
								</b>
								<b>
										<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">jk2.properties</span>
								</b>
								<b>
										<span style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">文件</span>
								</b>
								<b>
										<span lang="EN-US" style="mso-hansi-font-family: 宋体">
												<p>
												</p>
										</span>
								</b>
						</font>
				</font>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2">修改后内容如下：</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2">## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2">## WHEN YOU EDIT THE FILE.</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2">## COMMENTS WILL BE _LOST_</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2">## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># Set the desired handler list 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2">handler.list=apr,request,channelJni 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># Override the default port for the socketChannel 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># channelSocket.port=8019 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># Default: 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># channelUnix.file=${jkHome}/work/jk2.socket 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># Just to check if the the config<span style="mso-spacerun: yes">  </span>is working 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># shm.file=${jkHome}/work/jk2.shm</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># In order to enable jni use any channelJni directive 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># channelJni.disabled = 0 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># And one of the following directives:</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># apr.jniModeSo=/opt/apache2/modules/mod_jk2.so</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># If set to inprocess the mod_jk2 will Register natives itself 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># This will enable the starting of the Tomcat from mod_jk2 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2"># apr.jniModeSo=inprocess</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2">#request.tomcatAuthentication=true 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体; mso-bidi-font-size: 9.5pt">
						<font face="宋体">
								<font size="2">request.tomcatAuthentication=false</font>
						</font>
				</span>
				<font face="宋体" size="2"> </font>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span style="FONT-SIZE: 12pt; mso-hansi-font-family: 宋体; mso-bidi-font-size: 10.5pt">
								<font face="宋体">
										<font size="2">第五部分：运行测试程序</font>
								</font>
						</span>
				</b>
				<b>
						<span lang="EN-US" style="FONT-SIZE: 12pt; mso-hansi-font-family: 宋体; mso-bidi-font-size: 10.5pt">
								<font face="宋体">
										<font size="2">
												<span style="mso-tab-count: 1">  </span>
												<p>
												</p>
										</font>
								</font>
						</span>
				</b>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">先启动<span lang="EN-US">Tomcat</span>服务器，然后启动<span lang="EN-US">Apache</span>服务器。<span lang="EN-US"><p></p></span></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">打开<span lang="EN-US">IE</span>浏览器，分别输入如下地址：<span lang="EN-US"><p></p></span></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<a href="http://127.0.0.1/web/index.jsp">
								<font face="宋体" size="2">http://127.0.0.1/web/index.jsp</font>
						</a>
						<p>
						</p>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<a href="http://127.0.0.1:8080/web/index.jsp">
								<font face="宋体" size="2">http://127.0.0.1:8080/web/index.jsp</font>
						</a>
						<p>
						</p>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">如果出现的页面相同，均打印出<span lang="EN-US"><p></p></span></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">Welcome 
<p></p></font>
						</font>
				</span>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>
		</p>
		<p class="MsoPlainText" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span style="mso-hansi-font-family: 宋体">
						<font face="宋体">
								<font size="2">说明配制成功。</font>
						</font>
				</span>
		</p>
<img src ="http://www.blogjava.net/bcims/aggbug/95137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bcims/" target="_blank">EricWong</a> 2007-01-21 15:28 <a href="http://www.blogjava.net/bcims/archive/2007/01/21/95137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>