5分鐘學會EL表示式和JSTL表示式
EL表示式和JSTL表示式
一、EL表示式
一、概念
EL表示式是Expression Language(表示式語言),
它可以替代JSP頁面中資料訪問時的複雜編碼可以自動轉換型別,並且使JSP的開發變得更加簡單。
二、語法 :${變數名}
----------a、EL的本質----------
jsp指令碼:<%=request.getAttribute(name)%>
EL表示式替代上面的指令碼:${requestScope.name}
----------b、取值和存值----------
// 在Servlet或JSP中儲存資料
request.setAttribute("username", "猿醫生");
request.setAttribute("user",new User("猿醫生"));
// 在JSP中訪問資料
姓名: ${username}
點操作符———> ${user.name}
[ ]操作符———>${user["name"]}
----------c、EL最主要的作用是獲得四大域中的資料----------
pageContext域:${pageScope.key}
request域:${requestScope.key}
session域:${sessionScope.key}
application域:${applicationScope.key}
EL從四個域中獲得某個值${key}; (重點)
按照page → request → session → application的作用域順序依次查詢,找到即返回,最終找不到返回null。
三、隱式物件
EL表示式語言中定義了11個隱含物件,使用這些隱含物件可以很方便地獲取web開發中的一些常見物件,
並讀取這些物件的資料。
語法:${隱式物件名稱}:獲得物件的引用
序號 隱含物件名稱 描 述 1 pageContext 對應於JSP頁面中的pageContext物件(注意:取的是pageContext物件。) 2 pageScope 代表page域中用於儲存屬性的Map物件 3 requestScope 代表request域中用於儲存屬性的Map物件 4 sessionScope 代表session域中用於儲存屬性的Map物件 5 applicationScope 代表application域中用於儲存屬性的Map物件 6 param 表示一個儲存了所有請求引數的Map物件 7 paramValues 表示一個儲存了所有請求引數的Map物件,它對於某個請求引數,返回的是一個string[] 8 header 表示一個儲存了所有http請求頭欄位的Map物件,注意:如果頭裡面有“-” ,例Accept-Encoding,則要header[“Accept-Encoding”] 9 headerValues 表示一個儲存了所有http請求頭欄位的Map物件,它對於某個請求引數,返回的是一個string[]陣列。注意:如果頭裡面有“-” ,例Accept-Encoding,則要headerValues[“Accept-Encoding”] 10 cookie 表示一個儲存了所有cookie的Map物件 11 initParam 表示一個儲存了所有web應用初始化引數的map物件
------ eg:
---------------1、pageContext物件:獲取JSP頁面中的pageContext物件------------------------ ${pageContext}
---------------2、pageScope物件:從page域(pageScope)中查詢資料---------------------------
<% pageContext.setAttribute("name","猿醫生"); %> ${pageScope.name}
---------------3、requestScope物件:從request域(requestScope)中獲取資料------------------
<% request.setAttribute("name","猿醫生"); %> ${requestScope.name}
---------------4、sessionScope物件:從session域(sessionScope)中獲取資料------------------ <% session.setAttribute("name","猿醫生"); %> ${sessionScope.name}
---------------5、applicationScope物件:從application域(applicationScope)中獲取資料------ <% application.setAttribute("name","猿醫生"); %> ${applicationScope.name}
---------------6、param物件:獲得用於儲存請求引數map,並從map中獲取資料-------------------- <!-- http://localhost:8080/yuan/index.jsp?name=猿醫生 --> ${param.name}
---------------7、paramValues物件:paramValues獲得請求引數------------------------------- <!-- http://localhost:8080/yuan/index.jsp?like=aaa&like=bbb --> ${paramValues.like[0]} ${paramValues.like[0]}
---------------8、header物件:header獲得請求頭------------------------------------------- ${header.Accept} 測試header時,如果頭裡面有“-” ,例Accept-Encoding時:${header["Accept-Encoding"]}
---------------9、headerValues物件:headerValues獲得請求頭的值---------------------------- ${headerValues.Accept[0]} 測試headerValues時,如果頭裡面有“-” ,例Accept-Encoding:headerValues["Accept-Encoding"]
---------------10、cookie物件:cookie物件獲取客戶機提交的---------------------------------- cookie${cookie.JSESSIONID.value} 測試cookie時,例${cookie.key}取的是cookie物件, 如訪問cookie的名稱和值,須${cookie.key.name}或${cookie.key.value}
---------------11、initParam物件:initParam物件獲取在web.xml檔案中配置的初始化引數----------- <%-- <!-- web.xml檔案中配置初始化引數 --> <context-param> <param-name>yuan</param-name> <param-value>yisheng</param-value> </context-param> <context-param> <param-name>xxx</param-name> <param-value>/yuan</param-value> </context-param> --%> <%--獲取servletContext中用於儲存初始化引數的map --%> ${initParam.yuan} ${initParam.xxx}
四、Empty操作符
Empty操作符是一個字首操作符,用於檢測一個變數值是否為null或者為empty
eg:變數name不存在,則${empty name}返回的結果為true,${not empty name}返回的結果是false.
五、注意事項
1.EL表示式是JSP2.0規範中的一門技術。因此,若想正確解析EL表示式,需使用支援Servlet2.4/JSP2.0
技術的WEB伺服器;
2.有些Tomcat伺服器如不能使用EL表示式:
(1).升級tomcat版本,升級成tomcat6及以上
(2).在JSP中加入<%@ page isELIgnored="false" %>
2.要在javascript中使用El表示式,只需在在el表示式兩端加上單引號或者雙引號即可。
二、JSTL表示式
一、概念
JSTL是JSP標準標籤庫(JSP Standard Tag Library),提供一組標準標籤,可用於編寫各種動態功能。
JSTL通常會與EL表示式合作實現JSP頁面的編碼。
二、使用前提
除了JSP動作標籤外,使用其他第三方的標籤庫都需要:
a.導包;
官方下載地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
<1>下載jakarta-taglibs-standard-1.1.2.zip解壓,standard.jar和jstl.jar檔案拷貝到/WEB-INF/lib/下。
<2>在 web.xml 檔案中新增配置
b.在使用標籤的JSP頁面中使用taglib指令匯入標籤庫;
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> prefix="c":指定標籤庫的字首,這個字首可以隨便給值,但大家都會在使用core標籤庫時指定字首為c; uri="http://java.sun.com/jstl/core":指定標籤庫的uri,它不一定是真實存在的網址,但它可以讓JSP找到標籤庫的描述檔案;
三、常用標籤
**核心標籤**
表示式控制標籤:out標籤、set標籤、remove標籤、catch標籤。
流程控制標籤:if標籤、choose標籤、when標籤、otherwise標籤。
迴圈標籤:forEach標籤、forTokens標籤。
URL操作標籤:import標籤、url標籤、redirect標籤。
標籤 描述 <c:out> 用於在JSP中顯示資料,就像<%= ... > <c:set> 用於儲存資料 <c:remove> 用於刪除資料 <c:catch> 用來處理產生錯誤的異常狀況,並且將錯誤資訊儲存起來 <c:if> 與我們在一般程式中用的if一樣 <c:choose> 本身只當做<c:when>和<c:otherwise>的父標籤 <c:when> <c:choose>的子標籤,用來判斷條件是否成立 <c:otherwise> <c:choose>的子標籤,接在<c:when>標籤後,當<c:when>標籤判斷為false時被執行 <c:import> 檢索一個絕對或相對 URL,然後將其內容暴露給頁面 <c:forEach> 基礎迭代標籤,接受多種集合型別 <c:forTokens> 根據指定的分隔符來分隔內容並迭代輸出 <c:param> 用來給包含或重定向的頁面傳遞引數 <c:redirect> 重定向至一個新的URL. <c:url> 使用可選的查詢引數來創造一個URL
四、語法
五、格式化標籤
JSTL格式化標籤用來格式化並輸出文字、日期、時間、數字。引用格式化標籤庫的語法如下: <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
標籤 描述 <fmt:formatNumber> 使用指定的格式或精度格式化數字 <fmt:parseNumber> 解析一個代表著數字,貨幣或百分比的字串 <fmt:formatDate> 使用指定的風格或模式格式化日期和時間 <fmt:parseDate> 解析一個代表著日期或時間的字串 <fmt:bundle> 繫結資源 <fmt:setLocale> 指定地區 <fmt:setBundle> 繫結資源 <fmt:timeZone> 指定時區 <fmt:setTimeZone> 指定時區 <fmt:message> 顯示資源配置檔案資訊 <fmt:requestEncoding> 設定request的字元編碼
六、SQL標籤
JSTL SQL標籤庫提供了與關係型資料庫(Oracle,MySQL,SQL Server等等)進行互動的標籤。 引用SQL標籤庫的語法如下: <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
標籤 描述 <sql:setDataSource> 指定資料來源 <sql:query> 執行SQL查詢語句 <sql:update> 執行SQL更新語句 <sql:param> 將SQL語句中的引數設為指定值 <sql:dateParam> 將SQL語句中的日期引數設為指定的java.util.Date 物件值 <sql:transaction> 在共享資料庫連線中提供巢狀的資料庫行為元素,將所有語句以一個事務的形式來執行
七、XML 標籤
JSTL XML標籤庫提供了建立和操作XML文件的標籤。引用XML標籤庫的語法如下: <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
在使用xml標籤前,你必須將XML 和 XPath 的相關包拷貝至你的<Tomcat 安裝目錄>\lib下:
<1>XercesImpl.jar
下載地址: http://www.apache.org/dist/xerces/j/
<2>xalan.jar
下載地址: http://xml.apache.org/xalan-j/index.html
標籤 描述 <x:out> 與<%= ... >,類似,不過只用於XPath表示式 <x:parse> 解析 XML 資料 <x:set> 設定XPath表示式 <x:if> 判斷XPath表示式,若為真,則執行本體中的內容,否則跳過本體 <x:forEach> 迭代XML文件中的節點 <x:choose> <x:when>和<x:otherwise>的父標籤 <x:when> <x:choose>的子標籤,用來進行條件判斷 <x:otherwise> <x:choose>的子標籤,當<x:when>判斷為false時被執行 <x:transform> 將XSL轉換應用在XML文件中 <x:param> 與<x:transform>共同使用,用於設定XSL樣式表
八、JSTL函式
JSTL包含一系列標準函式,大部分是通用的字串處理函式。引用JSTL函式庫的語法如下: <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
函式 描述 fn:contains() 測試輸入的字串是否包含指定的子串 fn:containsIgnoreCase() 測試輸入的字串是否包含指定的子串,大小寫不敏感 fn:endsWith() 測試輸入的字串是否以指定的字尾結尾 fn:escapeXml() 跳過可以作為XML標記的字元 fn:indexOf() 返回指定字串在輸入字串中出現的位置 fn:join() 將陣列中的元素合成一個字串然後輸出 fn:length() 返回字串長度 fn:replace() 將輸入字串中指定的位置替換為指定的字串然後返回 fn:split() 將字串用指定的分隔符分隔然後組成一個子字串陣列並返回 fn:startsWith() 測試輸入字串是否以指定的字首開始 fn:substring() 返回字串的子集 fn:substringAfter() 返回字串在指定子串之後的子集 fn:substringBefore() 返回字串在指定子串之前的子集 fn:toLowerCase() 將字串中的字元轉為小寫 fn:toUpperCase() 將字串中的字元轉為大寫 fn:trim() 移除首位的空白符
Now ~ ~ ~寫到這裡,就寫完了,如果有幸幫助到你,請記得關注我,共同一起見證我們的成長。
小結
謝謝觀賞,我叫猿醫生。
猿友推薦:正在奔跑的程式猿