Java Web應用開發 課件 第7章 EL表達式和JSTL_第1頁
Java Web應用開發 課件 第7章 EL表達式和JSTL_第2頁
Java Web應用開發 課件 第7章 EL表達式和JSTL_第3頁
Java Web應用開發 課件 第7章 EL表達式和JSTL_第4頁
Java Web應用開發 課件 第7章 EL表達式和JSTL_第5頁
已閱讀5頁,還剩35頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7章EL表達式和JSTL0207知識目標

了解什么是EL表達式和JSTL標簽庫

掌握EL中常見的隱式對象

熟悉EL中的運算符

熟悉JSTL標簽庫思政目標

課程突出培育求真務實、實踐創新、精益求精的工匠精神

培養學生嚴謹求實、吃苦耐勞、追求卓越等優秀品質

樹立心系社會并有時代擔當的精神追求。7.1EL表達式7.1.1認識ELEL是JSP2.0增加的技術規范,其全稱是表達式語言(ExpressionLanguage)。EL語言的靈感來自于ECMAScript和XPath表達式語言。EL表達式語言是一種簡單的語言,使用EL表達式,JSP頁面可以不再使用任何的JSP聲明、腳本和表達式,就可以輕松地訪問應用程序的數據。EL表達式提供了在JSP中簡化表達式的方法,目的是為了盡量減少JSP頁面中的Java代碼,使得JSP頁面的處理程序編寫起來更加簡潔,便于開發和維護。EL表達式的語法非常簡單,都是以“${”開始,以“}”結束的,具體格式如下:${表達式}注意:其中,EL表達式寫在JSP頁面中,表達式一般是域對象的key。表達式必須符合EL語法要求。EL表達式代替JSP頁面中表達式腳本進行數據的輸出(只能獲取數據,不能設置數據)。EL表達式主要是輸出域對象中的數據,當四個域對象都有同一個key的值時,EL表達式會按照四個域對象的范圍從小到大進行搜索,找到就輸出,與四個域對象聲明的先后順序無關。關于EL語法的相關內容會在下面的小節進行介紹。7.1EL表達式7.1.1認識EL使用JSP的標準動作可以簡化JSP頁面的開發,在操作JavaBean時,當JavaBean的屬性屬于簡單的、基本的數據類型,如String類型時,能夠實現類型的自動轉換。如果JavaBean的屬性類型不也是基本類型,而是Object類型,該怎么訪問?現有如下案例:有一個學校類School.java,類中有老師teacher、學生student兩個屬性,而這兩個屬性分別是Teacher.java類和Student.java類對應的實例。部分代碼如下所示。7.1.1認識ELPublicclassSchool{privateTeacherteacher;privateStudentstudent;//getterandsetter方法……}7.1.1認識EL學校類School.java部分代碼學生類Student.java部分代碼PublicclassStudent{privateStringname;privateStringparentName;privateintage;//getterandsetter方法……}<%Schoolschool=(School)request.getAttribute("school");Studentstudent=(Student)school.getstudent();StringparentName=student.getparentName();%>7.1.1認識EL如果想要獲取School類型的屬性student的parentName屬性值,及獲取學校里學生的家長姓名,只能在JSP頁面中加入Java腳本來實現,關鍵代碼如下所示。如果在學習了EL表達式后再來處理同樣類型的問題,可以直接使用下面這行的代碼來實現。${School.student.parentName}7.1.1認識EL在EL表達式沒有出現之前,開發JSP程序經常需要將大量的Java代碼嵌入到JSP頁面中,整體JSP頁面看上去會異常凌亂,不易維護。使用EL表達式會使頁面變得更加簡潔。在EL中提供了多種運算符,根據運算方式不同,EL中的運算符包括以下幾種。1、點運算符(.)該運算符用于訪問JSP頁面中對象的屬性,如JavaBean對象、List集合、Array數組等,其語法格式如下。${}上述語法格式中,表達式${}是訪問user對象中的name屬性。7.1.2EL中的運算符2、方括號運算符([])該運算符用于訪問JSP頁面中對象的屬性,與點運算符的功能相同。但當獲取的屬性名中包含特殊符號(非字母或數字),只能使用方括號運算符來訪問,其語法格式如下。${user[“name”]}7.1.2EL中的運算符3、算術運算符該運算符用于對整數和浮點數的值進行算術運算。如表7-1所示。表7-1算術運算符7.1.2EL中的運算符算是運算符說明舉例結果+加${11+12}23-減${15-5}10*乘${2*5}10/或div除${10/2}或${10div2}5%或mod取模(取余)${10%2}或${10mod2}0注意:使用算術運算符時,“-”既可以作為減號也可以作為負號;“/”或“div”在進行除法運算時,商為小數。4、比較運算符該運算符用于比較兩個數的大小。這個數可以是常量、EL變量或表達式,所有的運算符執行結果都是布爾類型。如表7-2所示。7.1.2EL中的運算符表7-2比較運算符7.1.2EL中的運算符比較運算符說明舉例結果==或eq等于${2==3}或${2eq3}false!=或ne不等于${2!=3}或${2ne3}false<或lt小于${2<3}或${2lt3}true>或gt大于${2>3}或${2gt3}false<=或le小于等于${2<=3}或${2le3}false>=

或ge大于等于${2>=3}或${2ge3}false5、邏輯運算符該運算符用于對結果為布爾類型的表達式進行運算。如表7-3所示。表7-3邏輯運算符7.1.2EL中的運算符邏輯運算符說明舉例結果&&或and與${true&&false}或${trueandfalse}false||或or或${false||true}或${falseortrue}true!或not非${!true}或${nottrue}false6、empty運算符該運算符用于判斷某個對象是否為空,若為空,輸出true,不為空,輸出false。其基本語法格式如下。${emptyabc}以下三種種情況為空(在原本的key之前加empty關鍵字):(1)值為null、空串(2)值為Object類型的數組且長度為0(注:其他類型的長度為0的數組值為非空(3)List、Map集合元素個數為07.1.2EL中的運算符7、條件運算符該運算符用于執行某種條件判斷。其語法格式如下。${A?B:C}

8、“()”運算符EL表達式中的運算符都有不同的運算優先級,如表7-4所示。7.1.2EL中的運算符表7-4運算符的優先級7.1.2EL中的運算符優先級運算符1[]2()3-(unary)not!empty4/div%mod5+-(binary)6<><=>=ltgtlege7==!=eqne8&&and9||or10?:EL表達式中的11個隱含對象是EL表達式自己定義的,可以直接使用。如表7-5所示。7.1.3EL隱式對象名稱作用pageContext可以獲取JSP中的九大內置對象pageScope可以獲取pageContect域中的數據requestScope可以獲取request域中的數據sessionScope可以獲取session域中的數據applicationScope可以獲取servletContect域中的數據Param可以獲取請求參數的值paramValues可以獲取請求參數的值(多個)Header可以獲取請求頭的信息HeaderValues可以獲取請求頭的信息(多個)Cookie可以獲取當前請求的Cookie信息initParam可以獲取在web.xml中配置的<context-param>參數【例7-1】pageContext隱式對象應用,獲取response對象中的characterEncoding屬性。創建7-1.jsp文件,具體代碼如下所示。7.1.3EL隱式對象

<body>

請求URL為:${pageContext.request.requestURI}<br>Content-Type響應頭:${pageContext.response.contentType}<br>

服務器信息:${pageContext.servletContext.serverInfo}<br>Serlet注冊名:${pageContext.servletConfig.servletName}<br></body>【例7-1】運行結果如圖7-1所示。7.1.3EL隱式對象圖7-1【例7-1】運行結果在EL表達式中,為了獲取指定域中的數據,提供了4個隱式對象,它們分別為pageScope、requestScope、sessionScope、applicationScope。注意:EL表達式只能在這4個作用域中獲取數據。【例7-2】演示這4個隱式對象如何訪問JSP域對象中的屬性。創建7-2.jsp文件,具體代碼如下。7.1.3EL隱式對象<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><html><body><%pageContext.setAttribute("userName","top1");%><%request.setAttribute("bookName","JavaWeb");%><%session.setAttribute("userName","top2");%>7.1.3EL隱式對象<%application.setAttribute("bookName","Java基礎");%>

表達式\${pageScope.userName}的值為:${pageScope.userName}<br>

表達式\${requestScope.bookName}的值為:${requestScope.bookName}<br>

表達式\${sessionScope.userName}的值為:${sessionScope.userName}<br>

表達式\${applicationScope.bookName}的值為:${applicationScope.bookName}<br><br/>

表達式\${userName}的值為:${userName}</body></html>【例7-2】運行結果如圖7-2所示。7.1.3EL隱式對象圖7-2【例7-2】運行結果7.2.1JSTL介紹7.2JSTLJSTL(JavaServerPagesStandardTagLibrary,JSP標準標簽庫)是一個JSP標簽集合,它封裝了JSP應用的通用核心功能。JSTL支持通用的、結構化的任務,比如迭代,條件判斷,XML文檔操作,國際化標簽,SQL標簽。除了這些,它還提供了一個框架來使用集成JSTL的自定義標簽。這個標簽庫是由5個功能不同的標簽庫組成。如表7-6所示。7.2.1JSTL介紹表7-6JSTL包含的標簽庫標簽庫前綴CorecI18NfmtSQLsqlXMLxFunctionfn7.2.1JSTL介紹Core是核心標簽庫,包含了實現Web語言中通用操作的標簽。I18N是國際化/格式化標簽庫,包含實現Web應用程序的國際化標簽和格式化標簽。SQL是數據庫標簽庫,包含了用于訪問數據庫和對數據庫中的數據進行相關操作的標簽。XML是操作XML文檔的標簽庫,包含對XML文檔中的數據進行操作的標簽。Function是函數標簽庫,提供了一套自定義EL函數,包含了JSP網頁制作經常要用到的字符串操作。7.2.2JSTL的下載和簡單測試要使用JSTL,首先要先下載好jar包,可以訪問“/dist/jakarta/taglibs/standard/binaries/”網址,找到JSTL的安裝包jakarta-taglibs-standard-1.1.2.zip并下載解壓文件,然后可以看到lib文件夾下兩個JAR文件(jstl.jar和standard.jar)。將這兩個文件復制到對應項目的lib目錄下即可。我們可以進行測試,【例7-3】檢測JSP文件是否可以使用JSTL標簽庫。在測試中使用的是<c:out>標簽,需要用taglib指令導入Core標簽庫。編寫一個簡單的test.jsp頁面,具體代碼如下。7.2.2JSTL的下載和簡單測試<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%@tagliburi="/jsp/jst1/core"prefix="c"%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><body><c:outvalue="HelloWorld!"></c:out></body></html>7.2.2JSTL的下載和簡單測試【例7-3】運行結果如圖7-3所示。圖7-3【例7-3】運行結果

通過前面的講解可以知道JSTL包含5個標簽庫,具體標簽庫中通用標簽不在此進行詳細介紹,感興趣的讀者可自行翻閱相關資源學習。7.3小結本章主要講解了EL表達式的概念、語法、運算符及隱式對象和JSTL的概念、下載和基本用法。通過本章的學習,讀者能夠了解什么是EL表達式和JSTL,可以熟練掌握EL表達式的基本語法的格式、EL中常見的隱式對象以及JSTL的基礎用法等操作。7.4習題1、下列說法正確的是()A.EL表達式查找對象的范圍依次是request,pageContext,session,application。B.使用EL表達式輸出對象的屬性值時,如果屬性值為空,則輸出空白。C.如果指定了對象的查找范圍,那么如果在該范圍內沒有找到綁定的對象則不會再去其他范圍進行查找了。D.使用EL表達式輸出Bean屬性時,不允許使用下標的形式。7.4習題2、在編輯時禁用EL表達式的方式是()A.使用<%%>B.使用/**/C.使用\D.使用<!---->7.4習題3、關于EL表達式語言,下列說法錯誤的是()A.EL表達式中的變量要預先定義才能使用B.它的基本形式為${var}C.只有在JSP文件中才能使用EL語言,在Servlet類的程序代碼中通常不使用它D.它能使JSP文件的代碼更加簡潔7.4習題4、下面選項中,與request.getAttribute("p");等效的EL表達式是()${request.p}B.${param.p}C.${requestScope.p}D.${paramValues.p}7.4習題5、下面關于${(1==2)?3:4}的返回結果是()A.trueB.falseC.3D.47.5上機實踐<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>

<html><body><%//1、值為null值時request.setAttribute("emptyNull",null);//2、值為空串時request.setAttribute("emptyStr","");//3、值是Object類型數組,長度為零的時候request.setAttribute("emptyArr",newObje

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論