回顧: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
out jspWriter(printWriter)
pageContext pageContext
取得其餘內置對象
操做全部四個域
exception瀏覽器
JSP模式:EL&JSTL服務器
軟件的結構:MVC
M:Model:模型 模式
V:View:視圖
C:Controller:控制器 cookie
EL : Expression Language 表達式語言
做用:計算表達式的值並替換到頁面的當前位置。替代的<%= %>
語法:${表達式}
注意:
EL只能在JSP中用,(HTML不能用)
EL只能訪問域中的數據,不能訪問頁面中的局部變量
若是EL表達式在當前頁面中不能生效(直接把表達式顯示出來,沒有進行計算),在page指令中設置isElgnored="false"
內置對象:(EL的內置對象,和JSP的內置對象不是一回事)
域對象:注意此四個內置對象表明的是四個域,並不表明四個JSP內置對象
pageScope
requestScope
sessionScope
applicationScope
注意:在使用EL表達式的這四個域對象指定取得數據的域範圍時,若是指定了,則只在指定的
域中查詢找數據,若是沒找到,則返回空(不是null,就是空字符串),若是沒有指定域,直接在EL表達式
中給出變量名,則由小到大在四個域中進行查詢,找到爲止.
請求參數對象:
請求頭對象
Cookie對象
上下文對象
初始化參數對象
JSTL : JSP Standard Target Lib : JSP標準標籤庫
是一些由Java語言實現的標籤,能夠在JSP頁面中使用的標籤.
因此這種標籤是內服務器運行的,瀏覽器並不能識別這些標籤.
JSTL是JSP官方開發的一些標籤.(任何人均可以開發標籤庫)session
如何使用JSTL:
導包(JSTL.jar standard.jar)
在頁面中聲明引用標籤庫:
<%@ taglib uri=" " prefix=" " %>
uri:當前引入標籤庫的惟一標識(開發標籤庫的開發者自定義的)
prefix:使用當前標籤庫的標籤時,使用的前綴.自定義(只在當前頁面有效)app
總結:jsp
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--------------------------------------------------------------------------------------------------------------