Bruce
          IQ == GO ANYWHERE.DO ANYTHING!
          posts - 4,comments - 2,trackbacks - 0

          前段時(shí)間一直在忙一個(gè)項(xiàng)目,是基于數(shù)據(jù)交換平臺(tái)的一個(gè)業(yè)務(wù)查詢分析系統(tǒng),由于是政府的項(xiàng)目,就不再詳細(xì)說明啦,主要用的技術(shù)就是struts+ibatis+jstl,其實(shí)說技術(shù)嘛根本就談不上啦,呵呵,由于是第一次用IBATIS,所以啦花啦幾天去學(xué)習(xí)IBATIS,個(gè)人感覺,iBATIS相對(duì)于hibernate而言,自由度要大些,由于很多運(yùn)算都是在SQL語句中完成的,所以我們這個(gè)項(xiàng)目的持久層沒有用HIBERNATE,恩,現(xiàn)在吃飯時(shí)間到啦!下午再繼續(xù)寫啦!?。ㄎ赐辏?br />???繼續(xù)------
          ???今天沒什么事情,就想著先來把這篇 文章先給寫完,呵呵,SPRING嘛,下午再搞啦!
          下面的是sql-map-config.xml文件,我給貼出來吧,大家也看看!
          <?xml version="1.0" encoding="UTF-8" ?>

          <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
          ??? "

          <sqlMapConfig>

          <!-- 這個(gè)就是數(shù)據(jù)庫的聯(lián)接啦,如果加入了SPRING的話,就全部交由SPRING來管理啦-->?
          <properties resource="com/netmarch/sjjh2/maps/database.properties"/>
          ? <settings
          ?cacheModelsEnabled="true"
          ?enhancementEnabled="true"
          ?lazyLoadingEnabled="true"
          ?maxRequests="32"
          ?maxSessions="10"
          ?maxTransactions="5"
          ?useStatementNamespaces="false"
          ? />
          <!-- 下面這些不說大家也能看懂啦-->
          ? <typeAlias alias="order" type="testdomain.Order"/>
          ? <transactionManager type="JDBC">
          ??? <dataSource type="SIMPLE">
          ????? <property name="JDBC.Driver" value="${driver}"/>
          ?? <property name="JDBC.ConnectionURL" value="${url}"/>
          ?? <property name="JDBC.Username" value="${username}"/>
          ?? <property name="JDBC.Password" value="${password}"/>
          ????? <property name="JDBC.DefaultAutoCommit" value="true" />
          ?? <property name="Pool.MaximumActiveConnections" value="10"/>
          ????? <property name="Pool.MaximumIdleConnections" value="5"/>
          ?? <property name="Pool.MaximumCheckoutTime" value="120000"/>
          ?? <property name="Pool.TimeToWait" value="500"/>
          ?? <property name="Pool.PingQuery" value="select 1 from ACCOUNT"/>
          ?? <property name="Pool.PingEnabled" value="false"/>
          ?? <property name="Pool.PingConnectionsOlderThan" value="1"/>
          ?? <property name="Pool.PingConnectionsNotUsedFor" value="1"/>
          ??? </dataSource>
          ? </transactionManager>

          <!-- 這里要對(duì)應(yīng)好哦,呵呵, 這里可是執(zhí)行數(shù)據(jù)庫操作的配置文件哦,-->?
          <sqlMap resource="com/netmarch/sjjh2/maps/Rs.xml" />
          ? <sqlMap resource="com/netmarch/sjjh2/maps/Mz.xml" />
          ?? <sqlMap resource="com/netmarch/sjjh2/maps/HuiZong.xml" />
          ?
          </sqlMapConfig>
          下面的database.properties就是上面所對(duì)應(yīng)的
          <properties resource="com/netmarch/sjjh2/maps/database.properties"/>


          driver=oracle.jdbc.driver.OracleDriver
          url=jdbc:oracle:thin:@192.168.1.110:1521:center
          username=XXX
          password=XXX

          ???先寫到這,事情又來啦!有空再接著寫!
          好,下面我們接著再來寫!
          剛才我上來一看就有一位朋友說有源碼和UML圖就好啦,好吧,我就先把UML類圖給弄上來!各位稍等,上傳中。。。。。
          相關(guān)的部分類圖在我的相冊(cè)里面!我時(shí)間不多(我不知道這里是咱轉(zhuǎn)圖片到這里面的),大家將就著看吧!

          logic:Iterator 標(biāo)簽(以下簡(jiǎn)稱 該標(biāo)簽 )是 Struts 里非常常用的一個(gè)標(biāo)簽,其作用在于循環(huán)顯示給定容器對(duì)象中的值。
            
            如此常用的標(biāo)簽,其源代碼當(dāng)然需要拿出來研究一下,以下列舉幾條研究成果:
            
             1 、該標(biāo)簽內(nèi)部使用 Collection 來表示給定的容器,所有的給定容器對(duì)象(如 ArrayList , Map 等)都會(huì)被其轉(zhuǎn)化成為 Collection,Collection 實(shí)際就是 Map List 的父類
            
             2 、該標(biāo)簽自己維護(hù)循環(huán)索引,不用程序員管理索引
            
             3 、該標(biāo)簽常見的幾個(gè)屬性如下: name 、 property scope 、 id
            
            對(duì)應(yīng) Struts 給出的 Api 說明如下:
            
             name: 包括要遍歷 Collection Jsp 頁面的 bean 的名字(如果 property 沒有被定義),或者是那些通過 getter 方法獲得屬性的 Jsp 中的 Bean 的名字,這些 getter 方法返回的是 Collection (如果 property 定義了)。
            
             property: name 命名的 Jsp bean 中定義的屬性的名字,通過 getter 方法返回一個(gè) Collection
            
             scope: 指示到哪里去尋找 name 為名字的 bean ,如果沒有定義缺省為 "any scope"
            
             id: 如果 Collection 非空的話,在每次遍歷時(shí)候 Collection 中每個(gè)元素的名字。
            
            其中除了 id 每個(gè)元素均為 Rt expr ,這兒的 rt expr 的意思就是 Run Time Expression 。明確的說就是,如果你對(duì)一個(gè) Attribute <rtexprvalue> 指定為 true ,你就可以在這樣的屬性中使用 <%=%> 之類的東東。這個(gè)配置文件在 tld 中。
            
            只有 id 是必須要說明的。
            
            關(guān)于 Api 說明的說明:
            
             id 只是一個(gè)臨時(shí)標(biāo)識(shí),在下面的 <bean:write 里面出現(xiàn)的 name 屬性要和 id 一致才能打印出 <bean:write property ,而此 property 就是在 iterator 中的屬性。
            
            舉例說明
            
            以下代碼生成一個(gè)階梯狀表格
            
            系統(tǒng) 資源 操作
            
             soft3
             res3
             opt3
             soft12
             res12
             opt1211
             soft11
             res11
             opt1111
            
            在此之前傳來一個(gè) request.getAttribute("userPurview") ,所以有在第一個(gè) logic 中的 userPurview, 就是在這個(gè) request 里面尋找 userPurview
            
            返回的是一個(gè) list
            
             <table width="300" border="0">
             <tr><td> 系統(tǒng) </td>
             <td> 資源 </td>
             <td> 操作 </td>
             </tr>

          <!--- 第一級(jí)迭代 -->

          //request 中的數(shù)值為” userPurview ”作用范圍在 request , 取的 ID 名為 targetSys
             <logic:iterate id="targetSys" name="userPurview" scope="request">   // 這個(gè) id 可以隨便起名,但是要注意下文使用的一致性
             <tr bgcolor="#cccccc"><td height="21" class="unnamed2">
             <bean:write name="targetSys" property="cn"/>      // 此處 name 和上面 id 保持一致, property 就是第一個(gè) list 里面的元素
             </td>
             <td height="21" class="unnamed2">?</td>
             <td height="21" class="unnamed3">?</td>
             </tr>

          <!--- 第二級(jí)迭代 -->


             <logic:iterate id="targetRes" name="targetSys" property="purviewResList">
             <tr><td height="21" class="unnamed2">?</td><td   height="21" class="unnamed5">
             <bean:write name="targetRes" property="cn"/>
             </td>
             <td   height="21" class="unnamed6">?</td>
             </tr>
             <!--- 第三級(jí)迭代 -->


             <logic:iterate id="targetOpr" name="targetRes" property="purviewOprList">
             <tr><td height="21" class="unnamed4">?</td><td   height="21" class="unnamed4">?</td>
             <td   height="21" class="redzi">
             <bean:write name="targetOpr"? property="cn"/></td>
             </tr>
             </logic:iterate>
            
             </logic:iterate>
            
             </logic:iterate>
             </table>
            
            結(jié)論
            
            多級(jí)迭代和單層差不多,唯一注意的就是 id <bean:write 中的 name 的對(duì)應(yīng),上級(jí) logic id 與下級(jí) logic name 對(duì)應(yīng),并且取出來的要是個(gè) Collection,name id 不一定實(shí)際需要這個(gè) bean ,都是虛擬的。

          posted @ 2006-09-26 11:51 Bruce 閱讀(911) | 評(píng)論 (0)編輯 收藏
          主站蜘蛛池模板: 金坛市| 铁岭县| 阳信县| 常熟市| 驻马店市| 祁连县| 晋中市| 黎城县| 怀柔区| 隆德县| 察隅县| 汤阴县| 赞皇县| 鹤庆县| 万荣县| 曲靖市| 承德市| 枣庄市| 迭部县| 扎兰屯市| 资兴市| 武清区| 潞城市| 阜新市| 宁德市| 潜江市| 教育| 遂昌县| 新乡市| 郧西县| 高青县| 高密市| 莱西市| 祁阳县| 金坛市| 甘德县| 罗定市| 阿拉善左旗| 上杭县| 宜兰县| 安庆市|