<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>zhuixinjian</title>
    <description>努力，成就自我！</description>
    <link>http://zhuixinjian.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>一个JSP多级菜单</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/144495" style="color:red;">http://zhuixinjian.javaeye.com/blog/144495</a>&nbsp;
          发表时间: 2007年11月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-c">
    <li class="alt"><span><span class="comment">//****************************************** </span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">//【转载】：http://blog.csdn.net/kanjing/archive/2004/08/06/67561.aspx </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">//****************************************** </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>做网页时，为了节约空间和美观，时常会用到多级的菜单，这里是一个JavaScript和Html混编的一个多级树型菜单的全部代码 &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;%@&nbsp;page&nbsp;contentType=</span><span class="string">&quot;text/html;&nbsp;charset=gb2312&quot;</span><span>&nbsp;language=</span><span class="string">&quot;java&quot;</span><span>&nbsp;</span><span class="keyword">import</span><span>=</span><span class="string">&quot;java.sql.*&quot;</span><span>&nbsp;errorPage=</span><span class="string">&quot;error.jsp&quot;</span><span>&nbsp;%&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;html&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;head&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;title&gt;多级树型菜单&lt;/title&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;meta&nbsp;http-equiv=</span><span class="string">&quot;Content-Type&quot;</span><span>&nbsp;content=</span><span class="string">&quot;text/html;&nbsp;charset=gb2312&quot;</span><span>&nbsp;/&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;script&nbsp;language=</span><span class="string">&quot;JavaScript1.2&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">var</span><span>&nbsp;head=</span><span class="string">&quot;photos/display:''&quot;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>img1=</span><span class="keyword">new</span><span>&nbsp;Image()&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>img1.src=</span><span class="string">&quot;photos/fold.gif&quot;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>img2=</span><span class="keyword">new</span><span>&nbsp;Image()&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>img2.src=</span><span class="string">&quot;photos/open.gif&quot;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">function</span><span>&nbsp;change(){&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">if</span><span>(!document.all)&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(event.srcElement.id==</span><span class="string">&quot;foldheader&quot;</span><span>)&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;srcIndex&nbsp;=&nbsp;event.srcElement.sourceIndex&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;nested&nbsp;=&nbsp;document.all[srcIndex+1]&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(nested.style.display==</span><span class="string">&quot;none&quot;</span><span>)&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nested.style.display=</span><span class="string">''</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.srcElement.style.liststyleImage=</span><span class="string">&quot;url(photos/open.gif)&quot;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nested.style.display=</span><span class="string">&quot;none&quot;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.srcElement.style.liststyleImage=</span><span class="string">&quot;url(photos/fold.gif)&quot;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>document.onclick=change&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="comment">//--&gt;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/script&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;script&nbsp;language=</span><span class="string">&quot;JavaScript&quot;</span><span>&nbsp;type=</span><span class="string">&quot;text/javascript&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;!--&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;popup&nbsp;=&nbsp;</span><span class="keyword">null</span><span>;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">function</span><span>&nbsp;inputorderid()&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;popup&nbsp;=&nbsp;window.open('jspInputOrderid.jsp',&nbsp;'请输入订单编号','width=200,height=150,resizable=0,scrollbars=no');&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">function</span><span>&nbsp;account()&nbsp;{&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;popup&nbsp;=&nbsp;window.open('jspAccountReceivable.jsp',&nbsp;'请选择客户名称','width=200,height=200,resizable=0,scrollbars=no');&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">function</span><span>&nbsp;oppaccount(){&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>popup&nbsp;=&nbsp;window.open('jspOppAccount.jsp',&nbsp;'请选择机会类型','width=200,height=200,resizable=0,scrollbars=no');&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">function</span><span>&nbsp;accountcust(){&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>popup&nbsp;=&nbsp;window.open('jspAccountCust.jsp',&nbsp;'请选择客户地域','width=262,height=150,resizable=0,scrollbars=no');&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">function</span><span>&nbsp;OrderAccount(){&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>popup&nbsp;=&nbsp;window.open('jspAccountOrder.jsp',&nbsp;'请选择客户及订单有效日期范围','width=200,height=200,resizable=0,scrollbars=no');&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comment">//--&gt;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/script&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;style&nbsp;type=</span><span class="string">&quot;text/css&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>li&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>font-family:&nbsp;</span><span class="string">&quot;宋体&quot;</span><span>,&nbsp;</span><span class="string">&quot;新宋体&quot;</span><span>;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>font-size:&nbsp;9pt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>line-height:&nbsp;13pt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>margin-right:&nbsp;5px;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>cursor:&nbsp;hand;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp; </span><span class="preprocessor"></span>&nbsp;</li>
    <li class="alt"><span><span class="preprocessor">#foldheader{&nbsp; </span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>cursor:hand;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>list-style-image:url(photos/fold.gif);&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>font-family:&nbsp;</span><span class="string">&quot;宋体&quot;</span><span>,&nbsp;</span><span class="string">&quot;新宋体&quot;</span><span>;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>font-size:&nbsp;10pt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp; </span><span class="preprocessor"></span>&nbsp;</li>
    <li class="alt"><span><span class="preprocessor">#foldinglist{&nbsp; </span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>list-style-image:url(photos/list.gif);&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>font-family:&nbsp;</span><span class="string">&quot;宋体&quot;</span><span>,&nbsp;</span><span class="string">&quot;新宋体&quot;</span><span>;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>font-size:&nbsp;9pt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>BODY&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>SCROLLBAR-FACE-COLOR:&nbsp;#6699CC;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>SCROLLBAR-HIGHLIGHT-COLOR:&nbsp;#A6C4E1;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>SCROLLBAR-SHADOW-COLOR:&nbsp;#A6C4E1;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>SCROLLBAR-3DLIGHT-COLOR:&nbsp;#A6C4E1;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>SCROLLBAR-ARROW-COLOR:&nbsp;&nbsp;#A6C4E1;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>SCROLLBAR-TRACK-COLOR:&nbsp;#A6C4E1;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>SCROLLBAR-DARKSHADOW-COLOR:&nbsp;#A6C4E1;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;text-decoration:none;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>A:link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;text-decoration:none;&nbsp;&nbsp;color:&nbsp;#000066;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>A:visited&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;text-decoration:none;&nbsp;&nbsp;color:&nbsp;#000033;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>A:hover&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>text-decoration:underline;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>color:&nbsp;#FF0000;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/style&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/head&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;body&nbsp;bgcolor=</span><span class="string">&quot;#CBDCED&quot;</span><span>&nbsp;leftmargin=</span><span class="string">&quot;3&quot;</span><span>&nbsp;topmargin=</span><span class="string">&quot;0&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;table&nbsp;width=</span><span class="string">&quot;100%&quot;</span><span>&nbsp;height=</span><span class="string">&quot;33&quot;</span><span>&nbsp;border=</span><span class="string">&quot;0&quot;</span><span>&nbsp;cellpadding=</span><span class="string">&quot;0&quot;</span><span>&nbsp;cellspacing=</span><span class="string">&quot;0&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;tr&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;/td&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;/tr&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/table&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;table&nbsp;width=</span><span class="string">&quot;100%&quot;</span><span>&nbsp;cellpadding=</span><span class="string">&quot;0&quot;</span><span>&nbsp;cellspacing=</span><span class="string">&quot;0&quot;</span><span>&nbsp;frame=</span><span class="string">&quot;void&quot;</span><span>&nbsp;align=</span><span class="string">&quot;left&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;tr&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;fieldset&nbsp;style=</span><span class="string">&quot;width:100%&quot;</span><span>&nbsp;align=</span><span class="string">&quot;left&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;legend&gt;&lt;a&nbsp;href=</span><span class="string">&quot;&quot;</span><span>&nbsp;target=</span><span class="string">&quot;_blank&quot;</span><span>&gt;&lt;font&nbsp;size=</span><span class="string">&quot;2&quot;</span><span>&gt;&nbsp;JETCRM&nbsp;B/S2003&nbsp;&lt;/font&gt;&lt;/a&gt;&lt;/legend&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dl&nbsp;</span><span class="keyword">class</span><span>=</span><span class="string">&quot;pt12normal&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;&nbsp;客户管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;ul&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;&nbsp;客户管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;dl&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&nbsp;style=</span><span class="string">&quot;display:none&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;customer_add.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;&nbsp;新建客户&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;customer_query.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;&nbsp;客户查询&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;menu.jsp#&quot;</span><span>&nbsp;onClick=</span><span class="string">&quot;accountcust()&quot;</span><span>&gt;&nbsp;客户统计&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;/dl&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;&nbsp;联系人管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;dl&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&nbsp;style=</span><span class="string">&quot;display:none&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;contact_add.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&nbsp;</span><span class="keyword">class</span><span>=black&gt;&nbsp;新建联系人&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;contact_query.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&nbsp;</span><span class="keyword">class</span><span>=black&gt;&nbsp;联系人查询&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;/dl&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;&nbsp;竞争对手管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;dl&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&nbsp;style=</span><span class="string">&quot;display:none&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;adversary_add.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&nbsp;</span><span class="keyword">class</span><span>=black&gt;&nbsp;新建竞争对手&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;adversary_query.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&nbsp;</span><span class="keyword">class</span><span>=black&gt;&nbsp;竞争对手查询&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;/dl&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;/ul&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;服务管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;ul&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&nbsp;style=</span><span class="string">&quot;display:none&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;联系历史&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;dl&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&nbsp;style=</span><span class="string">&quot;display:none&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;ContactHistory_add.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&nbsp;</span><span class="keyword">class</span><span>=black&gt;新建联系记录&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;ContactHistory_list.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&nbsp;</span><span class="keyword">class</span><span>=</span><span class="string">&quot;balck&quot;</span><span>&gt;浏览联系记录&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;/dl&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;li&gt;&nbsp;邮件发送&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;服务请求记录&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;dl&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&nbsp;style=</span><span class="string">&quot;display:none&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jsprequester_add.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&nbsp;</span><span class="keyword">class</span><span>=black&gt;新建服务请求&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;showRequesterlist.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&nbsp;</span><span class="keyword">class</span><span>=</span><span class="string">&quot;balck&quot;</span><span>&gt;服务请求浏览&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;/dl&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;客户投诉&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;dl&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&nbsp;style=</span><span class="string">&quot;display:none&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspFeedback_add.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;新建投诉记录&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;feedback_list.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;投诉查询&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;投诉统计&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;/dl&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;/ul&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;销售管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;ul&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;&nbsp;机会管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;dl&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&nbsp;style=</span><span class="string">&quot;display:none&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspOppMan.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;新建机会&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspOppQuery.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;机会查询&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;menu.jsp#&quot;</span><span>&nbsp;onClick=</span><span class="string">&quot;oppaccount()&quot;</span><span>&gt;机会统计&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;/dl&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;定单管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;dl&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&nbsp;style=</span><span class="string">&quot;display:none&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspNewOrder.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;新建定单&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspOrderQry.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;定单查询&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspFufilOrder.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;订单履行&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspFufilOrder.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;订单履行&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;menu.jsp#&quot;</span><span>&nbsp;onClick=</span><span class="string">&quot;OrderAccount&quot;</span><span>&gt;订单额统计&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;menu.jsp#&quot;</span><span>&nbsp;onClick=</span><span class="string">&quot;&nbsp;inputorderid()&quot;</span><span>&gt;履行或结案&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;menu.jsp#&quot;</span><span>&nbsp;onClick=</span><span class="string">&quot;&nbsp;account()&quot;</span><span>&gt;应收款统计&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;/dl&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;报价管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;dl&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&nbsp;style=</span><span class="string">&quot;display:none&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspQuote_add.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;新建报价单&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspQuote_list.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;浏览报价单&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;/dl&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;/ul&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;系统管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;ul&nbsp;id=</span><span class="string">&quot;foldinglist&quot;</span><span>&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&lt;li&gt;权限管理&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspBaseDataInsert.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;基础数据设置&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jspSetEmployee.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;员工管理&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;li&gt;&lt;a&nbsp;href=</span><span class="string">&quot;jsppurview_set.jsp&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;权限设置&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;/ul&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&nbsp;id=</span><span class="string">&quot;foldheader&quot;</span><span>&gt;&lt;a&nbsp;href=</span><span class="string">&quot;#&quot;</span><span>&nbsp;target=</span><span class="string">&quot;mainFrame&quot;</span><span>&gt;重新登录&lt;/a&gt;&lt;/li&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/dl&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/fieldset&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;/td&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&lt;/tr&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;tr&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp;&lt;/td&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&lt;/tr&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/table&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/body&gt;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/html&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://zhuixinjian.javaeye.com/blog/144495#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 28 Nov 2007 14:09:35 +0800</pubDate>
        <link>http://zhuixinjian.javaeye.com/blog/144495</link>
        <guid>http://zhuixinjian.javaeye.com/blog/144495</guid>
      </item>
      <item>
        <title>恋爱秘籍！！！</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/106190" style="color:red;">http://zhuixinjian.javaeye.com/blog/106190</a>&nbsp;
          发表时间: 2007年07月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          追MM如猎，且为活猎，而后悦之，而后驯之。<br />下猎如饿虎之扑食也，扑之，MM必惊，惊则逃，愤而追，必伤矣。<br />中猎如老叟之垂钓也。以饵诱之，投其所好，然提钩之时，恐有不愿。<br />上猎如蜘蛛之结网也。与MM之亲友结网，MM自难避之，而后可近之，进而悦之。<br />然，上上之猎，乃不猎之猎，以天地之势拥之，以春风之姿抚之，MM遇之，如鱼之投渊，鸟之投林，何其畅矣。缘之所致，自然而然。
          <br/>
          <span style="color:red;">
            <a href="http://zhuixinjian.javaeye.com/blog/106190#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 27 Jul 2007 18:45:02 +0800</pubDate>
        <link>http://zhuixinjian.javaeye.com/blog/106190</link>
        <guid>http://zhuixinjian.javaeye.com/blog/106190</guid>
      </item>
      <item>
        <title>恋爱笔记二</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/103729" style="color:red;">http://zhuixinjian.javaeye.com/blog/103729</a>&nbsp;
          发表时间: 2007年07月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近迷上《重庆森林》中一段音乐《California Dreaming》，很能让人在烦躁的心情中沉静下来。<br />聊天，轻松，愉快，我爱上了这种感觉。<br />可她不愿意来北京，理由是北京的气候不好。她说，在生存压力相同的情况下，气候很重要。<br />她分析问题总是有一条致命伤，如同对待我们的感情，距离是个致命伤一样。那么我该如何解决应对？<br />我想我要做的不是求她来北京，这样只会使我在众多的候选人中一落千丈。我要想办法让她爱上北京的气候！对，就是这样。那么就想想怎么实施吧。<br />请她来北京旅游，我想她对北京的气候应该是被误导性的，北京的气候还是很好的，至少比武汉的夏天凉快，冬天暖和，也正是这样的气候能让这里的人全身心的投入工作。那么什么时候请她来玩呢？我有两个休假时间，一个是马上到来的8月，可能有换休的时间（连续加班5个月，可怜。），但是这个时间是不适合邀请她来北京玩的，虽然她愿意让我接近她，但是一切还是进度有点快了。我或许可以用这个时间回去看看她，在家乡玩玩（有4年没看看家乡的变化了）。那么10.1吧，这是个很好的机会，到9月再修订具体的计划。记住：计划永远没有变化快！
          <br/>
          <span style="color:red;">
            <a href="http://zhuixinjian.javaeye.com/blog/103729#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 21 Jul 2007 10:57:45 +0800</pubDate>
        <link>http://zhuixinjian.javaeye.com/blog/103729</link>
        <guid>http://zhuixinjian.javaeye.com/blog/103729</guid>
      </item>
      <item>
        <title>林肯个人传记</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/103721" style="color:red;">http://zhuixinjian.javaeye.com/blog/103721</a>&nbsp;
          发表时间: 2007年07月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1818年(9岁)，母亲去世。<br /><br />　　1831年(22岁)，经商失败。<br /><br />　　1832年(23岁)，竞选州议员落选。<br /><br />　　同年(23岁)，工作丢了。想就读法学院，但未获入学资格。<br /><br />　　1833年(24岁)，向朋友借钱经商。<br /><br />　　同年年底(24岁)，再次破产。接下来，他花了16年时间才把债还清。<br /><br />　　1834年(25岁)，再次竞选州议员，这次赢了。<br /><br />　　1835年(26岁)，订婚后即将结婚时，未婚妻死了。<br /><br />　　1836年(27岁)，精神完全崩溃，卧病在床六个月。<br /><br />　　1838年(29岁)，争取成为州议员的发言人——没有成功。<br /><br />　　1840年(31岁)，争取成为选举人——落选了。<br /><br />　　1843年(34岁)，参加国会大选——又落选了。<br /><br />　　1846年(37岁)，再次参加国会大选——这回当选了。前往华盛顿特区，表现可圈可点。<br /><br />　　1848年(39岁)，寻求国会议员连任，失败。<br /><br />　　1849年(40岁)，想在自己州内担任土地局长的工作，遭到拒绝。<br /><br />　　1854年(45岁)，竞选美国参议员，落选。<br /><br />　　1856年(47岁)，在共和party内争取副总统的提名——得票不足100张。<br /><br />　　1860年(51岁)，当选美国总统。成为美国历史上最伟大的总统之一。<br /><br />　　生下来就一无所有的林肯，终其一生都在面对挫败。他曾经绝望至极，但从没有放弃人生这场跳高比赛。
          <br/>
          <span style="color:red;">
            <a href="http://zhuixinjian.javaeye.com/blog/103721#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 21 Jul 2007 10:16:18 +0800</pubDate>
        <link>http://zhuixinjian.javaeye.com/blog/103721</link>
        <guid>http://zhuixinjian.javaeye.com/blog/103721</guid>
      </item>
      <item>
        <title>恋爱笔记一</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/103300" style="color:red;">http://zhuixinjian.javaeye.com/blog/103300</a>&nbsp;
          发表时间: 2007年07月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          昨天和她谈了谈，感觉还好，只是遇到一个很难的问题，那就是两人之间的距离问题。我在北京，她在湖北荆州，我曾想过双休过去看看她，可是计算下，真是时间太仓促！就算我周五晚上8：47坐Z11\Z12 周六早上7.14到武汉，然后能坐上到荆州的车，那么12：00以前赶到荆州，那么我在周日的下午又得赶回来。时间太紧张了！<br /><br />怎么办，我该怎样处理这件事情，还有一年她就毕业了，我等一年？只有这么办了。<br />一年啊，说长不长，说短也不短，长的足够发生任何可能发生的事，短的也不过12个月，一晃而已！<br /><br />想一想她分析问题时的冷静，真的让人害怕！<br /><br />其实我又何必想那么多，珍惜此刻！<br /><br />我将担忧说成居安思危，她说那是古时形容国家，我答，国家只是个大一些的家。她笑！
          <br/>
          <span style="color:red;">
            <a href="http://zhuixinjian.javaeye.com/blog/103300#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 20 Jul 2007 18:42:32 +0800</pubDate>
        <link>http://zhuixinjian.javaeye.com/blog/103300</link>
        <guid>http://zhuixinjian.javaeye.com/blog/103300</guid>
      </item>
      <item>
        <title>心之轨迹</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/102902" style="color:red;">http://zhuixinjian.javaeye.com/blog/102902</a>&nbsp;
          发表时间: 2007年07月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>xombat 写到</strong><br /><span style="color: red"> 有些事情是不能分析出来的,那就是感情.</span><br /><strong>我回答：</strong><br />这句给我狠狠的敲了一下。<br />当我认真的去分析她说的每一句话的时候，得出很多让人很头疼的答案，有的欣喜，有的痛苦，有的疑惑不解，有的却一目了然。可实际上那只是她随口而出，或许不带心机，或许隐藏秘密。猜来猜去，只会让自己进入无尽的死循环。可恋爱不就是这种感觉吗？<br /><strong>xombat 又写到</strong><br />以前我也那样,我想知道她的话里有什么含义,心里想的是什么,然后贴心的关心她,所以就对她的每句话都很在意,但是我竟然最后被形容为'很敏感' <br />恋爱有很多方式,这种方式叫自找苦吃.<br /><strong>抛出异常的爱 写到</strong><br />每个人都不可能作回自己<br />不可能天真如前，不可能再次初恋，不可能总是享受惊奇。<br />人生是自己的人生。<br />所有的选择都有必然性。<br />不要把人生的柱子上划上不相关的一条条的时间底线。<br />不要把不相关的事连系在一起。<br /><br /><strong>可最后我被zhangzhaofeng的这段话给敲醒了！</strong><br /><span style="color: indigo">喜欢就喜欢 <br />直到自己不喜欢为止<br />我是这么想的<br />难得喜欢 难得随心 <br />做人要随心 随性<br />年龄又不大 何必 太成熟</span><br /><br />这几天心里都不舒服，一遍一遍的遍历自己的感觉，来确定自己是不是由于空虚寂寞想去寻找安慰。
          <br/>
          <span style="color:red;">
            <a href="http://zhuixinjian.javaeye.com/blog/102902#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 19 Jul 2007 18:07:20 +0800</pubDate>
        <link>http://zhuixinjian.javaeye.com/blog/102902</link>
        <guid>http://zhuixinjian.javaeye.com/blog/102902</guid>
      </item>
      <item>
        <title>Spring的核心机制依赖注入简介(2)</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/53462" style="color:red;">http://zhuixinjian.javaeye.com/blog/53462</a>&nbsp;
          发表时间: 2007年02月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          从配置文件中，可以看到Spring管理bean的灵巧性。bean与bean之间的依赖关系放在配置文件里组织，而不是写在代码里。通过配置文件的指 定，Spring能精确地为每个bean注入属性。因此，配置文件里的bean的class元素，不能仅仅是接口，而必须是真正的实现类。<br />
<br />
Spring会自动接管每个bean定义里的property元素定义。Spring会在执行无参数的构造器后、创建默认的bean实例后，调用对应的 setter方法为程序注入属性值。property定义的属性值将不再由该bean来主动创建、管理，而改为被动接收Spring的注入。<br />
<br />
每个bean的id属性是该bean的惟一标识，程序通过id属性访问bean，bean与bean的依赖关系也通过id属性完成。<br />
<br />
下面看主程序部分:
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;BeanTest&nbsp;&nbsp;</span></span></li>
    <li class=""><span>{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　<span class="comment">//主方法，程序的入口</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;args)</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　{&nbsp;&nbsp;</span></li>
    <li class=""><span>　　<span class="comment">//因为是独立的应用程序，显式地实例化Spring的上下文。</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　　ApplicationContext&nbsp;ctx&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;FileSystemXmlApplicationContext(</span><span class="string">&quot;bean.xml&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　　<span class="comment">//通过Person&nbsp;bean的id来获取bean实例，面向接口编程，因此</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　　<span class="comment">//此处强制类型转换为接口类型</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　　Person&nbsp;p&nbsp;=&nbsp;(Person)ctx.getBean(<span class="string">&quot;chinese&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　　<span class="comment">//直接执行Person的userAxe()方法。</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　　p.useAxe();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　}&nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
程序的执行结果如下:<br />
<br />
石斧砍柴好慢<br />
<br />
主程序调用Person的useAxe()方法时，该方法的方法体内需要使用Axe的实例，但程序里没有任何地方将特定的Person实例和Axe实例耦合在一起。或者说，程序里没有为Person实例传入Axe的实例，Axe实例由Spring在运行期间动态注入。<br />
<br />
Person实例不仅不需要了解Axe实例的具体实现，甚至无须了解Axe的创建过程。程序在运行到需要Axe实例的时候，Spring创建了Axe实 例，然后注入给需要Axe实例的调用者。Person实例运行到需要Axe实例的地方，自然就产生了Axe实例，用来供Person实例使用。<br />
<br />
调用者不仅无须关心被调用者的实现过程，连工厂定位都可以省略(真是按需分配啊!)。下面也给出使用Ant编译和运行该应用的简单脚本:
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span>＜?xml&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>?＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜!--&nbsp;定义编译该项目的基本信息--<span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>＜PROJECT&nbsp;<span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;spring&quot;</span><span>&nbsp;</span><span class="attribute">default</span><span>=</span><span class="attribute-value">&quot;.&quot;</span><span>&nbsp;</span><span class="attribute">basedir</span><span>=</span><span class="attribute-value">&quot;.&quot;</span><span>＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜!--&nbsp;定义编译和运行该项目时所需的库文件&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜PATH&nbsp;<span class="attribute">id</span><span>=</span><span class="attribute-value">classpath</span><span>＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　＜!--&nbsp;该路径下存放spring.jar和其他第三方类库&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　＜FILESET&nbsp;<span class="attribute">dir</span><span>=..\..\lib＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　　＜INCLUDE&nbsp;<span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;*.jar&quot;</span><span>&nbsp;/＞&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　＜/FILESET＞&nbsp;&nbsp;</span></li>
    <li class=""><span>　＜!--&nbsp;同时还需要引用已经编译过的class文件--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　＜PATHELEMENT&nbsp;<span class="attribute">path</span><span>=</span><span class="attribute-value">&quot;.&quot;</span><span>&nbsp;/＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜/PATH＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜!--&nbsp;编译全部的java文件--＞&nbsp;&nbsp;</span></li>
    <li class=""><span>＜TARGET&nbsp;<span class="attribute">description</span><span>=</span><span class="attribute-value">&quot;Compile&nbsp;all&nbsp;source&nbsp;code&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;compile&quot;</span><span>＞&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>＜!--&nbsp;指定编译后的class文件的存放位置&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class=""><span>＜JAVAC&nbsp;<span class="attribute">debug</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;</span><span class="attribute">destdir</span><span>=</span><span class="attribute-value">&quot;.&quot;</span><span>＞&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　<span class="attribute">deprecation</span><span>=</span><span class="attribute-value">&quot;false&quot;</span><span>&nbsp;</span><span class="attribute">optimize</span><span>=</span><span class="attribute-value">&quot;false&quot;</span><span>&nbsp;</span><span class="attribute">failonerror</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　＜!--&nbsp;指定需要编译的源文件的存放位置&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　＜SRC&nbsp;<span class="attribute">path</span><span>=</span><span class="attribute-value">&quot;.&quot;</span><span>&nbsp;/＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　＜!--&nbsp;指定编译这些java文件需要的类库位置--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　＜CLASSPATH&nbsp;<span class="attribute">refid</span><span>=</span><span class="attribute-value">&quot;classpath&quot;</span><span>&nbsp;/＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜/JAVAC＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜/TARGET＞&nbsp;&nbsp;</span></li>
    <li class=""><span>＜!--&nbsp;运行特定的主程序&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜TARGET&nbsp;<span class="attribute">description</span><span>=</span><span class="attribute-value">&quot;run&nbsp;the&nbsp;main&nbsp;class&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;run&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;compile&quot;</span><span>＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜!--&nbsp;指定运行的主程序:lee.BeanTest。--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜JAVA&nbsp;<span class="attribute">failonerror</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;</span><span class="attribute">fork</span><span>=</span><span class="attribute-value">&quot;yes&quot;</span><span>&nbsp;</span><span class="attribute">classname</span><span>=</span><span class="attribute-value">&quot;lee.BeanTest&quot;</span><span>＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　＜!--&nbsp;指定运行这些java文件需要的类库位置--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　＜CLASSPATH&nbsp;<span class="attribute">refid</span><span>=</span><span class="attribute-value">&quot;classpath&quot;</span><span>&nbsp;/＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜/JAVA＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜/TARGET＞&nbsp;&nbsp;</span></li>
    <li class=""><span>＜/PROJECT＞&nbsp;&nbsp;</span></li>
</ol>
</div>
如果需要改写Axe的实现类。或者说，提供另一个实现类给Person实例使用。Person接口、Chinese类都无须改变。只需提供另一个Axe的实现，然后对配置文件进行简单的修改即可。<br />
<br />
Axe的另一个实现如下:
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="comment">//Axe的另一个实现类&nbsp;SteelAxe</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;SteelAxe&nbsp;</span><span class="keyword">implements</span><span>&nbsp;Axe&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>{&nbsp;&nbsp;</span></li>
    <li class=""><span>　<span class="comment">//默认构造器</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　<span class="keyword">public</span><span>&nbsp;SteelAxe()&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　{}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　<span class="comment">//实现Axe接口的chop方法</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　<span class="keyword">public</span><span>&nbsp;String&nbsp;chop()&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　{&nbsp;&nbsp;</span></li>
    <li class=""><span>　　<span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;钢斧砍柴真快&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　}&nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
然后，修改原来的Spring配置文件，在其中增加如下一行:
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span>＜!--&nbsp;定义一个steelAxe&nbsp;bean--＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜BEAN&nbsp;<span class="attribute">class</span><span>=</span><span class="attribute-value">lee</span><span>.SteelAxe&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">steelAxe</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
该行重新定义了一个Axe的实现:SteelAxe。然后修改chinese bean的配置，将原来传入stoneAxe的地方改为传入steelAxe。也就是将
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span>＜REF&nbsp;local=</span><span class="string">&quot;&rdquo;stoneAxe&rdquo;/&quot;</span><span>＞&nbsp;&nbsp;</span></span></li>
</ol>
</div>
改成
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span>＜REF&nbsp;local=</span><span class="string">&quot;&rdquo;steelAxe&rdquo;/&quot;</span><span>＞&nbsp;&nbsp;</span></span></li>
</ol>
</div>
此时再次执行程序，将得到如下结果:<br />
<br />
钢斧砍柴真快<br />
<br />
Person与Axe之间没有任何代码耦合关系，bean与bean之间的依赖关系由Spring管理。采用setter方法为目标bean注入属性的方式，称为设值注入。<br />
<br />
业务对象的更换变得相当简单，对象与对象之间的依赖关系从代码里分离出来，通过配置文件动态管理。<br />
<br />
<strong>构造注入</strong><br />
<br />
所谓构造注入，指通过构造函数来完成依赖关系的设定，而不是通过setter方法。对前面代码Chinese类做简单的修改，修改后的代码如下:
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="comment">//Chinese实现Person接口</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Chinese&nbsp;</span><span class="keyword">implements</span><span>&nbsp;Person&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>{&nbsp;&nbsp;</span></li>
    <li class=""><span>　<span class="comment">//面向Axe接口编程，而不是具体的实现类</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　<span class="keyword">private</span><span>&nbsp;Axe&nbsp;axe;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　<span class="comment">//默认的构造器</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　<span class="keyword">public</span><span>&nbsp;Chinese()&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　{}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　<span class="comment">//构造注入所需的带参数的构造器</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　<span class="keyword">public</span><span>&nbsp;Chinse(Axe&nbsp;axe)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　{&nbsp;&nbsp;</span></li>
    <li class=""><span>　　<span class="keyword">this</span><span>.axe&nbsp;=&nbsp;axe;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　}&nbsp;&nbsp;</span></li>
    <li class=""><span>　<span class="comment">//实现Person接口的useAxe方法</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;useAxe()&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　System.out.println(axe.chop());&nbsp;&nbsp;</span></li>
    <li class=""><span>　}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
&nbsp; &nbsp;&nbsp; &nbsp; 此时无须Chinese类里的setAxe方法，构造Person实例时，Spring为Person实例注入所依赖的Axe实例。构造注入的配置文件也需做简单的修改，修改后的配置文件如下: &nbsp;&nbsp;&nbsp;<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span>＜!--&nbsp;下面是标准的XML文件头&nbsp;--＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜xml&nbsp;<span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;gb2312&quot;</span><span>?＞&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>＜!--&nbsp;下面一行定义Spring的XML配置文件的dtd&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class=""><span>　&quot;http://www.springframework.org/dtd/spring-beans.dtd&quot;＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜!--&nbsp;以上三行对所有的Spring配置文件都是相同的&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class=""><span>＜!--&nbsp;Spring配置文件的根元素&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜BEANS＞&nbsp;&nbsp;</span></li>
    <li class=""><span>　＜!&mdash;定义第一个bean，该bean的id是chinese,&nbsp;class指定该bean实例的实现类&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　＜BEAN&nbsp;<span class="attribute">class</span><span>=</span><span class="attribute-value">lee</span><span>.Chinese&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">chinese</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜/BEAN＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜!--&nbsp;定义stoneAxe&nbsp;bean&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class=""><span>＜BEAN&nbsp;<span class="attribute">class</span><span>=</span><span class="attribute-value">lee</span><span>.SteelAxe&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">steelAxe</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>＜/BEANS＞&nbsp;&nbsp;</span></li>
</ol>
</div>
执行效果与使用steelAxe设值注入时的执行效果完全一样。区别在于:创建Person实例中Axe属性的时机不同&mdash;&mdash;设值注入是现创建一个默认的bean实例，然后调用对应的构造方法注入依赖关系。而构造注入则在创建bean实例时，已经完成了依赖关系的
          <br/>
          <span style="color:red;">
            <a href="http://zhuixinjian.javaeye.com/blog/53462#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 09 Feb 2007 10:39:41 +0800</pubDate>
        <link>http://zhuixinjian.javaeye.com/blog/53462</link>
        <guid>http://zhuixinjian.javaeye.com/blog/53462</guid>
      </item>
      <item>
        <title>Spring的核心机制依赖注入简介</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/53460" style="color:red;">http://zhuixinjian.javaeye.com/blog/53460</a>&nbsp;
          发表时间: 2007年02月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Spring能有效地组织J2EE应用各层的对象。不管是控制层的Action对象，还是业务层的Service对象，还是持久层的DAO对象，都可在 Spring的管理下有机地协调、运行。Spring将各层的对象以松耦合的方式组织在一起，Action对象无须关心Service对象的具体实现， Service对象无须关心持久层对象的具体实现，各层对象的调用完全面向接口。当系统需要重构时，代码的改写量将大大减少。<br />
<br />
上面所说的一切都得宜于Spring的核心机制，依赖注入。依赖注入让bean与bean之间以配置文件组织在一起，而不是以硬编码的方式耦合在一起。理解依赖注入<br />
<br />
依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。具体含义是:当某个角色(可能是一个Java实例，调用者)需要另一个角色(另一个Java实例，被调用者)的协助时，在 传统的程序设计过程中，通常由调用者来创建被调用者的实例。但在Spring里，创建被调用者的工作不再由调用者来完成，因此称为控制反转;创建被调用者 实例的工作通常由Spring容器来完成，然后注入调用者，因此也称为依赖注入。<br />
<br />
不管是依赖注入，还是控制反转，都说明Spring采用动态、灵活的方式来管理各种对象。对象与对象之间的具体实现互相透明。在理解依赖注入之前，看如下这个问题在各种社会形态里如何解决:一个人(Java实例，调用者)需要一把斧子(Java实例，被调用者)。<br />
<br />
(1)原始社会里，几乎没有社会分工。需要斧子的人(调用者)只能自己去磨一把斧子(被调用者)。对应的情形为:Java程序里的调用者自己创建被调用者。<br />
<br />
(2)进入工业社会，工厂出现。斧子不再由普通人完成，而在工厂里被生产出来，此时需要斧子的人(调用者)找到工厂，购买斧子，无须关心斧子的制造过程。对应Java程序的简单工厂的设计模式。<br />
<br />
(3)进入&ldquo;按需分配&rdquo;社会，需要斧子的人不需要找到工厂，坐在家里发出一个简单指令:需要斧子。斧子就自然出现在他面前。对应Spring的依赖注入。<br />
<br />
第一种情况下，Java实例的调用者创建被调用的Java实例，必然要求被调用的Java类出现在调用者的代码里。无法实现二者之间的松耦合。<br />
<br />
第二种情况下，调用者无须关心被调用者具体实现过程，只需要找到符合某种标准(接口)的实例，即可使用。此时调用的代码面向接口编程，可以让调用者和被调用者解耦，这也是工厂模式大量使用的原因。但调用者需要自己定位工厂，调用者与特定工厂耦合在一起。<br />
<br />
第三种情况下，调用者无须自己定位工厂，程序运行到需要被调用者时，系统自动提供被调用者实例。事实上，调用者和被调用者都处于Spring的管理下，二者之间的依赖关系由Spring提供。<br />
<br />
所谓依赖注入，是指程序运行过程中，如果需要调用另一个对象协助时，无须在代码中创建被调用者，而是依赖于外部的注入。Spring的依赖注入对调用者和被调用者几乎没有任何要求，完全支持对POJO之间依赖关系的管理。依赖注入通常有两种:<br />
<br />
&middot;设值注入。<br />
<br />
&middot;构造注入。<br />
<br />
<strong>设值注入<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  </strong>设值注入是指通过setter方法传入被调用者的实例。这种注入方式简单、直观，因而在Spring的依赖注入里大量使用。看下面代码，<br />
是Person的接口<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="comment">//定义Person接口</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">interface</span><span>&nbsp;Person&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>{&nbsp;&nbsp;</span></li>
    <li class=""><span>　<span class="comment">//Person接口里定义一个使用斧子的方法</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;useAxe();&nbsp;&nbsp;</span></span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
然后是Axe的接口
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="comment">//定义Axe接口</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">interface</span><span>&nbsp;Axe&nbsp;&nbsp;</span></span></li>
    <li class=""><span>{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　<span class="comment">//Axe接口里有个砍的方法</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;chop();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
Person的实现类
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="comment">//Chinese实现Person接口</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Chinese&nbsp;</span><span class="keyword">implements</span><span>&nbsp;Person&nbsp;&nbsp;</span></span></li>
    <li class=""><span>{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　<span class="comment">//面向Axe接口编程，而不是具体的实现类</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　<span class="keyword">private</span><span>&nbsp;Axe&nbsp;axe;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　<span class="comment">//默认的构造器</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　<span class="keyword">public</span><span>&nbsp;Chinese()&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　{}&nbsp;&nbsp;</span></li>
    <li class=""><span>　<span class="comment">//设值注入所需的setter方法</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setAxe(Axe&nbsp;axe)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　<span class="keyword">this</span><span>.axe&nbsp;=&nbsp;axe;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　<span class="comment">//实现Person接口的useAxe方法</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;useAxe()&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　{&nbsp;&nbsp;</span></li>
    <li class=""><span>　　System.out.println(axe.chop());&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　}&nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
Axe的第一个实现类
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="comment">//Axe的第一个实现类&nbsp;StoneAxe</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;StoneAxe&nbsp;</span><span class="keyword">implements</span><span>&nbsp;Axe&nbsp;&nbsp;</span></span></li>
    <li class=""><span>{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　<span class="comment">//默认构造器</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　<span class="keyword">public</span><span>&nbsp;StoneAxe()&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　{}&nbsp;&nbsp;</span></li>
    <li class=""><span>　<span class="comment">//实现Axe接口的chop方法</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>　<span class="keyword">public</span><span>&nbsp;String&nbsp;chop()&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　<span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;石斧砍柴好慢&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp; <br />
    </span></li>
</ol>
</div>
下面采用Spring的配置文件将Person实例和Axe实例组织在一起。配置文件如下所示:
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span>＜!--&nbsp;下面是标准的XML文件头&nbsp;--＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜?xml&nbsp;<span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;gb2312&quot;</span><span>?＞&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>＜!--&nbsp;下面一行定义Spring的XML配置文件的dtd&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class=""><span>&quot;http://www.springframework.org/dtd/spring-beans.dtd&quot;＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜!--&nbsp;以上三行对所有的Spring配置文件都是相同的&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class=""><span>＜!--&nbsp;Spring配置文件的根元素&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜BEANS＞&nbsp;&nbsp;</span></li>
    <li class=""><span>　＜!&mdash;定义第一bean，该bean的id是chinese,&nbsp;class指定该bean实例的实现类&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　＜BEAN&nbsp;<span class="attribute">class</span><span>=</span><span class="attribute-value">lee</span><span>.Chinese&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">chinese</span><span>＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>　＜!--&nbsp;property元素用来指定需要容器注入的属性，axe属性需要容器注入此处是设值注入，因此Chinese类必须拥有setAxe方法&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜property&nbsp;<span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;axe&quot;</span><span>＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜!--&nbsp;此处将另一个bean的引用注入给chinese&nbsp;bean&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜REF&nbsp;<span class="attribute">local</span><span>=</span><span class="attribute-value">&quot;&rdquo;stoneAxe&rdquo;/&quot;</span><span>＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜/property＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜/BEAN＞&nbsp;&nbsp;</span></li>
    <li class=""><span>＜!--&nbsp;定义stoneAxe&nbsp;bean&nbsp;--＞&nbsp;&nbsp;</span></li>
    <li class="alt"><span>＜BEAN&nbsp;<span class="attribute">class</span><span>=</span><span class="attribute-value">lee</span><span>.StoneAxe&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">stoneAxe</span><span>&nbsp;/＞&nbsp;&nbsp;</span></span></li>
    <li class=""><span>＜/BEANS＞&nbsp;&nbsp;</span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://zhuixinjian.javaeye.com/blog/53460#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 09 Feb 2007 10:32:17 +0800</pubDate>
        <link>http://zhuixinjian.javaeye.com/blog/53460</link>
        <guid>http://zhuixinjian.javaeye.com/blog/53460</guid>
      </item>
      <item>
        <title>数据库连接池技术浅析</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/51750" style="color:red;">http://zhuixinjian.javaeye.com/blog/51750</a>&nbsp;
          发表时间: 2007年02月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一般情况下，在使用开发基于数据库的WEB程序时，传统的模式基本是按以下步骤： <br />
1． 在主程序（如Servlet、Beans）中建立数据库连接。 <br />
2． 进行SQL操作，取出数据。 <br />
3． 断开数据库连接。 <br />
使用这种模式开发，存在很多问题。首先，我们要为每一次WEB请求（例如察看某一篇文章的内容）建立一次数据库连接，对于一次或几次操作来讲，或许你觉察 不到系统的开销，但是，对于WEB程序来讲，即使在某一较短的时间段内，其操作请求数也远远不是一两次，而是数十上百次（想想全世界的网友都有可能在您的 网页上查找资料），在这种情况下，系统开销是相当大的。事实上，在一个基于数据库的WEB系统中，建立数据库连接的操作将是系统中代价最大的操作之一。很 多时候，可能您的网站速度瓶颈就在于此。 <br />
其次，使用传统的模式，你必须去管理每一个连接，确保他们能被正确关闭，如果出现程序异常而导致某些连接未能关闭，将导致数据库系统中的内存泄露，最终我们将不得不重启数据库。 <br />
针对以上问题，我们首先想到可以采用一个全局的Connection对象，创建后就不关闭，以后程序一直使用它，这样就不存在每次创建、关闭连接的问题 了。但是，同一个连接使用次数过多，将会导致连接的不稳定，进而会导致WEB SERVER的频频重启。故而，这种方法也不可取。实际上，我们可以使用连接池技术来解决上述问题。首先，介绍一下连接池技术的基本原理。顾名思义，连接 池最基本的思想就是预先建立一些连接放置于内存对象中以备使用： <br />
<br />
如图所示，当程序中需要建立数据库连接时，只须从内存中取一个来用而不用新建。同样，使用完毕后，只需放回内存即可。而连接的建立、断开都有连接池自身来 管理。同时，我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等。通过使用连接池，将大大提高程序效率，同时，我们可以 通过其自身的管理机制来监视数据库连接的数量、使用情况等。下面我们以一个名为ConnectionPool的连接池为例来看看连接池的实现。先看看 ConnectionPool的基本属性： <br />
m_ConnectionPoolSize：连接池中连接数量下限 <br />
m_ConnectionPoolMax：连接池中连接数量上限 <br />
m_ConnectionUseCount：一个连接的最大使用次数 <br />
m_ConnectionTimeout：一个连接的最长空闲时间 <br />
m_MaxConnections = -1：同一时间的最大连接数 <br />
m_timer：定时器 <br />
这些属性定义了连接池与其中的每个连接的有效状态值。连接池的自我管理，实际上就是通过定时的对每个连接的状态、连接的数量进行判断而进行相应操作。其管理流程如下： <br />
<br />
通过上图，我们可以定义出ConnectionPool要完成管理所需要的基本接口： <br />
public class ConnectionPool implements TimerListener{ <br />
public boolean initialize() //连接池初始化 <br />
public void destroy() //连接池的销毁 <br />
public synchronized java.sql.Connection getConnection() //取一个连接 <br />
public synchronized void close() //关闭一个连接 <br />
private synchronized void removeFromPool() //把一个连接从连接池中删除 <br />
private synchronized void fillPool() //维护连接池大小 <br />
public synchronized void TimerEvent() //定时器事件处理函数 <br />
} <br />
通过这几个接口，已经可以完成连接池的基本管理。在TimeEvent（）函数中完成连接池的状态检验工作，fillPool()时连接池至少保持最小连接数。因为我们要保存每一个连接的状态，所以还需要一个数据库连接对象： <br />
class ConnectionObject{ <br />
public java.sql.Connection con; public boolean inUse; //是否被使用标志 <br />
public long lastAccess; //最近一次开始使用时间 <br />
public int useCount; //被使用次数 <br />
} <br />
加入了ConnectionObject对象后，在ConnectionPool中操作的应该只是ConnectionObject,而其他进程需要的只 是ConnectionObject的con属性，因此我们再加入一个类，作为其他进程获得与返回连接的接口： CLASS Conn{ <br />
GetConnection(); //从连接池中取出一个有效连接 <br />
CloseConnection(); //返回连接，此时并没有关闭连接，只是放回了连接池 <br />
DestroyPool(); //销毁连接池 <br />
} <br />
最后我们的整个系统总的架构如下： <br />
<br />
通过上面的介绍，我们可以看出，连接池技术的关键就是其自身的管理机制，以上的管理流程只是本人一点见解，关键是想向大家介绍一种思路，在此基础上，您可以进一步完善连接池技术为您所用。
          <br/>
          <span style="color:red;">
            <a href="http://zhuixinjian.javaeye.com/blog/51750#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 02 Feb 2007 08:37:28 +0800</pubDate>
        <link>http://zhuixinjian.javaeye.com/blog/51750</link>
        <guid>http://zhuixinjian.javaeye.com/blog/51750</guid>
      </item>
      <item>
        <title>JSP内置对象</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/51672" style="color:red;">http://zhuixinjian.javaeye.com/blog/51672</a>&nbsp;
          发表时间: 2007年02月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font size="4"><span id="ContentLabel" style="padding: 0px 10px; display: block;">内置对象是不需要声明，直接可以在JSP中使用的对象，JSP有以下几种内置对象： <br />
<br />
request request表示HttpServletRequest对象。它包含了有关浏览器请求的信息，并且提供了几个用于获取cookie, header, 和session数据的有用的方法。 <br />
<br />
response response表示HttpServletResponse对象，并提供了几个用于设置送回 浏览器的响应的方法（如cookies,头信息等） <br />
<br />
out out 对象是javax.jsp.JspWriter的一个实例，并提供了几个方法使你能用于向浏览器回送输出结果。 <br />
<br />
pageContext pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API，并且包装了通用的servlet相关功能的方法。 <br />
<br />
session session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息 <br />
<br />
application applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息 <br />
<br />
config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 <br />
<br />
page page表示从该页面产生的一个servlet实例。</span></font>
          <br/>
          <span style="color:red;">
            <a href="http://zhuixinjian.javaeye.com/blog/51672#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 01 Feb 2007 21:37:39 +0800</pubDate>
        <link>http://zhuixinjian.javaeye.com/blog/51672</link>
        <guid>http://zhuixinjian.javaeye.com/blog/51672</guid>
      </item>
      <item>
        <title>向数据库加入大量数据</title>
        <author>zhuixinjian</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhuixinjian.javaeye.com">zhuixinjian</a>&nbsp;
          链接：<a href="http://zhuixinjian.javaeye.com/blog/46809" style="color:red;">http://zhuixinjian.javaeye.com/blog/46809</a>&nbsp;
          发表时间: 2007年01月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">InitSystemData
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">package</span><span>&nbsp;com.bjsxt.oa.manager.impl; &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.io.BufferedReader; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;java.io.InputStream; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.io.InputStreamReader; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;java.text.SimpleDateFormat; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.util.List; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;org.springframework.orm.hibernate3.support.HibernateDaoSupport; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.manager.AclManager; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.manager.DataDictionaryManager; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.manager.InitSystemData; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.manager.ModuleManager; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.manager.PartyManager; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.manager.PersonManager; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.manager.RoleManager; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.manager.UserManager; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.model.DataDictionary; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.model.Module; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.model.Party; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.model.Person; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.model.Role; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.bjsxt.oa.model.User; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;InitSystemDataImpl&nbsp;</span><span class="keyword">extends</span><span>&nbsp;HibernateDaoSupport&nbsp;</span><span class="keyword">implements</span><span>&nbsp;InitSystemData{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;SimpleDateFormat&nbsp;format&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;SimpleDateFormat(</span><span class="string">&quot;yyyy-MM-dd&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;ModuleManager&nbsp;moduleManager; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;RoleManager&nbsp;roleManager; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;AclManager&nbsp;aclManager; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;PersonManager&nbsp;personManager; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;PartyManager&nbsp;partyManager; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;UserManager&nbsp;userManager; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;DataDictionaryManager&nbsp;dataDictionaryManager; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;addInitSystemData(){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addInitModuleData(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addInitRoleData(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addInitPartyData(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addInitPersonData(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addInitDictionaryData(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//初始化模块信息 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;addInitModuleData(){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;=&nbsp;Thread.currentThread().getContextClassLoader().getResourceAsStream(</span><span class="string">&quot;module.txt&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;reader&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;BufferedReader(</span><span class="keyword">new</span><span>&nbsp;InputStreamReader(is)); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;line&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Module&nbsp;parent&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;order&nbsp;=&nbsp;</span><span class="number">1</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>((line&nbsp;=&nbsp;reader.readLine())&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(line.trim().equals(</span><span class="string">&quot;&quot;</span><span>)){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">continue</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//submodule </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(line.startsWith(</span><span class="string">&quot;\t&quot;</span><span>)){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;ss&nbsp;=&nbsp;line.trim().split(</span><span class="string">&quot;,&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Module&nbsp;sub&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Module(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub.setName(ss[</span><span class="number">0</span><span>].trim()); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub.setSn(ss[</span><span class="number">1</span><span>].trim()); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub.setUrl(ss[</span><span class="number">2</span><span>].trim()); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub.setOrderNo(order++); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moduleManager.addModule(sub,&nbsp;parent.getId()); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span class="keyword">else</span><span>{&nbsp;</span><span class="comment">//parentmodule </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;ss&nbsp;=&nbsp;line.trim().split(</span><span class="string">&quot;,&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Module(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.setName(ss[</span><span class="number">0</span><span>].trim()); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.setSn(ss[</span><span class="number">1</span><span>].trim()); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.setOrderNo(order++); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moduleManager.addModule(parent,&nbsp;</span><span class="number">0</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;RuntimeException(e); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//初始化角色信息以及角色的访问权限 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;addInitRoleData(){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;=&nbsp;Thread.currentThread().getContextClassLoader().getResourceAsStream(</span><span class="string">&quot;role.txt&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;reader&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;BufferedReader(</span><span class="keyword">new</span><span>&nbsp;InputStreamReader(is)); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;line&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>((line&nbsp;=&nbsp;reader.readLine())&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(line.trim().equals(</span><span class="string">&quot;&quot;</span><span>)){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">continue</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;ss&nbsp;=&nbsp;line.trim().split(</span><span class="string">&quot;:&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Role&nbsp;role&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Role(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;role.setName(ss[</span><span class="number">0</span><span>].trim()); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roleManager.addRole(role); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//获取被分配的模块列表 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;moduleString&nbsp;=&nbsp;ss[</span><span class="number">1</span><span>].trim(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;moduleNames&nbsp;=&nbsp;moduleString.split(</span><span class="string">&quot;,&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>[]&nbsp;moduleIds&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;</span><span class="keyword">int</span><span>[moduleNames.length]; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;&nbsp;i</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;=&nbsp;getHibernateTemplate().find(</span><span class="string">&quot;from&nbsp;Module&nbsp;where&nbsp;name&nbsp;=&nbsp;?&quot;</span><span>,moduleNames[i]); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(list.isEmpty()){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;RuntimeException(</span><span class="string">&quot;找不到相应模块[&quot;</span><span>+moduleNames[i]+</span><span class="string">&quot;]&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(list.size()&nbsp;&gt;&nbsp;</span><span class="number">1</span><span>){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;RuntimeException(</span><span class="string">&quot;存在同名模块[&quot;</span><span>+moduleNames[i]+</span><span class="string">&quot;]&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Module&nbsp;m&nbsp;=&nbsp;(Module)list.get(</span><span class="number">0</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moduleIds[i]&nbsp;=&nbsp;m.getId(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aclManager.addAcls(role.getId(),&nbsp;moduleIds); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;RuntimeException(e); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//初始化机构信息 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;addInitPartyData(){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;=&nbsp;Thread.currentThread().getContextClassLoader().getResourceAsStream(</span><span class="string">&quot;party.txt&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;reader&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;BufferedReader(</span><span class="keyword">new</span><span>&nbsp;InputStreamReader(is)); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;line&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Party&nbsp;parent&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Party&nbsp;sub&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>((line&nbsp;=&nbsp;reader.readLine())&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(line.trim().equals(</span><span class="string">&quot;&quot;</span><span>)){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">continue</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name&nbsp;=&nbsp;line.trim(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//第三级机构信息 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(line.startsWith(</span><span class="string">&quot;\t\t&quot;</span><span>)){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Party&nbsp;subsub&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Party(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subsub.setName(name); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subsub.setParent(sub); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getHibernateTemplate().save(subsub); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subsub.setSn(sub.getSn()+</span><span class="string">&quot;_&quot;</span><span>+subsub.getId());&nbsp;</span><span class="comment">//设置SN的值 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getHibernateTemplate().update(subsub); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//第二级机构信息 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;</span><span class="keyword">if</span><span>(line.startsWith(</span><span class="string">&quot;\t&quot;</span><span>)){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Party(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub.setName(name); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub.setParent(parent); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getHibernateTemplate().save(sub); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub.setSn(parent.getSn()+</span><span class="string">&quot;_&quot;</span><span>+sub.getId()); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getHibernateTemplate().update(sub); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span class="keyword">else</span><span>{&nbsp;</span><span class="comment">//parentmodule </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Party(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.setName(name); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getHibernateTemplate().save(parent); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.setSn(parent.getId()+</span><span class="string">&quot;&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getHibernateTemplate().update(parent); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;RuntimeException(e); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//初始化人员信息 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;addInitPersonData(){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;=&nbsp;Thread.currentThread().getContextClassLoader().getResourceAsStream(</span><span class="string">&quot;person.txt&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;reader&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;BufferedReader(</span><span class="keyword">new</span><span>&nbsp;InputStreamReader(is)); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;line&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>((line&nbsp;=&nbsp;reader.readLine())&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(line.trim().equals(</span><span class="string">&quot;&quot;</span><span>)){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">continue</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;ss&nbsp;=&nbsp;line.trim().split(</span><span class="string">&quot;,&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;personName&nbsp;=&nbsp;ss[</span><span class="number">0</span><span>]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;userAccount&nbsp;=&nbsp;ss[</span><span class="number">1</span><span>]; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;partyName&nbsp;=&nbsp;ss[</span><span class="number">2</span><span>];&nbsp;</span><span class="comment">//从index==3起，是用户具有的角色 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//根据名称获取机构信息 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Party&nbsp;party&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;=&nbsp;getHibernateTemplate().find(</span><span class="string">&quot;from&nbsp;Party&nbsp;where&nbsp;name&nbsp;=&nbsp;?&quot;</span><span>,partyName); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(list.isEmpty()&nbsp;||&nbsp;list.size()&nbsp;&gt;&nbsp;</span><span class="number">1</span><span>){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;RuntimeException(</span><span class="string">&quot;机构不存在或机构名称重复！&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;party&nbsp;=&nbsp;(Party)list.get(</span><span class="number">0</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//根据角色名称，获取角色的ID列表 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;roleslength&nbsp;=&nbsp;ss.length&nbsp;-&nbsp;</span><span class="number">3</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>[]&nbsp;roleIds&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;</span><span class="keyword">int</span><span>[roleslength]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;&nbsp;i</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;roleName&nbsp;=&nbsp;ss[</span><span class="number">3</span><span>&nbsp;+&nbsp;i]; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;rolelist&nbsp;=&nbsp;getHibernateTemplate().find(</span><span class="string">&quot;from&nbsp;Role&nbsp;where&nbsp;name&nbsp;=&nbsp;?&quot;</span><span>,roleName); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(rolelist.isEmpty()&nbsp;||&nbsp;rolelist.size()&nbsp;&gt;&nbsp;</span><span class="number">1</span><span>){ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;RuntimeException(</span><span class="string">&quot;无法找到被分配的角色名称或角色名称