天天看點

el 與 jstl

el 與 jstl

出現的原由

最早的jsp是在html中書寫java代碼。 1、一個檔案中出現多種語言代碼可讀性不高,代碼混亂 2、不在推薦使用java代碼,而是使用标簽代替java代碼。使用前端人員熟悉的标簽結構來建構jsp檔案,來吸引前端人員快速開發jsp。

el (用來替換表達式),jstl(邏輯判斷,流程控制)

EL全名為Expression Language。

使用格式:${表達式}

我們主要使用el做的操作是

1執行運算 2擷取資料(從四大作用域中擷取資料) 3擷取web開發常用對象 4調用java代碼(了解)

運算符: 1.算術運算符有五個:+、-、*或$、/或div、%或mod

el 與 jstl

2.關系運算符有六個:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge

el 與 jstl

3.邏輯運算符有三個:&&或and、||或or、!或not

el 與 jstl

4.其它運算符有三個:Empty運算符、條件運算符、()運算符 注:empty運算符,可以用于判斷一個字元串是否為空,當字元串null時傳回ture,當字元串為空字元串""也傳回true。 運算符的優先級:(從上到下,從左到右,依次降低)

el 與 jstl

el的隐含對象:

四大作用域: page,request,sission,applition 取值: ${鍵值} 相當與pageContext.findAttribute()這個方法。 取值的順序是page,request,session,application。

el中提供了兩種從對象中取值的運算符 “.”,“[]” 注意:用[]通路對象的屬性時,屬性需要使用雙引号括起來。 如果要動态取值時,就可以用“[ ]“來做,而“.“無法做到動态取值。

el表達式中部分内置對象(在el中直接使用的對象,差別于jsp9大内置對象)

與範圍有關的 pageScope、requestScope、sessionScope、applicationScop 比如${requestScop.str2}從指定的作用域中去取值

el 與 jstl

與輸入有關的

param和paramValues

el 與 jstl

其他的

cookie,header,headerValues,initParam,pageContext...

el 與 jstl

el内置對象pageContext用法 ${pageContext.request.queryString} 取得請求的參數字元串 ${pageContext.request.requestURL} 取得請求的URL,但不包括請求之參數字元串 ${pageContext.request.contextPath} 服務的web application 的名稱 ${pageContext.request.method} 取得HTTP 的方 ${pageContext.request.protocol} 取得使用的協定 ${pageContext.request.remoteUser} 取得使用者名稱 ${pageContext.request.remoteAddr } 取得使用者的IP 位址 ${pageContext.session.new} 判斷session 是否為新的 ${pageContext.session.id} 取得session 的ID ${pageContext.servletContext.serverInfo} 取得主機端的服務資訊

調用java代碼(自定義函數) --允許在el中調用某個java類的靜态方法

1建立一個java類,提供一個static的,帶有傳回值的公共方法,參數是String str,傳回值是str+”元” 2在WEB-INF下建立tld檔案 <function> 定義方法 <name>add</name> 方法的名字 <function-class>com.qianfeng.day06.Add</function-class> 方法所在類 <function-signature>java.lang.String add(java.lang.String)</function-signature> 類中的具體方法 注意 傳回值和參數類型要包名加類名 </function> 3在需要使用到此方法的jsp檔案中添加頭部 <%@taglib prefix="s" uri="WEB-INF/add02.tld" %> 4在el中使用标簽 ${s:add("200") }

jstl-- (JSP Standard Tag Library,JSP标準标簽庫)

主要由5個不同的标簽庫組成

el 與 jstl

1核心标簽(重要,包含了輸出,流程控制,循環等)

2格式化标簽 (提供了數字精度轉換,日期轉換)

3SQL 标簽 (可以操作資料庫的标簽)

4XML 标簽 (支援建立和操作XML文檔的标簽)

5JSTL 函數 (大部分是通用的字元串處理函數)

核心标簽庫包含web應用中最常使用的标簽,是比較重要的标簽庫,核心标簽庫又可分為以下四個部分:

通用标簽:用于操作變量 out、set、remove、catch out--用于輸出資料

<c:out value="value" escapeXml="{true|false}" default="defaultValue"/></c:out>

el 與 jstl

set--向作用域添加或修改值 <c:set value="value" var="varName" scope="{ page|request|session|application }"/></c:set>

el 與 jstl

remove -- 删除 <c:remove var="varName" scope="{ age|request|session|application }" /> remove 标簽與set相反,删除變量 。

el 與 jstl

catch --捕獲異常 <c:catch var="ex" > 異常代碼</c:catch> ${ex}

el 與 jstl

條件标簽:用于流程控制 if、choose、when、otherwise if條件判斷 <c:if test="條件" var="varName" scope="{page|request|session|application}"> 條件成立時的輸出内容 </c:if> 注意 test中的條件使用el語句進行判斷

el 與 jstl

choose、when、otherwise嵌套使用相當于if-elseif-else,也類似為java中的switch <c:choose> <c:when test="條件表達式"> </c:when> <c:when test="條件表達式"> </c:when> <c:otherwise> </c:otherwise> </c:choose>

疊代标簽:用于循環周遊集合 forEach、forTokens foreach周遊集合或疊代指定的次數 forTokens按照指定的字元串進行疊代 (字元串拆分,相當于String.split)

el 與 jstl

forTokens參數意義:

el 與 jstl

URL标簽:用于針對url的相關的操作 url、import、redirect

url -- 用于在jsp頁面中構造一個url位址; import -- 導入一個url位址指向的資源内容; redirect --執行重定向方法

import、url、redirect聯合使用,用來以get的形式傳遞參數。

jstl的使用

1.導包:

el 與 jstl

2.通過 taglib 指令指定需要使用的函數庫字首和 URI