標籤:ade clu 儲存 property 資料庫 rto 格式 三元 actions
jsp的標籤技術:在jsp頁面中最好不要出現java代碼,這時我們可以使用標籤技術將java代碼替換成標籤來表示
1.jsp標籤:sun原生提供的標籤直接在jsp頁面中就可以使用
<jsp:include> -- 實現頁麵包含,動態包含
<jsp:forward> -- 實現請求轉寄
<jsp:param> -- 配合上面的兩個標籤使用,在請求包含和請求轉寄時用來在路徑後拼接一些請求參數
2.EL運算式:最初出現的目的是用來取代jsp頁面中的jsp指令碼運算式.但是隨著el的發展el的功能已經不限於此了
${el運算式}
(1)擷取資料:
使用中括弧的地方都可以使用點號替代,除了中括弧中是數字或者中括弧中包含特殊字元(-.)的情況除外
在中括弧中如果不用雙引號引起來則是變數,先找變數的值再拿變數的值使用.如果用雙引號則是常量,直接使用常量的值
~擷取常量
字串/數字/布爾類型,直接寫在el運算式中,el直接進行輸出
~擷取域中的變數
如果el中寫的是一個變數的名,則el會調用pageContext的findAttribute方法,在四大範圍中以給定的名字找對應的屬性值,找到後進行輸出,如果四個域中都找不到,什麼都不輸出
~擷取數組中的資料
~擷取集合中的資料
~擷取Map中的資料
~擷取javabean的屬性
(2)執行運算:
算數運算
+-*/
邏輯運算
比較運算
三元運算子
empty運算子
(3)擷取常用開發對象:el中內建了11個內建對象,這些對象el內建的,不需要提前定義就可以直接在el中使用
!pageContext -- 有了它可以很方便的擷取jsp頁面中的9大隱式對象
!pageScope -- page域中屬性群組成的Map
!requestScope -- request域中屬性群組成的Map
!sessionScope -- session域中屬性群組成的Map
!applicationScope --application域中屬性群組成的Map
!param -- 所有請求參數組成的Map<String,String>
paramValues -- 所有請求參數組成的Map<String,String[]>
header -- 所有要求標頭組成的Map<String,String>
headerValues -- 所有要求標頭組成的Map<String,String[]>
!cookie -- 所有cookie資訊組成的Map<String,Cookie>
initParam -- 所有web應用的初始化參數組成Map
(4)調用java方法: -- 不需要大家自己會寫調用方法的過程,只要會調用別人寫好的標籤庫就可以了 fn標籤庫
~寫一個類其中包含要被el調用的方法,這個方法必須是靜態方法
~寫一個tld檔案在其中對要被調用的靜態方法進行一下描述
~在jsp頁面中taglib指令將tld檔案引入當前jsp頁面,從而在jsp頁面中就可以調用描述好的方法
3.JSTL:
<c:out> 標籤用於輸出一段常值內容到pageContext對象當前儲存的“out”對象中。
<c:set>標籤用於把某一個對象存在指定的域範圍內,或者設定Web域中的java.util.Map類型的屬性對象或JavaBean類型的屬性對象的屬性。
<c:remove>標籤用於刪除各種Web域中的屬性
<c:catch>標籤用於捕獲嵌套在標籤體中的內容拋出的異常,其文法格式如下:<c:catch [var="varName"]>nested actions</c:catch>
!!<c:if test=“”>標籤可以構造簡單的“if-then”結構的條件運算式
!!<c:choose>標籤用於指定多個條件選擇的組合邊界,它必須與<c:when>和<c:otherwise>標籤一起使用。使用<c:choose>,<c:when>和<c:otherwise>三個標籤,可以構造類似 “if-else if-else” 的複雜條件判斷結構。
!!<c:forEach>標籤用於對一個集合對象中的元素進行迴圈迭代操作,或者按指定的次數重複迭代執列標籤體中的內容。
!!<c:forTokens>用來瀏覽一字串中所有的成員,其成員是由定義符號所分隔的
<c:param>標籤 在JSP頁面進行URL的相關操作時,經常要在URL地址後面附加一些參數。<c:param>標籤可以嵌套在<c:import>、<c:url>或<c:redirect>標籤內,為這些標籤所使用的URL地址附加參數。
<c:import> 標籤,實現include操作
<c:url>標籤用於在JSP頁面中構造一個URL地址,其主要目的是實現URL重寫。URL重寫就是將會話標識號以參數形式附加在URL地址後面
<c:redirect>標籤用於實現請求重新導向
4.自訂標籤技術:
標籤:JSP既可以用來產生HTML頁面,也可以直接書寫java源碼處理邏輯,這就導致了很多開發人員在JSP出現初期,只用JSP做開發,這個JSP頁面十分龐大、充滿了java源碼和HTML標籤、許多百分比符號,邏輯結構混亂,不宜偵錯工具和頁面美化。於是人們希望將java源碼從JSP頁面中盡量抽離,但是把所有java源碼都抽走是不現實的,最基本的擷取屬性、簡單的頁面邏輯還是需要的,於是,sun公司就提供了JSP中的標籤開發技術,以一個標籤代表一種功能的java代碼,是整個jsp看起來更像一個HTML,並且不丟失JSP進行邏輯處理的功能。
1.JSP標籤:由sun公司提供,屬於jsp規範中的內容,不需要引入第三方標籤庫
<jsp:inclue>用來替代request.getRequestDispatcher().include()
<jsp:forward>用來替代request.getRequestDispatcher().forward()
<jsp:param>配合前兩個標籤使用,可以在包含或轉寄時,帶一些參數過去
<jsp:useBean id="beanName" class="package.class" scope="page|request|session|application"/>在指定域中搜尋名字為id設定值的bean,如果沒有就在該域中建立一個
<jsp:setProperty name="beanName"
{
property="propertyName" value="{string | <%= expression %>}" |
property="propertyName" [ param="parameterName" ] |
property= "*"
}/> 用於為bean的屬性負值name指定bean的名字,property指定要設定的屬性的名字,value指定設定的屬性的值,param用來指定使用哪個請求參數設定該屬性,property可以設定為*,用來將所有的請求參數自動化佈建懂啊bean對應的屬性上
<jsp:getProperty name="beanInstanceName" property="PropertyName" />用於擷取屬性的值輸出到輸出資料流中,其中name指定bean的名字,property指定bean上屬性的名字
2.el運算式:替代<%= %>指令碼運算式,在j2ee1.4以前預設是不支援el,如果需要需要指定page指令[isELIgnored="true | false" ]為false,j2ee4.0後預設支援el
2.1獲得域中的屬性
${propName}在四個域中搜尋proName屬性,輸出該值到輸出資料流中
${pageScope/requestScope/sessionScope/applicationScope.proName}擷取指定域中的屬性
${attr[0]}擷取域中的集合的指定元素
${list[0]}擷取list中的指定位置元素
${map.keyName}擷取map中指定鍵的值
${bean.propName}擷取javaBean的屬性,可以認為是調用了javaBean的getXXX方法,
~最重要的一個應用情境:在寫路徑的時候最好不要把web應用程式名稱寫死,java中應該用request.getContextPath去擷取。jsp中就用el擷取:${pageContext.request.contextPth}
~.和[]區別使用點的地方都可以用中括弧,如果屬性名稱是數字或包含特殊符號(.-)就必須使用中括弧。例子:${map["first.name"]}
2.2進行簡單運算
(1)算數運算:所有參與元算的元素都會被轉成數字,如果不能轉就報錯,空元素參與運算當作沒參與。
(2)關係運算:
(3)邏輯運算:
(4)empty/not empty判斷一個對象或集合或數組是否為空白或長度為0
(5)三元運算式 name == null ? "張三" : name;
2.3擷取web開發常用對象
pageContext:代表pageContext對象,注意和pageScope進行區分
pageScope:代表page域,可以用來擷取page域中的屬性
reqeustScope:代表reqeust域,可以用來擷取reqeust域中的屬性
sessionScope:代表session域,可以用來擷取session域中的屬性
applicationScope:代表application域,可以用來擷取application域中的屬性
param 代表請求參數組成的map集合${param.userName}
paramValues 代表請求參宿組成的map集合,但是此集合的value是String[],用來擷取一名多值的param
header 擷取要求標頭組成的map
headerValues 擷取要求標頭組成的map但是value是一個String[],用來擷取一名多值的head
cookie 擷取cookie組成的map對象,此map的值是一個cookie對象${cookie.cookieName.cookieValue}
initParam 以map封裝的web.xml中配置的整個web應用的初始化參數
2.4調用java方法
el運算式可以調用java中的靜態方法,分如下步驟完成:
(1)編寫一個類,其中應該包含要使用el調用的靜態方法
(2)編寫一個tld檔案,描述該方法的調用,在建立tld檔案時應選用2.0版本的jsp配置,指定名稱空間uri和縮寫prefix
(3)在tld檔案中配置方法資訊
<function>
<name>encodeURL</name>el在調用時所使用的方法名
<function-class>cn.itheima.util.EncodeURL</function-class>靜態方法所在的類全路徑名
<function-signature>
java.lang.String EncodURL( java.lang.String )//對該方法的描述:傳回值類型 方法名(參數類型)
</function-signature>
</function>
(4)在jsp中使用<%@ taglib uri="" prefix="ppp"%>引入tld檔案
(5)在jsp中使用${ppp:encodeURL("xxxx")}調用
2.5SUN提供的EL函數庫,基本上都是對字串進行操作的函數,請參考張老師寫的《第8章 標準標籤庫_0519.doc》
==========================================
3.JSTL標籤庫,在javaee4.0需要匯入JSTL相關的jar包,在javaee5.0開始,預設已經包含了此jar包。還要需要用<%@ taglib%>指令引入標籤庫
3.1介紹
JavaServer Pages Standard Tag Library
由JCP(Java Community Process)指定標準
提供給 Java Web 開發人員一個標準通用的標籤函數庫
和 EL 配合來取代傳統直接在頁面上嵌入 Java 程式(Scripting)的做法,以提高程式可讀性、維護性和方便性
一般我們使用JSTL1.1以上的版本,應為從這個版本開始支援EL運算式
JSTL1.0預設不支援el運算式,不建議使用
3.2JSTL標籤庫
****核心標籤庫 (core) --- c
國際化標籤 fmt
資料庫標籤 sql --Servlet
XML標籤 xml
JSTL函數(EL函數) el
3.3JSTL核心標籤庫
<c:out> 標籤用於輸出一段常值內容到pageContext對象當前儲存的“out”對象中。
<c:set>標籤用於把某一個對象存在指定的域範圍內,或者設定Web域中的java.util.Map類型的屬性對象或JavaBean類型的屬性對象的屬性。
<c:remove>標籤用於刪除各種Web域中的屬性
<c:catch>標籤用於捕獲嵌套在標籤體中的內容拋出的異常,其文法格式如下:<c:catch [var="varName"]>nested actions</c:catch>
<c:if test=“”>標籤可以構造簡單的“if-then”結構的條件運算式
<c:choose>標籤用於指定多個條件選擇的組合邊界,它必須與<c:when>和<c:otherwise>標籤一起使用。使用<c:choose>,<c:when>和<c:otherwise>三個標籤,可以構造類似 “if-else if-else” 的複雜條件判斷結構。
<c:forEach>標籤用於對一個集合對象中的元素進行迴圈迭代操作,或者按指定的次數重複迭代執列標籤體中的內容。
<c:forTokens>用來瀏覽一字串中所有的成員,其成員是由定義符號所分隔的
<c:param>標籤 在JSP頁面進行URL的相關操作時,經常要在URL地址後面附加一些參數。<c:param>標籤可以嵌套在<c:import>、<c:url>或<c:redirect>標籤內,為這些標籤所使用的URL地址附加參數。
<c:import> 標籤,實現include操作
<c:url>標籤用於在JSP頁面中構造一個URL地址,其主要目的是實現URL重寫。URL重寫就是將會話標識號以參數形式附加在URL地址後面
<c:redirect>標籤用於實現請求重新導向
4.自訂標籤
JSP的標籤技術