Servlet-jsp從入門到精通(五)

表達(dá)式語言(Expression Language 簡稱EL)

EL最初是定義在JSTL1.0規(guī)范中剂碴,在JSP2.0中,EL從JSTL中剝離出來利赋,放到JSP規(guī)范中成為了JSP2.0規(guī)范的一部分束析,并添加了新的特性族阅。在JSP頁面中债朵,使用EL可以簡化對變量和對象的訪問子眶。

語法 :${expr }

  • "[]"和"." 操作符用來操作符訪問數(shù)據(jù) ${user.name } ${user["name"]}
  • 算數(shù)操作符
  •     +        ${23+5}            28  
        -        ${23-5}            18  
        *        ${23*5}            115  
        /(div)     ${23/5} 或 ${23 div 5}    4.6  
        %(mod)    ${23%5} 或 ${23 mod 5}    3  
    
  • 關(guān)系表達(dá)式
  •     == (eq)    等于
        != (ne)    不等于
        <  (lt)    小于
        >  (gt)    大于
        <= (le)    小于等于
        >= (ge)    大于等于
    
  • 邏輯運算符
  •     && (and)    與
        || (or)    或
        !  (not)    非
    
  • Empty操作符
  •     ${empty A} 用于檢測A是否為null,或者為empty
    
  • 條件操作符
  •     ${A ? B : C}
    
  • 圓括號
  •     用來改變執(zhí)行的優(yōu)先級 ${22*(3-1)}
    

內(nèi)置對象

JSP
使用位置 : <% %> _jspService 變量
9種: request,response,session,application,config,out,page,exception,pageContext

EL表達(dá)式

使用位置 :${ }

11種

  1. pageContext: javax.servlet.jsp.PageContext對象
  2. pageScope :
    類型是Map,將頁面范圍內(nèi)的屬性名和它的值進行映射。主要用于獲取頁面范圍內(nèi)的屬性的值
  3. requestScope:
    類型是Map,將請求范圍內(nèi)的屬性名和它的值進行映射序芦。主要用于獲取請求范圍內(nèi)的屬性的值臭杰,與request對象不同,要想獲取request對象 ${requestContext.request}
  4. sessionScope:
    類型是Map,將會話范圍內(nèi)的屬性名和它的值進行映射谚中。主要用于獲取會話范圍內(nèi)的屬性的值渴杆,與session對象不同,要想獲取session對象 ${requestContext.session}
  5. applicationScope:
    類型是Map,將應(yīng)用程序范圍內(nèi)的屬性名和它的值進行映射宪塔。主要用于獲取應(yīng)用程序范圍內(nèi)的屬性的值磁奖。
  6. param:
    類型是Map,將請求中的參數(shù)的名字和單個的字符串值進行映射。主要用于獲取請求中的參數(shù)值某筐,等同于調(diào)用req.getParameter(name)
  7. paramValues:
    類型是Map,將請求中的參數(shù)的名字和一個包含了該參數(shù)所有值的String類型的數(shù)組進行映射比搭。主要用于獲取請求中的參數(shù)的值,等同于調(diào)用req.getParameteValues(name)
  8. header :
    類型為Map, 等同于調(diào)用req.getHeader(name)
  9. headerValues:
    類型為Map,等同于調(diào)用req.getHeaders(name)
  10. cookie :
    類型為Map,等同于調(diào)用getCookies(),從返回的數(shù)組中找到匹配名字的第一個cookie對象南誊。
  11. initParam :
    類型為Map,等同于調(diào)用context.getInitParameter(name)
命名變量

${user} 命名變量: 通過PageContext.findAttribute(user)方法完成身诺,該表達(dá)式按照page,request,session,application范圍順序查找命名的屬性user,如果么有找到將返回Null.也可以使用 pageScope,requestScope,sessionScope,applicationScope.指定范圍 抄囚,${sessionScope.user}

JSP標(biāo)準(zhǔn)標(biāo)簽庫 JSTL (JavaServer Pages Standard Tag Libary)

jsp提供的自定義標(biāo)簽的功能霉赡,擴展了JSP對標(biāo)簽的處理能力,很多開發(fā)人員都定制了自身應(yīng)用的標(biāo)簽庫幔托,用于完成某些功能穴亏,為了統(tǒng)一標(biāo)準(zhǔn),sun公司定制了一套標(biāo)簽庫的規(guī)范重挑,即JSTL嗓化。JSTL的目標(biāo)是為了簡化JSP頁面的設(shè)計。

  1. JSTL標(biāo)簽庫

     功能范圍        URI                前綴
     core    http://java.sun.com/jsp/jstl/core    c
     I18N    http://java.sun.com/jsp/jstl/fmt    fmt
     SQL        http://java.sun.com/jsp/jstl/sql    sql
     XML        http://java.sun.com/jsp/jstl/xml    x
     Functions    http://java.sun.com/jsp/jstl/functions    fn
    
  2. 配置JSTL

  • jstl.jar : 包含的是JSTL規(guī)范中定義的接口和相關(guān)的類
  • standard.jar: 包含的是開發(fā)小組對JSTL的實現(xiàn)和JSTL中5個標(biāo)簽庫的TLD文件谬哀。
  1. 核心標(biāo)簽庫
    • 一般用途的標(biāo)簽

      • <c:out> 用于計算一個表達(dá)式蟆湖,并將結(jié)果輸出到當(dāng)前的JswWriter對象類似于jsp表達(dá)式<%=expresesion %>或者El 中的 ${ }
        <c:out value="value">
      • <c:set> 用于設(shè)置范圍變量的值
        <c:set value="value" var="var" [scope="{page|request| session|application}"]>
      • <c:remove>用于移除范圍變量
        <c:remove var="var" [scope="{page|request|session| application}"]>
      • <c:catch> 用于捕獲在其中嵌套的操作所拋出的異常對象。
        * <c:catch val="exception">
        <%
        int i = 5;
        int j = 0;
        int k = i/j;
        %>
        </c:catch>
      • <c:out value="${exception.message}">
    • 條件標(biāo)簽

       <c:if> 用于實現(xiàn)java語言中if語句的功能    
             <c:if test="測試條件" var="變量" scope="var的范圍">   
             </c:if>    
       <c:choose> 只能包含<c:when><c:otherwise>    
         <c:when test="測試條件">        
         <c:otherwise>     
       判斷<c:when>標(biāo)簽的測試條件是否為true玻粪,第一個測試條件為true的<c:when>標(biāo)簽體被JSP容器執(zhí)行隅津,如果沒有滿足條件的<c:when>標(biāo)簽,那么<c:otherwise>標(biāo)簽被執(zhí)行     
      
    • 迭代標(biāo)簽

      • <c:forEach> 對于包含了多個對象的集合進行迭代劲室,重復(fù)執(zhí)行它的標(biāo)簽體伦仍。
        屬性:
        var :變量
        items :迭代對象
        varStatus:被導(dǎo)出的保存了迭代狀態(tài)的范圍變量的名字
        begin :開始迭代的索引
        end :終止迭代的索引
        step :迭代的步長

      • <c:forTokens> 對于迭代字符串中由分隔符分隔的各成員
        屬性:
        var :變量
        items :要迭代的String對象
        delims:指定分割字符串的分隔符
        varStatus:被導(dǎo)出的保存了迭代狀態(tài)的范圍變量的名字
        begin :開始迭代的索引
        end :結(jié)束迭代的索引
        step :迭代的步長

      • URL相關(guān)的標(biāo)簽

        • <c:import> 用于導(dǎo)入一個基于URL的資源。不僅可以在頁面中導(dǎo)入同一個web應(yīng)用程序下的資源很洋,還可以導(dǎo)入不同web應(yīng)用程序下的資源充蓝,甚至是其他網(wǎng)站的資源。

          屬性:

          url :要導(dǎo)入的資源的URL
          context :當(dāng)使用相對URL來訪問一個外部資源時,指定其上下文名字
          var :被導(dǎo)出的保存了資源內(nèi)容的范圍變量的名字
          scope :var的jsp范圍谓苟,默認(rèn)為page
          charEncoding :導(dǎo)入的資源內(nèi)容的字符編碼

        • <c:url> 使用正確的URL重寫規(guī)則構(gòu)造一個URL
          屬性
          value :要處理的URL
          context :當(dāng)使用相對URL來訪問一個外部資源時官脓,指定其上下文名字
          var :被導(dǎo)出的保存了處理后的URL的范圍變量的名字
          scope :var的JSP范圍,默認(rèn)page

          例如:
            <c:url value="login" var="myUrl">
                <c:param name="name" value="${param.name}"/>
                <c:param name="email" value="${param.email}"/>
            </c:url>
            <a href='<c:out value="${myUrl}">'></a>
          
        • <c:redirect> 將客戶端的請求重定向到另一個資源涝焙。
          屬性:
          url :重定向目標(biāo)資源的URL
          context :當(dāng)使用相對URL重定向到另一個外部資源的時候卑笨,指定其上下文名字

        • <c:param> 為一個URL添加請求參數(shù)
          屬性:
          name :查詢字符串參數(shù)的名字
          value :參數(shù)的值

  • I18N標(biāo)簽庫
    主要用于編寫國際化的web應(yīng)用程序,它分為兩部分仑撞,第一部分是國際化赤兴,第二部分是日期,時間和數(shù)字的格式化隧哮,在JSP頁面中使用I18N標(biāo)簽庫桶良,要使用taglib指令,指定引用的標(biāo)簽庫

      <%@ taglib url="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
      <fmt:formatDate> 按照區(qū)域或者定制的方式對日期和時間進行格式化
        value    要格式化的日期沮翔,時間
        type    指定value的日期部分還是時間部分要被格式化或者都要被格式化陨帆,默認(rèn)date
        dateStyle日期的預(yù)定義格式化樣式(java.text.DateFormat)
        timeStyle時間的預(yù)定義格式化樣式(java.text.DateFormat)
          default    2005-5-27    9:38:21
          short    05-5-27        上午 9:39
          medium    2005-5-27    9:38:21
          long    2005年5月27日    上午09時38分21
          full    2005年5月27日星期五    上午09時38分21CST
        pattern    自定義格式化日期和時間樣式,自定義樣式必須使用在java.text.SimpleDateFormat類中定義的樣式語法采蚀。一旦指定了pattern屬性疲牵,type,dateStyle
        timeZone使用的時區(qū). 參照java.util.TimeZone
        var    被導(dǎo)出的保存了格式化后的結(jié)果范圍變量的名字
        scope    var的JSP范圍  
    

serlvet-jsp從入門到精通(四)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搏存,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矢洲,老刑警劉巖璧眠,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異读虏,居然都是意外死亡责静,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門盖桥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灾螃,“玉大人,你說我怎么就攤上這事揩徊⊙恚” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵塑荒,是天一觀的道長熄赡。 經(jīng)常有香客問我,道長齿税,這世上最難降的妖魔是什么彼硫? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上拧篮,老公的妹妹穿的比我還像新娘词渤。我一直安慰自己,他們只是感情好串绩,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布缺虐。 她就那樣靜靜地躺著,像睡著了一般赏参。 火紅的嫁衣襯著肌膚如雪志笼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天把篓,我揣著相機與錄音纫溃,去河邊找鬼。 笑死韧掩,一個胖子當(dāng)著我的面吹牛紊浩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疗锐,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼坊谁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了滑臊?” 一聲冷哼從身側(cè)響起口芍,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雇卷,沒想到半個月后鬓椭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡关划,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年小染,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贮折。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡裤翩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出调榄,到底是詐尸還是另有隱情踊赠,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布每庆,位于F島的核電站臼疫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扣孟。R本人自食惡果不足惜烫堤,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鸽斟,春花似錦拔创、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至立倍,卻和暖如春灭红,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背口注。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工变擒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寝志。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓娇斑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親材部。 傳聞我的和親對象是個殘疾皇子毫缆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容

  • JSP 基本結(jié)構(gòu)JSP 頁面組成:模板文本(HTML,XML,純文本),JSP 元素乐导;JSP 元素:腳本元素苦丁,指令...
    jslancer閱讀 835評論 0 11
  • 一、JSP基礎(chǔ) 1.1什么是JSP JSP(Java ServerPage)是Java服務(wù)器端動態(tài)頁面技術(shù)物臂。是su...
    晨星資源閱讀 1,139評論 0 6
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法旺拉,類相關(guān)的語法,內(nèi)部類的語法鹦聪,繼承相關(guān)的語法账阻,異常的語法蒂秘,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • 第一部分簡單講解:jsp語法的規(guī)范泽本,以及三大編譯指令,七個動作指令和九大內(nèi)置對象,生命周期講解等姻僧。這章主要講解el...
    伊豚wall閱讀 401評論 0 3
  • 水果Fruit 這個詞大家一定都很熟悉吧撇贺? 上學(xué)的時候就學(xué)過: What‘s your favorite frui...
    噗噗l閱讀 3,864評論 0 1