<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    Spring Framework標記庫初學指南

    Spring是一個服務于所有層面的application framework:提供了bean的配置基礎,AOP的支持,JDBC的提取框架,抽象事務支持,等等。它有一個非常顯著的特點:在某個層面上如果你不 需要Spring的支持,你就可以不使用String的class,只使用它的某一部分的功能。從它的設計理念,你可以看到String幫助你實現了真正 的邏輯層和web層的分離。

      相對于EJB來說,Spring是一個輕量級的J2EE應用開發框架。這里提到的輕量級指的是Spring框架本身,而不是說Spring只 能適用于輕量級的應用開發。Spring的輕盈體現在其框架本身的基礎結構以及對其他應用工具的支持和裝配能力,與EJB這種龐然大物相比,Spring 使我們把各個技術層次之間的風險降低。EJB的內聚性較強,比如數據持久層管理、事務管理、生命周期管理都全部交給了EJB容器中管理,內聚性的白盒特征 使我們必須放棄一部分可控性而去信任容器能力。而Spring則是考慮如何“不造輪子”,如何更好的組裝這些輪子,讓他們更好的轉動。比如數據持久層管理 可以使用hibernate,日志管理可以使用jakartacommonlogging。一個比較恰當的比喻就是“我們要釘幾個釘子,為了完成這個目 的,錘子生產商生產了大大小小一系列的錘子,每個錘子都有一套復雜的使用方法,用來釘某種特別的釘子,結果令我們頭疼不堪。解決錘子過多的問題,通過 spring,我們可以使用幾種錘子,但用起來象是只有一個錘子”。(注:這段話是在網上看見的,這里引用這個比喻,我個人覺得很生動)關于這個框架也有 一些簡單的總結:“Spring有幾個主要的部分:Bean+ApplicationContext,以一種統一的、IoC的方式查找、管理、組裝、使用 系統的組件,取代一切工廠;持久化框架;web框架。“J2EE框架”是RodJohnson的愿景,他希望Spring為J2EE輕量級解決方案提供自 底至頂的全面基礎設施支持。”
      上面是關于一個新的Framework的簡單介紹,據說是未來J2EE發展的方向。以前在論壇上有關于J2EE最佳組合的討論,聽說這個 JSTL+Struts(或webwork)+Spring+Hibernate的組合很被看好,如果你感興趣的話,可以到 SpringFramework中文論壇上看看。下面轉入本文的正題。

      Spring 標記庫介紹及用法:

      本文將重點介紹Spring 提供的標記庫及其用法:

      當你在項目中用Spring Framework的時候,表現層可以選擇Spring Framework自帶的標記庫。當然,這不是你唯一的選擇。你可以選擇其它標記庫或模板替換技術。Spring Framework 并沒有為應用提供非常豐富的標記庫。Spring Framework 提供的標記庫僅僅是為了夠用就行,它并不是無所不包的。呵呵,這點與Struts豐富的標記庫不一樣。其實這點符合RodJohnson的出發點,既“不 造輪子”。當然,Spring Framework標記庫有它自身的特點,可以說是個有益的補充吧。

      Spring 標記庫分類如下:

      1、spring:hasBindErrors

      2、spring:bind

      3、spring:transform

      4、spring:message

      5、spring:htmlEscape

      6、spring:theme

      下面我們來具體介紹一下用法:

      1、spring:hasBindErrors

      對應org.springframework.web.servlet.tags.BindErrorsTag標記庫處理類。

      這個標記提供用于綁定對象的errors,如果這個標記被用到的話,那么關于這個對象的錯誤將在頁面上顯示出來。使用這個標記的前提條件是要 先使用<spring:bind>標記,并且<spring:hasBindErrors>這個標記不能用來表示對象的狀態,它僅僅可以綁定對象本身和對 象的屬性。 具體用法如下:

    <spring:hasBindErrors name="priceIncrease"> <b>Please fix all errors!</b> </spring:hasBindErrors>

      通過這個簡單的例子,我來具體說一下這個標記的屬性吧。

      name:是要被檢查的Bean的名字。這個屬性是必需要的。

      這里是簡單用法,所以就不介紹它包含的errors變量了。具體看英語文檔。下同。

      2、spring:bind

      對應org.springframework.web.servlet.tags.BindTag標記庫處理類

      這個標記用來為某個bean或bean 的屬性賦值,通常和form一起用,相當于action的作用。它指明表單要提交到那個類或類的屬性中去。

      其中path屬性是必須的,指明轉到的類的路徑。舉例如下:

    <form method="post">
    <table width="95%" bgcolor="f8f8ff" border="0" cellspacing="0" cellpadding="5">
    <tr>
    <td alignment="right" width="20%">Increase (%):</td>
    <spring:bind path="priceIncrease.percentage">
    <td width="20%">
    <input type="text" name="percentage" value="<c:out value="${status.value}"/>">
    </td>
    <td width="60%">
    <font color="red"><c:out value="${status.errorMessage}"/></font>
    </td>
    </spring:bind>
    </tr>
    </table>
    <br>
    ……………………省略
    </form>

     3、spring:transform

      對應org.springframework.web.servlet.tags.TransformTag標記庫處理類,這個標記用來轉換 表單中不與bean中的屬性一一對應的那些屬性,通常和<spring:bind>一起使用。<spring:transform>標記為 <spring:bind>使用提供了更好的支持。

      屬性如下:

      value:必需要的。和當前<spring:bind>標記指向的bean類相同。就是你要轉換的實體類名。

      var:不是必需的。這個字符串被用來綁定輸出結果到page,request, session或application scope.默認情況輸出到jsp中。

      scope:不是必需的。前提條件var必須設置的情況下。它的值可以是page,request, session或application。

      4、spring:message 對應org.springframework.web.servlet.tags.MessageTag標記庫處理類

      這個標記用來幫助springframework支持國際化。和JSTL的fmt:message標記類似。當然這個標記可以很好的工作的本地的springframework框架下。

      屬性如下:

      code:不是必需的。用來查找message,如果沒有被使用的話,text將被使用。

      text:不是必需的。假如code不存在的話,默認是text輸出。當code和text都沒有設置的話,標記將輸出為null.

      var:不是必需的。這個字符串被用來綁定輸出結果到page,request, session或application scope.默認情況輸出到jsp中。

      scope:不是必需的。前提條件var必須設置的情況下。它的值可以是page,request, session或application。

      5、spring:htmlEscape

      對應org.springframework.web.servlet.tags.HtmlEscapeTag標記庫處理類

      不常用,這里省略

      6、spring:theme

      對應org.springframework.web.servlet.tags.ThemeTag標記庫處理類

      不常用,這里省略

      學習完這些用法后,讓我們來看個具體的例子吧。

      配置步驟如下:

      目錄結構圖:

    -spirngapp
    -WEB-INF
    -classes
    -lib
    -src
    -war

      1、將spring.tld拷貝到WEB-INF目錄。

      2、將spring.jar拷貝到WEB-INF\lib包下

      舉例如下:

      在web.xml中配置好taglib屬性,代碼如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
    <web-app>
    <servlet>
    <servlet-name>springapp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>springapp</servlet-name>
    <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
    <welcome-file> index.jsp </welcome-file>
    </welcome-file-list>
    <taglib>
    <taglib-uri>/spring</taglib-uri>
    <taglib-location>/WEB-INF/spring.tld</taglib-location>
    </taglib>
    </web-app>

      jsp頁面代碼如下:

    <%@ include file="/WEB-INF/jsp/include.jsp" %>
    <%@ taglib prefix="spring" uri="/spring" %>
    <html>
    <head>
    <title><fmt:message key="title"/></title>
    </head>
    <body>
    <h1>
    <fmt:message key="priceincrease.heading"/>
    </h1>
    <form method="post">
    <table width="95%" bgcolor="f8f8ff" border="0" cellspacing="0" cellpadding="5">
    <tr>
    <td alignment="right" width="20%">Increase (%):</td>
    <spring:bind path="priceIncrease.percentage">
    <td width="20%">
    <input type="text" name="percentage" value="<c:out value="${status.value}"/>">
    </td>
    <td width="60%">
    <font color="red">
    <c:out value="${status.errorMessage}"/>
    </font>
    </td>
    </spring:bind>
    </tr>
    </table>
    <br>
    <spring:hasBindErrors name="priceIncrease">
    <b>Please fix all errors!</b>
    </spring:hasBindErrors> <br><br>
    <input type="submit" alignment="center" value="Execute">
    </form>
    <a href="<c:url value="hello.htm"/>">Home</a>
    </body>
    </html>

      <spring:bind>標記經常用來綁定<input>表單元素以便提交給PriceIncrease.java,其實 PriceIncrease.java中就是包含一些getter和setter的方法的類。當用戶按下按鈕提交的時候,其表單中的值實際上就被 framework放到了PriceIncrease.java中。<spring:bind>經常和form一起使用.這個$ {status.errorMessage}和${status.value}是一個framework定義的特殊變量,它們被用來顯示錯誤信息和當前表 單中的數據。呵呵,今天就到此為止吧,關于Spring Framework標記庫的詳細用法,請參考其文檔。(轉載文章請保留出處:Java家(www.javajia.com))

    posted on 2006-03-23 00:21 Vincent.Chen 閱讀(225) 評論(0)  編輯  收藏 所屬分類: Spring

    主站蜘蛛池模板: 美女视频黄视大全视频免费的| 国产一区二区三区免费| 91在线视频免费看| 亚洲精品国产成人中文| 蜜臀AV免费一区二区三区| 亚洲国产一成人久久精品| 精品国产福利尤物免费| 亚洲日韩VA无码中文字幕| 一个人看的免费高清视频日本 | 亚洲一区二区三区首页| 成全视频在线观看免费| 精品久久香蕉国产线看观看亚洲| 亚洲美女精品视频| 无码国产精品一区二区免费虚拟VR| 国产又大又黑又粗免费视频| 美国毛片亚洲社区在线观看| 激情综合色五月丁香六月亚洲| 亚洲精品在线免费看| 真人做A免费观看| 亚洲精品伦理熟女国产一区二区| 一级特黄aa毛片免费观看| 亚洲春色在线观看| 女人张开腿给人桶免费视频| 鲁啊鲁在线视频免费播放| 337p日本欧洲亚洲大胆裸体艺术 | 亚洲精品国产精品乱码视色| 久久精品成人免费观看| 亚洲AV无码乱码在线观看代蜜桃| xxxxx做受大片在线观看免费| 成在人线AV无码免费| 免费无码国产在线观国内自拍中文字幕| 99热在线观看免费| 亚洲国产成人久久| 免费观看亚洲人成网站| 久久久精品免费国产四虎| 亚洲综合久久精品无码色欲 | 一级毛片免费播放视频| 亚洲成人中文字幕| 国产一精品一AV一免费孕妇| a毛片成人免费全部播放| 亚洲欧洲日产国码www|