我的學習之路_第三十五章_EL&JSTL

來源:互聯網
上載者:User

標籤:服務   red   取得資料   contex   生效   requests   lang   不能   視圖   

回顧:JSP:JavaServerPage=servlet
三種指令碼:
<% %>
<%= %>
<%! %>
三種注釋:
<%-- --%>
<% // /**/ %>
<!-- -->
三個編譯指令:
<%@ page %>
contentType
pageEncoding
import
errorPage
isErrorPage
<%@ include %>
file
<%@ taglib %>
七個動作指令:
<jsp:include page=" "/>
<jsp: forward>
<jsp: taglin>
九個內建對象:
page object
request
session
applocation
response
config
outjspWriter(printWriter)
pageContextpageContext
取得其他內建對象
操作所有四個域
exception

 

JSP模式:EL&JSTL

軟體的結構:MVC
M:Model:模型 模式
V:View:視圖
C:Controller:控制器

EL : Expression Language 運算式語言
作用:計算運算式的值並替換到頁面的當前位置。替代的<%= %>
文法:${運算式}
注意:
EL只能在JSP中用,(HTML不能用)
EL只能訪問域中的資料,不能訪問頁面中的局部變數
如果EL運算式在當前頁面中不能生效(直接把運算式顯示出來,沒有進行計算),在page指令中設定isElgnored="false"

內建對象:(EL的內建對象,和JSP的內建對象不是一回事)
域對象:注意此四個內建對象代表的是四個域,並不代表四個JSP內建對象
pageScope
requestScope
sessionScope
applicationScope
注意:在使用EL運算式的這四個域對象指定取得資料的域範圍時,如果指定了,則只在指定的
域中查詢找資料,如果沒找到,則返回空(不是null,就是Null 字元串),如果沒有指定域,直接在EL運算式
中給出變數名,則由小到大在四個域中進行查詢,找到為止.
請求參數對象:
要求標頭對象
Cookie對象
內容物件
初始化參數對象

JSTL : JSP Standard Target Lib : JSP標準標籤庫
是一些由Java語言實現的標籤,可以在JSP頁面中使用的標籤.
所以這種標籤是內伺服器啟動並執行,瀏覽器並不能識別這些標籤.
JSTL是JSP官方開發的一些標籤.(任何人都可以開發標籤庫)

如何使用JSTL:
導包(JSTL.jar standard.jar)
在頁面中聲明引用標籤庫:
<%@ taglib uri=" " prefix=" " %>

uri:當前引入標籤庫的唯一標識(開發標籤庫的開發人員自訂的)
prefix:使用當前標籤庫的標籤時,使用的首碼.自訂(只在當前頁面有效)

總結:

EL:運算式語言
${運算式}
注意:運算式中的資料除常量必須來自於域
內建對象:
pageScope
requestScope
sessionScope
applocationScope
param/paramValues
pageContext: pageContext.request.contextPath 取得項目名
header/headerValues
initParam
cookie
empty:
數值:是否為0
字串:是否為空白“”
對象:是否為null
集合:否為長度為0

JSTL:
使用方式:
導包:jstl.jar standard.jar
在頁面中引用標籤庫: <%@ taglib uri=" " prefix=" " %>

uri:開發標籤庫中開發人員自訂
prefix:當前頁面自訂的(每個頁面都可以不一樣)
使用自訂的首碼引用標籤: <c:if > </c:if>

if
屬性:test : 屬性值的一個結果為布爾值的運算式,根據此運算式的結果決定是否運行if標籤的內容
沒有else,想要實現else只能是在if標籤的後面跟一個反條件的if
forEach
List:<c:forEach var="p" items=" ${list} " >
Map:<c:forEach var = "m" items=" ${map} ">
var所定義的m是一個索引值對,可以通過m.key/m.value 得到鍵和值

計數型迴圈:
var 迴圈控制變數
begin 起始值(閉區間)
end 結束值(閉區間)
step 步長

varStatus 屬性 : 代表的是當前本次迴圈的狀態
index:從0開始
count:從1開始
first : 是否是第一個
last:是否是最後一個

--------------------------------------------------------------------------------------------------------------
EL不能直接存取局部變數,只有被儲存在域中,才能被EL運算式訪問到
在${}前面加反斜線,代錶轉義,此EL運算式就不再進行運算了,而是原樣顯示
--------------------------------------------------------------------------------------------------------------
<%--包含特殊字元的名字,用方括弧和引號括起來 --%>
例如: \${header[‘User-Agent‘] } : ${header[‘User-Agent‘] }
--------------------------------------------------------------------------------------------------------------
${pageContext.request.contextPath } 擷取當前項目名
--------------------------------------------------------------------------------------------------------------
<%--判斷對象時,對象為空白,則返回true --%>
<%--判斷集合對象時,對象為空白,返回true,對象不為空白,但集合中沒有元素,返回true --%>
\${ empty list } : ${ empty list }<br/>
--------------------------------------------------------------------------------------------------------------

<%--JSTL中的if標籤,運算test屬性中的運算式,如果結果為true,則運算if標籤中的內容,否則不運行
JSTL沒有提供ELSE,所以想要實現if else 的結構,之恩能在if標籤後面再跟上一個if標籤
在test屬性中設定完全相反的條件
--%>
例題:<c:if test="${3>2 }">
<font>條件成立</font>
</c:if>
--------------------------------------------------------------------------------------------------------------
<%--
實現計數型迴圈:
for( int i = 0 ; i < 10 ; i++ )
begin:起始值
end:結束值 閉區間
step:步長(預設為1)
--%>
<c:forEach var="i" begin="1" end="10" step="1" >
${i }<br/>
</c:forEach>
--------------------------------------------------------------------------------------------------------------
<%--varStatus是一個可選屬性,設定代表當前迴圈狀態的一個對象
對象屬性:
index:整數,當前迴圈的索引,從零開始
count:整數,當前迴圈的次數,從一開始
first:布爾值,當前迴圈是否是第一次
last:布爾值,當前迴圈是否是最後一次
--%>
--------------------------------------------------------------------------------------------------------------
<c:forEach > </c:forEach>標籤中 (var 表示:變數名 items 表示要遍曆的元素)增強for
{begin:起始值end:結束值 step:步長(預設為1)} 普通for
--------------------------------------------------------------------------------------------------------------

 

我的學習之路_第三十五章_EL&JSTL

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.