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

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

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

    千里馬

    天馬行空

    JSTL(jsp標準標簽庫)

    1,JSTL是一個不斷完善的開放源代碼的jsp標簽庫,有Apache組織的jakarta小組維護。JSTL只能運行在支持jsp1.2和Servlet2.3規(guī)范及其以后的web容器上,Tomcat4.x版本以上均可使用。從jsp2.0開始作為javaee標準支持的。
    2,jsp標簽庫:jsp標簽庫規(guī)范指出,開發(fā)這可以通過實現(xiàn)javax.servlet.jsp.tagext.JspTag接口,并提供一個標簽庫的描述文件(XML格式,以.tld結(jié)尾)來實現(xiàn)一個標簽庫。使用該標簽庫的jsp文件需要使用taglib指令元素進行導(dǎo)入。
    jsp標簽庫最大的有點是把某種特定的功能進行封裝,需要使用這種功能的地方可以直接調(diào)用,而不必重復(fù)些類似的代碼,尤其對于web開發(fā)常見的功能非常有幫助。
    例子如下
    (1)完成標簽類:
    package JSTL;

    import java.io.IOException;
    import java.util.Date;

    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.JspWriter;
    import javax.servlet.jsp.tagext.TagSupport;

    public class MyTag extends TagSupport {
      @Override
    public int doEndTag() throws JspException {
      JspWriter out= pageContext.getOut();
      try {
      out.print(new Date().toString());
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
      return EVAL_PAGE;
    }
    }
    (2)完成標簽庫描述文件:
    <?xml version="1.0" encoding="UTF-8"?>
     <taglib>
    <tlibversion>1.0</tlibversion>
    <jspversion>2.0</jspversion>
    <shortname>tagLib</shortname>
    <uri>/WEB-INF/TagDescription.tld</uri>
    <info>myTagLib</info>
    <tag>
    <name>currentName</name>
    <tagclass>JSTL.MyTag</tagclass>
    <bodycontent>empty</bodycontent>
    </tag>
    </taglib>

    (3),在jsp頁面中使用:
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@ taglib uri="/WEB-INF/TagDescription.tld" prefix="m" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>
     
      <body>
       µ±Ç°Ê±¼ä£º<m:currentName/>
      </body>
    </html>
    3,jstl的優(yōu)點:(1)簡化了jsp的開發(fā),減少了jsp中的scriptlet代碼數(shù)量。jsp主要用于顯示業(yè)務(wù)邏輯代碼處理以后的數(shù)據(jù)結(jié)果。不可避免的會使用循環(huán),布爾邏輯,數(shù)據(jù)格式轉(zhuǎn)換等語句,如果使用jsp腳本的for、if或其他語句,不僅需要導(dǎo)入必要的包,而且每個類似的地方都要寫相同的代碼,非常不利于維護。使用jstl可以大大簡化這方面的開發(fā)。
    (2),在應(yīng)用程序服務(wù)器之間提供了一致的接口,最大程度提高了web應(yīng)用在各應(yīng)用服務(wù)器之間的移植。jstl屬于javaee規(guī)范以內(nèi),所有符合web規(guī)范的服務(wù)器都必須支持jstl,所以將web應(yīng)用程序進行移植完全不存在問題。反過來,如果是其他第三方提供的標簽庫,就需要提供另外的資源才能進行移植。
    (3),jstl的開源性決定了它具有很強的擴展性。jstl的給類標簽幾乎覆蓋了所有web應(yīng)用程序的常見功能,如果這些功能還不能滿足開發(fā)者的需求的話,可以對他本身的實現(xiàn)類繼續(xù)進行擴展,及利用率jstl的良好設(shè)計,又可以滿足特定的需求。
    4,JSTL標簽庫使用方法:

    標簽庫                         URI                                           前綴      使用模式
    核心標簽庫                  http://java.sun.com/jstl/core         c             <c:tagname…>

    國際化標簽(I18N)        http://java.sun.com/jstl/fmt           fmt         <fmt:tagname…>

    SQL標簽庫                 http://java.sun.com/jstl/sql            sql          <sql:tagname…>

    XML標簽庫                http://java.sun.com/jstl/xml          x            <x:tagname…>

    函數(shù)標簽庫                  http://java.sun.com/jstl/functions   fn           <fn:tagname…>

     (1)核心標簽庫:包含了常用的標簽、迭代標簽和其他一些一般用標簽。在jsp頁面中使用核心標簽庫的引用格式:
    <%@ taglib uri=" 一般用途標簽:<c:out><c:set><c:remove>
    <c:out>用于向jsp的輸出流打印一個表達式的結(jié)果。
    <c:set>用于向特定的作用范圍設(shè)置一個屬性對象或設(shè)置一個javabean的屬性值。
    迭代標簽<c:foreach>:在web應(yīng)用程序中,迭代主要用于訪存和顯示數(shù)據(jù)集。通常以列表和表中的一系列行的形式顯示。實現(xiàn)迭代內(nèi)容的主要的jstl標簽是<c:foreach>.該標記支持兩種不同樣式的迭代,整數(shù)范圍的迭代(類似java語言的for循環(huán)語句)和集合上的迭代(類似java語言的iterator和foreach);
    使用<c:if>和<c:choose>實現(xiàn)布爾邏輯判斷。
    jstl核心標簽庫的其余標簽主要是關(guān)于url的,這些標簽中首推<C:url>,用于生成url。它提供了三個功能元素,為javaweb應(yīng)   用程序構(gòu)造url時特別有用。
      (1),在前面附加當前servlet上下文的名稱。
       (2),為會話管理重寫url
       (3),請求參數(shù)的名稱和值的url編碼。
    (2),jstl數(shù)據(jù)庫標簽庫(sql):
    jstl數(shù)據(jù)庫標簽庫是為了減少操作數(shù)據(jù)庫的jsp腳本代碼而設(shè)計的。讓開發(fā)者快捷的操作數(shù)據(jù)庫,他的本質(zhì)上也是使用jdbc進行數(shù)據(jù)庫操作的。
    使用數(shù)據(jù)庫標簽庫的:<%@ taglib uri="
    使用jstl數(shù)據(jù)庫標簽進行數(shù)據(jù)庫數(shù)據(jù)的添加,刪除,查詢,修改操縱大致分為三步,:準備數(shù)據(jù)源、執(zhí)行sql語句,及根據(jù)執(zhí)行結(jié)構(gòu)進行相應(yīng)的操作。
    (1),使用<sql:setDataSource>標簽為所有的sql標簽準備數(shù)據(jù)源對象,。一般來說,一個web應(yīng)用程序只需要一個數(shù)據(jù)源即可。
      <sql:setDataSource
         driver="驅(qū)動類名"
         url="連接字符串"
         user="用戶名"
         password="密碼"
         var="數(shù)據(jù)源保存的變量名"
         scope="作用范圍"
     />
    (2),<sql:query>標簽用于執(zhí)行select的sql語句,得到 查詢的結(jié)果集。
    <sql:query var="結(jié)果變量"sq="sql"
           [scope="作用范圍"
    datasource="數(shù)據(jù)源"
     maxRows="最大行數(shù)"
    startRow="其實行數(shù)"]>
    [<sql:param>指定sql參數(shù)]
    </sql:query>
    使用<sql:update>標簽更新數(shù)據(jù)庫數(shù)據(jù):<sql:update>標簽用于執(zhí)行insert、update和delete的sql語句得到的結(jié)果為影響的記錄條數(shù):
     <sql:update var="結(jié)果變量" sql="sql語句"
         [
    scope="作用范圍"
    datasource="數(shù)據(jù)源"]>
    [<sql:param>指定sql參數(shù)]
    <sql:update>
    <sql:update var="結(jié)果變量"
         [scope="作用范圍"
         datasource="數(shù)據(jù)源"]>
    sql語句
    [<sql:param>指定sql參數(shù)]
    </sql:update>
    使用<sql:transaction>標簽來使用數(shù)據(jù)庫事務(wù)
    事務(wù)處理用于保護作為一組必須成功或必須失敗的一系列數(shù)據(jù)庫操作。當使用jstl的數(shù)據(jù)表標簽庫來進行數(shù)據(jù)庫操作的時候同樣可以使用事物,將相應(yīng)的<sql:query>和<sql:update>操作嵌套到<sql:transaction>標簽的主體內(nèi)容中,把一系列的查詢和更新操縱打包到一個事物處理中即可。
    <sql:transaction [dataSource="數(shù)據(jù)源" isolation="隔離級別"]>
    <sql:query .../>
    or
    <sql:update.../>
    ...
    </sql:transaction>
    (3)JSTL函數(shù)標簽庫(Function)
    函數(shù)標簽庫相對于其他的標簽庫來說比較特殊,它是jstl定義的標準的el函數(shù)集合。直接在el中使用,使用方式:fn:函數(shù)名(參數(shù))。該標簽庫定義的函數(shù)基本上都是對字符串進行相關(guān)操作的函數(shù)。
    布爾表達式函數(shù):contains,containsIgnoreCase startWith endWith返回的true和false
    fn:contains("源字符串","匹配字符串")
    fn:contains("源字符串","匹配字符串");
    fn:startWith("源字符串","匹配的開頭字符串");
    fn:endWith("源字符串","匹配的結(jié)尾字符串");
    整型表達式函數(shù):indexOf和length分別是返回字符串的下表和整個字符串的長度
    fn:indexOf("源字符串","匹配字符串")
    fn:length("源字符串")
    字符修改函數(shù):fn:replace("源字符串","匹配字符串","替換后的字符串")用于替換字符串的某些內(nèi)容
    fn:subString ("源字符串",開始下標,"結(jié)束下標")用于截取字符串的一段
    fn:toUppercase()轉(zhuǎn)換成大寫
    fn:toLowerCase()轉(zhuǎn)換成小寫
    fn:trim 去掉字符串兩頭的空格

    posted on 2012-05-24 09:28 Mr Lee 閱讀(4081) 評論(1)  編輯  收藏 所屬分類: java技術(shù)

    Feedback

    # re: JSTL(jsp標準標簽庫)[未登錄] 2014-04-29 16:29 ddd

    fsdfsd  回復(fù)  更多評論   


    My Links

    Blog Stats

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章檔案

    (hibernate)http://www.tkk7.com/dyllove98/archive/2012/05/12/377959.html

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品白浆高清久久久久久| 99视频精品全部免费观看| 成年男女男精品免费视频网站| 新最免费影视大全在线播放| 午夜小视频免费观看| 亚洲乱人伦中文字幕无码| 国产成人亚洲毛片| 免费无码成人AV片在线在线播放| 亚洲精品一二三区| 好爽又高潮了毛片免费下载| 亚洲国产精品无码久久久蜜芽 | 国产成人精品日本亚洲专一区| aⅴ免费在线观看| 国产乱人免费视频| 美景之屋4在线未删减免费| 午夜亚洲福利在线老司机| 亚洲黄色网址大全| 成人免费观看男女羞羞视频| 亚洲日韩中文在线精品第一| 91视频精品全国免费观看| 亚洲韩国—中文字幕| 国产精品视频免费观看| 亚洲情A成黄在线观看动漫软件 | 二个人看的www免费视频| 日韩高清在线高清免费| 亚洲黄色免费在线观看| 男人的好看免费观看在线视频| 国产亚洲综合网曝门系列| 一级毛片免费视频| 亚洲国产香蕉人人爽成AV片久久 | 亚洲精品卡2卡3卡4卡5卡区| 国产高清不卡免费视频| 亚洲午夜久久久影院伊人| 亚洲日韩中文字幕一区| 少妇太爽了在线观看免费视频| 亚洲人色大成年网站在线观看| 久久精品免费观看| 亚洲综合无码精品一区二区三区| 美女被免费网站在线视频免费| 亚洲精品无码不卡在线播放HE| av无码国产在线看免费网站|