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

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

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

    Vincent.Chan‘s Blog

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    網(wǎng)站

    最新評(píng)論

    Spring Framework標(biāo)記庫(kù)初學(xué)指南

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

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

      Spring 標(biāo)記庫(kù)介紹及用法:

      本文將重點(diǎn)介紹Spring 提供的標(biāo)記庫(kù)及其用法:

      當(dāng)你在項(xiàng)目中用Spring Framework的時(shí)候,表現(xiàn)層可以選擇Spring Framework自帶的標(biāo)記庫(kù)。當(dāng)然,這不是你唯一的選擇。你可以選擇其它標(biāo)記庫(kù)或模板替換技術(shù)。Spring Framework 并沒(méi)有為應(yīng)用提供非常豐富的標(biāo)記庫(kù)。Spring Framework 提供的標(biāo)記庫(kù)僅僅是為了夠用就行,它并不是無(wú)所不包的。呵呵,這點(diǎn)與Struts豐富的標(biāo)記庫(kù)不一樣。其實(shí)這點(diǎn)符合RodJohnson的出發(fā)點(diǎn),既“不 造輪子”。當(dāng)然,Spring Framework標(biāo)記庫(kù)有它自身的特點(diǎn),可以說(shuō)是個(gè)有益的補(bǔ)充吧。

      Spring 標(biāo)記庫(kù)分類(lèi)如下:

      1、spring:hasBindErrors

      2、spring:bind

      3、spring:transform

      4、spring:message

      5、spring:htmlEscape

      6、spring:theme

      下面我們來(lái)具體介紹一下用法:

      1、spring:hasBindErrors

      對(duì)應(yīng)org.springframework.web.servlet.tags.BindErrorsTag標(biāo)記庫(kù)處理類(lèi)。

      這個(gè)標(biāo)記提供用于綁定對(duì)象的errors,如果這個(gè)標(biāo)記被用到的話,那么關(guān)于這個(gè)對(duì)象的錯(cuò)誤將在頁(yè)面上顯示出來(lái)。使用這個(gè)標(biāo)記的前提條件是要 先使用<spring:bind>標(biāo)記,并且<spring:hasBindErrors>這個(gè)標(biāo)記不能用來(lái)表示對(duì)象的狀態(tài),它僅僅可以綁定對(duì)象本身和對(duì) 象的屬性。 具體用法如下:

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

      通過(guò)這個(gè)簡(jiǎn)單的例子,我來(lái)具體說(shuō)一下這個(gè)標(biāo)記的屬性吧。

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

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

      2、spring:bind

      對(duì)應(yīng)org.springframework.web.servlet.tags.BindTag標(biāo)記庫(kù)處理類(lèi)

      這個(gè)標(biāo)記用來(lái)為某個(gè)bean或bean 的屬性賦值,通常和form一起用,相當(dāng)于action的作用。它指明表單要提交到那個(gè)類(lèi)或類(lèi)的屬性中去。

      其中path屬性是必須的,指明轉(zhuǎn)到的類(lèi)的路徑。舉例如下:

    <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

      對(duì)應(yīng)org.springframework.web.servlet.tags.TransformTag標(biāo)記庫(kù)處理類(lèi),這個(gè)標(biāo)記用來(lái)轉(zhuǎn)換 表單中不與bean中的屬性一一對(duì)應(yīng)的那些屬性,通常和<spring:bind>一起使用。<spring:transform>標(biāo)記為 <spring:bind>使用提供了更好的支持。

      屬性如下:

      value:必需要的。和當(dāng)前<spring:bind>標(biāo)記指向的bean類(lèi)相同。就是你要轉(zhuǎn)換的實(shí)體類(lèi)名。

      var:不是必需的。這個(gè)字符串被用來(lái)綁定輸出結(jié)果到page,request, session或application scope.默認(rèn)情況輸出到j(luò)sp中。

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

      4、spring:message 對(duì)應(yīng)org.springframework.web.servlet.tags.MessageTag標(biāo)記庫(kù)處理類(lèi)

      這個(gè)標(biāo)記用來(lái)幫助springframework支持國(guó)際化。和JSTL的fmt:message標(biāo)記類(lèi)似。當(dāng)然這個(gè)標(biāo)記可以很好的工作的本地的springframework框架下。

      屬性如下:

      code:不是必需的。用來(lái)查找message,如果沒(méi)有被使用的話,text將被使用。

      text:不是必需的。假如code不存在的話,默認(rèn)是text輸出。當(dāng)code和text都沒(méi)有設(shè)置的話,標(biāo)記將輸出為null.

      var:不是必需的。這個(gè)字符串被用來(lái)綁定輸出結(jié)果到page,request, session或application scope.默認(rèn)情況輸出到j(luò)sp中。

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

      5、spring:htmlEscape

      對(duì)應(yīng)org.springframework.web.servlet.tags.HtmlEscapeTag標(biāo)記庫(kù)處理類(lèi)

      不常用,這里省略

      6、spring:theme

      對(duì)應(yīng)org.springframework.web.servlet.tags.ThemeTag標(biāo)記庫(kù)處理類(lèi)

      不常用,這里省略

      學(xué)習(xí)完這些用法后,讓我們來(lái)看個(gè)具體的例子吧。

      配置步驟如下:

      目錄結(jié)構(gòu)圖:

    -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頁(yè)面代碼如下:

    <%@ 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>標(biāo)記經(jīng)常用來(lái)綁定<input>表單元素以便提交給PriceIncrease.java,其實(shí) PriceIncrease.java中就是包含一些getter和setter的方法的類(lèi)。當(dāng)用戶(hù)按下按鈕提交的時(shí)候,其表單中的值實(shí)際上就被 framework放到了PriceIncrease.java中。<spring:bind>經(jīng)常和form一起使用.這個(gè)$ {status.errorMessage}和${status.value}是一個(gè)framework定義的特殊變量,它們被用來(lái)顯示錯(cuò)誤信息和當(dāng)前表 單中的數(shù)據(jù)。呵呵,今天就到此為止吧,關(guān)于Spring Framework標(biāo)記庫(kù)的詳細(xì)用法,請(qǐng)參考其文檔。(轉(zhuǎn)載文章請(qǐng)保留出處:Java家(www.javajia.com))

    posted on 2006-03-23 00:21 Vincent.Chen 閱讀(226) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Spring


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久成人免费大片| 免费一区二区三区四区五区| 亚洲伊人久久综合影院| 亚洲的天堂av无码| 中文字幕乱码系列免费| 免费看AV毛片一区二区三区| 亚洲尹人九九大色香蕉网站| 一级毛片完整版免费播放一区| 毛色毛片免费观看| 亚洲高清免费在线观看| 毛片基地看看成人免费| 国产公开免费人成视频| 亚洲一级毛片免费观看| 久操免费在线观看| 国产亚洲美女精品久久久| 亚洲AV日韩AV永久无码色欲 | 成人片黄网站A毛片免费| 亚洲大尺度无码专区尤物| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 91久久青青草原线免费| 亚洲乱码日产一区三区| 色视频在线观看免费| 99久久这里只精品国产免费| 亚洲第一中文字幕| 青青操在线免费观看| 亚洲综合色视频在线观看| 疯狂做受xxxx高潮视频免费| 女人18毛片免费观看| 中文字幕乱码亚洲精品一区 | 毛片免费vip会员在线看| 亚洲天堂中文资源| 嫩草在线视频www免费观看| 一本久久a久久精品亚洲| 一级毛片大全免费播放下载| 四虎影视免费永久在线观看| 亚洲精品无码久久久久久| 欧洲精品成人免费视频在线观看 | 国产精品高清视亚洲一区二区| 久久久久久精品免费免费自慰| 亚洲人成在线影院| 亚洲国产精品免费视频|