shenang博客技術(shù)文檔


          理論不懂就實(shí)踐,實(shí)踐不會(huì)就學(xué)理論!

          posts - 35,comments - 55,trackbacks - 0
           

                                           Jstl簡(jiǎn)介

          鑒于目前強(qiáng)大的struts標(biāo)簽,貌似其已經(jīng)成為

          主流````而以前在頁(yè)上常用的Jstl標(biāo)記性語(yǔ)言用得越來(lái)越少,但是作為一個(gè)新手,面對(duì)前人寫(xiě)的程序,沒(méi)有對(duì)JSTL作一個(gè)基本的了解是不行的,因?yàn)椋覜Q定對(duì)JSTL作一個(gè)簡(jiǎn)單的了解,至少能認(rèn)識(shí)是什么東西吧,不要求完全掌握。

          一、我的第一個(gè)jstl程序

          運(yùn)行ide:myeclipse

          首先建立一個(gè)web項(xiàng)目,再在項(xiàng)目中添加jstl,即myecliseadd jstl```````````````.

          或者在你的web中加入jstl.jar standard.jar

          Test.java

           1 <%@ page language="java"  pageEncoding="GBK"%>
           2 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
           3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
           4 <html>
           5   <head>
           6     <title>My JSP 'test.jsp' starting page</title>
           7   </head>
           8   <body>
           9   <c:out value="歡迎使用你的第一個(gè)測(cè)試頁(yè)面"/>
          10   <br>
          11   <c:out value="``````````````````````````"/>
          12   <br>
          13   <c:out value="你的名字"/>
          14   </body>
          15 </html>
          16 

           

          二、關(guān)于jstl

          JSTL所提供的函數(shù)標(biāo)簽庫(kù)主要分為以下5類(lèi)。

          類(lèi)別

          內(nèi)容

          核心標(biāo)簽庫(kù)

          提供定制操作、以及執(zhí)行頁(yè)面內(nèi)容的迭代和條件操作,還提供了用來(lái)生成和操作URL的標(biāo)簽。

          XML標(biāo)簽庫(kù)

          提供了用來(lái) 操作以XML表示的數(shù)據(jù)的標(biāo)簽。

          格式化/國(guó)際化(i18n)標(biāo)簽庫(kù)

          定義了用來(lái)格式化數(shù)據(jù)(尤其是數(shù)字和日期)的操作的標(biāo)簽,這些標(biāo)簽還支持使用本地化資源進(jìn)行JSP頁(yè)面的國(guó)際化。

          數(shù)據(jù)庫(kù)標(biāo)簽庫(kù)

          定義了用來(lái)查詢(xún)關(guān)系數(shù)據(jù)庫(kù)操作的標(biāo)簽。

          函數(shù)標(biāo)簽庫(kù)

          利用ELFunction所實(shí)現(xiàn)出來(lái)的,主要用于處理字符串。

          7-1

          JSTL           前置名稱(chēng)       URI                       

          核心標(biāo)簽庫(kù)        c      http://java.sun.com/jsp/jstl/core    <c:out>

          I18N 格式標(biāo)簽庫(kù) fmt     http://java.sun.com/jsp/jstl/xml    <fmt:formatDate>

          SQL標(biāo)簽庫(kù)       sql     http://java.sun.com/jsp/jstl/sql     <sql:query>

          XML標(biāo)簽庫(kù)      xml     http://java.sun.com/jsp/jstl/fmt    <x:forBach>

          函數(shù)標(biāo)簽庫(kù)     fn        http://java.sun.com/jsp/jstl/functions <fn:split>

          三.關(guān)于每個(gè)庫(kù)的實(shí)例

          對(duì)于每一個(gè)標(biāo)簽的用法和標(biāo)簽中的屬性我們?cè)谶@不作說(shuō)明,有興趣的可以參越相關(guān)的文檔。

          (1)核心標(biāo)簽庫(kù)

           核心標(biāo)簽庫(kù)分類(lèi)

          分類(lèi)

          功能

          標(biāo)簽

          Core

          表達(dá)式相關(guān)

          out set remove catch

          流程控制

          if choose when otherwise

          迭代

          forEach forTokens

          URL

          import param url param rediect param

          表達(dá)式相關(guān)實(shí)例:
           1 <%@ page contentType="text/html;charset=GB2312" %>
           2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
           3 
           4 <html>
           5 <head>
           6   <title>表達(dá)式相關(guān)的標(biāo)簽</title>
           7 </head>
           8 <body>
           9 
          10 <h2>使用<c:out value="<c:out> <c:set> <c:remove>" />的例子</h2>
          11 <hr>
          12 <c:set scope="page" var="number">
          13     <c:out value="${5}"/>
          14 </c:set>
          15 <br>
          16 <c:set scope="request" var="number">
          17     <c:out value="${5}"/>
          18 </c:set>
          19 <br>
          20 <c:set scope="session" var="number">
          21     <c:out value="${5}"/>
          22 </c:set>
          23 
          24 各范圍number變量的初始值</p>
          25 
          26 pageScope.number =<c:out value="${pageScope.number}" default="No Data" />
          27 <br>
          28 requestScope.number =<c:out value="${requestScope.number}" default="No Data" />
          29 <br>
          30 sessionScope.number =<c:out value="${sessionScope.number}" default="No Data" />
          31 <br>
          32 
          33 <p><c:out value='執(zhí)行<c:remove var="number" />之后'/></p>
          34 
          35 <c:remove var="number" />
          36 
          37 pageScope.number =<c:out value="${pageScope.number}" default="No Data" />
          38 <br>
          39 requestScope.number =<c:out value="${requestScope.number}" default="No Data" />
          40 <br>
          41 sessionScope.number =<c:out value="${sessionScope.number}" default="No Data" />
          42 <br>
          43 </body>
          44 </html>
          45 
           

          流程控制實(shí)例:

           1 <%@ page contentType="text/html;charset=GB2312" %>
           2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
           3 
           4 <html>
           5 <head>
           6   <title>JSTL中用于流程控制的標(biāo)簽</title>
           7 </head>
           8 <body>  
           9 
          10   <h2>標(biāo)簽c:if的使用</h2>
          11   <c:if test="${param.username == 'Tom'}" var="condition" scope="session">
          12        您好,Tom
          13   </c:if>
          14   <c:if test="${param.username == 'Jerry'}" var="condition" scope="session">
          15        您好,Jerry
          16   </c:if>
          17   <c:if test="${param.username == 'Mike'}" var="condition" scope="session">
          18        您好,Mike
          19   </c:if>
          20   <c:if test="${param.username == 'Ben'}" var="condition" scope="session">
          21        您好,Ben
          22   </c:if>
          23 
          24   <h2>標(biāo)簽c:choose c:when c:otherwise使用</h2>
          25   <c:choose>
          26     <c:when test="${param.username == 'Tom'}">
          27       您好,Tom
          28     </c:when>
          29     <c:when test="${param.username == 'Jerry'}">
          30       您好,Jerry
          31     </c:when>
          32     <c:when test="${param.username == 'Mike'}">
          33       您好,Mike
          34     </c:when>
          35     <c:otherwise>
          36       您好,Ben    
          37     </c:otherwise>    
          38   </c:choose>  
          39      </body>
          40 </html>
          41 

           

          迭代實(shí)例:

           1 <%@ page contentType="text/html;charset=GB2312" %>
           2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
           3 
           4 <html>
           5 <head>
           6   <title>使用c:forEach和c:forTokens標(biāo)簽</title>
           7 </head>
           8 <body>
           9 
          10 <h2><c:out value="<c:forEach> 的用法" /></h2>
          11 
          12 <%    
          13     String atts[] = new String [4];
          14     atts[0]="您好!";    
          15     atts[1]="歡迎您!";    
          16     atts[2]="您已經(jīng)成功使用c:forEach標(biāo)簽.";    
          17     atts[3]="____________________________柳宗元";    
          18     request.setAttribute("atts", atts);
          19 %>
          20     
          21 <c:forEach items="${atts}" var="item" >
          22      ${item}</br>
          23 </c:forEach>
          24 
          25 <h2><c:out value="<c:forTokens> 的用法" /></h2>
          26 
          27 <%    
          28     String postcode = "34:5873:9898:001";    
          29     request.setAttribute("mypostcode", postcode);
          30 %>
          31 
          32 <c:forTokens items = "${mypostcode}" delims = ":" var = "item">
          33     ${item}
          34 </c:forTokens>
          35 
          36 </body>
          37 </html>
          38 

           

           結(jié) 果:

          <c:forEach> 的用法

          您好!
          歡迎您!
          您已經(jīng)成功使用c:forEach標(biāo)簽.
          ____________________________柳宗元

          <c:forTokens> 的用法

          34 5873 9898 001

          URL標(biāo)簽比較簡(jiǎn)單,不用再做介紹。
           

          2)數(shù)據(jù)庫(kù)標(biāo)簽實(shí)例

            1 <%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
            2 
            3 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
            4 
            5 <html>
            6 
            7 <head>
            8   <title>JSTL: SQL in action </title>
            9 </head>
           10 <body bgcolor="#FFFFFF">
           11 <h1>SQL Update Execution</h1>
           12 <sql:setDataSource
           13 
           14   var="example"
           15   driver="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookDB"
           16   url="com.microsoft.jdbc.sqlserver.SQLServerDriver "
           17   user="sa"
           18   password=""
           19 />
           20 <hr>
           21 
           22 <sql:transaction dataSource="${example}">
           23 
           24   <sql:update var="newTable">
           25     create table mytable (
           26 
           27       nameid int primary key,
           28       name varchar(80)
           29     )
           30   </sql:update>
           31 
           32 <h2>在表中插入三行記錄</h2>
           33   <sql:update var="updateCount">
           34     INSERT INTO mytable VALUES (1,'zhangshan')
           35 
           36   </sql:update>
           37   <sql:update var="updateCount">
           38     INSERT INTO mytable VALUES (2,'lishi')
           39   </sql:update>
           40   <sql:update var="updateCount">
           41     INSERT INTO mytable VALUES (3,'wangwu')
           42   </sql:update>
           43 
           44 <p>插入三行結(jié)束</p>
           45   <sql:query var="deejays">
           46     SELECT * FROM mytable
           47   </sql:query>
           48 
           49 </sql:transaction>
           50 
           51 <%-- An example showing how to populate a table --%>
           52 <table border="1">
           53 
           54   <%-- Get the column names for the header of the table --%>
           55   <c:forEach var="columnName" items="${deejays.columnNames}">
           56     <th><c:out value="${columnName}"/></th>
           57   </c:forEach>
           58 
           59   <%-- Get the value of each column while iterating over rows --%>
           60   <c:forEach var="row" items="${deejays.rows}">
           61     <tr>
           62     <c:forEach var="column" items="${row}">
           63       <td><c:out value="${column.value}"/></td>
           64     </c:forEach>
           65 
           66   </tr>
           67   </c:forEach>
           68 </table>
           69 <h2>更新表中的一行記錄</h2>
           70 
           71   <sql:update var="updateCount" dataSource="${example}">
           72     UPDATE mytable SET name=? <sql:param value="Scott Tiger"/> WHERE nameid=1
           73   </sql:update>
           74 <%-- The Value for sql:param can be obtained from the JSP parameters --%>
           75 <p>更新一行記錄成功</p>
           76 
           77 <sql:query var="deejays" dataSource="${example}">
           78   SELECT * FROM mytable
           79 </sql:query>
           80 <%-- Yet another example showing how to populate a table --%>
           81 <table border="1">
           82   <c:forEach var="row" items="${deejays.rows}" varStatus="status">
           83     <%-- Get the column names for the header of the table --%>
           84     <c:choose>
           85       <c:when test="${status.count == 1}">
           86         <%-- Each row is a Map object key'd by the column name --%>
           87         <tr>
           88         <c:forEach var="metaData" items="${row}">
           89           <th><c:out value="${metaData.key}"/></th>
           90         </c:forEach>
           91         </tr>
           92       </c:when>
           93     </c:choose>
           94     <tr>
           95     <c:forEach var="column" items="${row}">
           96       <%-- Get the value of each column while iterating over rows --%>
           97       <td><c:out value="${column.value}"/></td>
           98     </c:forEach>
           99   </tr>
          100   </c:forEach>
          101 </table>
          102 <h2>刪除表中的第二條記錄</h2>
          103 
          104   <sql:update var="updateCount" dataSource="${example}">
          105     DELETE FROM mytable WHERE nameid=2
          106   </sql:update>
          107 
          108 <p>刪除完成</p>
          109 <sql:query var="deejays" dataSource="${example}">
          110   SELECT * FROM mytable
          111 </sql:query>
          112 <%-- Yet another example showing how to populate a table --%>
          113 <table border="1">
          114   <c:forEach var="row" items="${deejays.rows}" varStatus="status">
          115     <%-- Get the column names for the header of the table --%>
          116     <c:choose>
          117       <c:when test="${status.count == 1}">
          118         <%-- Each row is a Map object key'd by the column name --%>
          119         <tr>
          120         <c:forEach var="metaData" items="${row}">
          121           <th><c:out value="${metaData.key}"/></th>
          122         </c:forEach>
          123         </tr>
          124       </c:when>
          125     </c:choose>
          126     <tr>
          127     <c:forEach var="column" items="${row}">
          128       <%-- Get the value of each column while iterating over rows --%>
          129       <td><c:out value="${column.value}"/></td>
          130     </c:forEach>
          131   </tr>
          132   </c:forEach>
          133 </table>
          134 <sql:update var="newTable" dataSource="${example}">
          135   drop table mytable
          136 </sql:update>
          137 </body>
          138 </html>
          139 

           

          3sqlxml標(biāo)簽

           

          關(guān)于這二個(gè)標(biāo)簽,有興趣的可以參考ibm的學(xué)習(xí)文章

          www.ibm.com/developerworks/cn/java/j-jstl0520/

          看了這篇文章對(duì)jstl有一個(gè)了解了吧,其實(shí)現(xiàn)在不用去深入學(xué)習(xí),純屬個(gè)人觀點(diǎn),呵呵!

          由于現(xiàn)在用得不算太多,整理得不詳細(xì),望諒!如果有需要更詳細(xì)的,留下你的email!

          posted on 2009-04-16 10:03 重慶理工小子 閱讀(2430) 評(píng)論(6)  編輯  收藏 所屬分類(lèi): Jsp基礎(chǔ)編程

          FeedBack:
          # re: JSTL簡(jiǎn)介
          2009-04-16 10:14 | 于翔
          謝謝樓主的整理  回復(fù)  更多評(píng)論
            
          # re: JSTL簡(jiǎn)介
          2009-04-16 10:27 | 重慶理工小子
          @于翔
          因?yàn)楝F(xiàn)在用得不多,整理不是很詳細(xì),望諒!  回復(fù)  更多評(píng)論
            
          # re: JSTL簡(jiǎn)介
          2009-04-16 11:44 | 陽(yáng)衡鋒
          jstl+el真乃無(wú)敵,就是覺(jué)得sql這樣的標(biāo)簽,不會(huì)這么用。  回復(fù)  更多評(píng)論
            
          # re: JSTL簡(jiǎn)介
          2009-04-16 12:28 | UP
          @陽(yáng)衡鋒
          確實(shí)強(qiáng)大,如果作JSP頁(yè)面,這二種語(yǔ)言是少不了的````不過(guò)現(xiàn)在鑒于struts2的強(qiáng)大標(biāo)簽庫(kù),一般采用struts的標(biāo)簽了`。  回復(fù)  更多評(píng)論
            
          # re: JSTL簡(jiǎn)介
          2009-04-21 17:29 | 天好冷
          暈,沒(méi)見(jiàn)誰(shuí)說(shuō)JSTL要淘汰的……

          極度反感各類(lèi)框架的標(biāo)簽,只用JSTL  回復(fù)  更多評(píng)論
            
          # re: JSTL簡(jiǎn)介
          2010-01-21 15:49 | 張志超
          zhangzc.009@gmail.com

          可以發(fā)一份詳細(xì)的jstl的文檔給我嗎,謝謝!  回復(fù)  更多評(píng)論
            

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 景东| 临夏市| 江山市| 平潭县| 余姚市| 东山县| 澄迈县| 吴堡县| 伊金霍洛旗| 建湖县| 罗田县| 阳江市| 丰顺县| 汤原县| 绥中县| 河曲县| 平山县| 准格尔旗| 富阳市| 潼关县| 天门市| 锡林郭勒盟| 东台市| 古浪县| 柳江县| 莫力| 寿光市| 拉孜县| 乐平市| 中山市| 深泽县| 铁岭市| 全椒县| 崇州市| 喀喇| 青龙| 商洛市| 巴青县| 天门市| 利津县| 宁阳县|