課件7-13會話技術(shù)課程day18eljstl_第1頁
課件7-13會話技術(shù)課程day18eljstl_第2頁
課件7-13會話技術(shù)課程day18eljstl_第3頁
課件7-13會話技術(shù)課程day18eljstl_第4頁
課件7-13會話技術(shù)課程day18eljstl_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、EL&JSTL今日內(nèi)容學習目標能夠說出 el 表達式的作用能夠使用 el 表達式獲取 javabean 的屬性能夠使用 jstl庫的 if能夠使用 jstl庫的 foreach能夠說出開發(fā)模式的作用能夠使用三層架構(gòu)模式完成顯示商品案例第1章 EL 表達式1.1 EL 表達式的概述在 JSP 開發(fā)中,為了獲取 Servlet 域?qū)ο笾械臄?shù)據(jù),經(jīng)常需要書寫很多 Java 代碼,這樣的做使 JSP 頁面,難以,為此,在 JSP2.0 規(guī)范中提供了 EL 表達式。EL 是ExpresLanguage 的縮寫,它是一種簡單的數(shù)據(jù)語言。本節(jié)將針對 EL 表達式進行詳細的講解。EL(Express Lanu

2、age)表達式可以嵌入在 jsp 頁面,減少 jsp的編寫,EL出現(xiàn)的目的是要替代jsp 頁面中的編寫。EL 是 jsp 原生支持的。1.2 EL 的語法由于 EL 可以簡化 JSP 頁面的書寫,因此,在 JSP 的學習中,掌握 EL 是相當重要的。要使用 EL 表達式,首先要學習它的語法。EL 表達式的語法非常簡單,都是以“$”符號開始,以“”符號結(jié)束的,具體格式如下:$表達式1.3 EL 的使用:獲得數(shù)據(jù)jsp 方式=$requestSEL 最主要的作用是獲得四大域中的數(shù)據(jù),格式$EL 表達式EL 獲得 pageContext 域中的值:$pageScope.key; EL 獲得 requ

3、est 域中的值:$requestScope.key;EL 獲得 ses域中的值:$sesScope.key;EL 獲得 application 域中的值:$applicationScope.key;EL 從四個域中獲得某個值$key;= pageContext.findAttribute(name);同樣是依次從 pageContext 域,request 域,ses取屬性,在某個域中獲取后將不在向后尋找域,application 域中 獲%page import=com.itheima.User%charset=UTF-8HTML4.01Transitional/ENInsert titl

4、e here pageContext: $pageS request: $requestS ses: $sesS application: $applicationS Insert title here%/el 表達式取出復雜數(shù)據(jù)User user = new User(); Address addr = new Address(); user.setId(100);user.setUsername();Insert title here$user.addr.cityInsert title here%/el 表達式取出復雜數(shù)據(jù)addr.setCity( 市); addr.setArea(昌平

5、區(qū)); user.setAddr(addr);User user2 = new User(); Address addr2 = new Address(); user2.setId(200);user2.setUsername(); addr2.setCity(市); addr2.setArea(浦東); user2.setAddr(addr2);List list = new ArrayList(); list.add(user);list.add(user2);pageContext.setribute(list, list);%$pageScope.list1.addr.city1.4

6、EL 的使用:內(nèi)置對象分類內(nèi)置對象名稱描述作用域pageScopepage 作用域requestScoperequest 作用域sesScopeses作用域applicationScopeapplication 作用域請求參數(shù)param獲得一個參數(shù)paramValues獲得一組參數(shù)請求頭header獲得一個請求頭headerValues獲得一組請求頭JSP 上下文對象pageContext全局初始化參數(shù)initParamUser user = new User(); Address addr = new Address(); user.setId(100); user.setUsername(

7、);addr.setCity(市);addr.setArea(昌平區(qū)); user.setAddr(addr);User user2 = new User(); Address addr2 = new Address(); user2.setId(200);user2.setUsername(); addr2.setCity(市); addr2.setArea(浦東); user2.setAddr(addr2);Map map = new HashMap(); map.put(u1,user);map.put(u2,user2);pageContext.setribute(map, map);

8、%$pageScope.map.u2.addr.city$pageScope.mapu2.addr.city1.5 EL 的使用:運算符模擬數(shù)據(jù)算術(shù)運算符$ n1 + n2 + n3 $1+1 Insert title hereDemoServletahref=/demoServlet DemoServlet DemoServlet關(guān)系運算符邏輯運算符三元運算符empty 運算符$ n1 n2 ? 正確:錯誤 $ n1n2 & n3 n4 - $ n1n2 and n3 n4 $ n1n2 | n3 n4 - $ n1n2 or n3 n4 $ !(n1 n2) - $ not(n1n2) $

9、 n1 n2 - $ n1 lt n2 $ n1 n2 - $ n1 gt n2 $ n1 = n2 - $ n1 le n2 $ n1 = n2 - $ n1 ge n2 $ n1 = n2 - $ n1 eq n2 $1+1 $1+1 $a+1 $a + 1 Insert title here%request.setribute(num, 5); User user = new User();request.setribute(user, user); String strs = new String3; request.setribute(strs, strs);List list =

10、new ArrayList(); list.add();request.setribute(list, list);request.setribute(userInfo, sss);%$1+num $1num?:yyy $empty num $empty user $empty strs $empty list $userInfo $ user = null - $ empty user $ user != null - $ not empty user 1.6 案例:記住上次登錄的用戶名public class LoginServlet extends HttpServlet public

11、void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException String username = request.getParameter(username); String password = request.getParameter(password); String remName = request.getParameter(remName); response.setContentType(text/html;charset=utf-

12、8); if(yes.equals(remName)= new(username, username);.setMaxAge(60*10);.setPath(request.getContextPath(); response.add();Insert title here用戶名:密碼:記住用戶名第2章 JSTL2.1JSTL從 JSP1.1 規(guī)范開始,JSP 就支持使用自定義,使用自定義大大降低了 JSP 頁面的復雜度,同時增強了代碼的重用性。為此,許多 Web 應用廠商都定制了自身應用的庫,然而同能的由不同的Web 應用廠商制定可能是不同的,這就導致市面上出現(xiàn)了很多功能相同的,令網(wǎng)頁制作者

13、無從選擇,為了解決這個問題,Sun 公司制定了一套ages Standard Tag Library),簡稱 JSTL。標準庫(JavaServJSTL 雖然被稱為標準庫,而實際上這個庫是由 5 個不同功能的庫共同組成的。在 JSTL1.1 規(guī)范中,為這 5 個1-7 所示。庫分別指定了不同的 URI 以及建議使用的前綴,如表JSTL 包含的庫庫庫的 URI前綴Coreh/jsp/jstl/corecI18Nh/jsp/jstl/fmtfmtSQLh/jsp/jstl/sqlsqlXMLh/jsp/jstl/xmlxFunctionsh/jsp/jstl/functionsfnif(tom.e

14、quals(username)&123.equals(password) response.getWriter().write(登錄成功);elseresponse.getWriter().write(登錄失敗);public void dot(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doGet(request, response);2.2JSTL 的安裝和測試1JSTL 包從 Apache 的JSTL 的 JAR 包。進入“jakar”JSTL

15、 的安裝包aglibs-standard-1.1.2.zip,然后將好的 JSTL 安裝包進行解壓,此時,在 lib 目錄下可以看到兩個 JAR 文件,分別為 jstl.jar 和 standard.jar。其中,jstl.jar 文件包含 JSTL 規(guī)范中定義的接口和相關(guān)類,standard.jar 文件包含用于實現(xiàn) JSTL 的.class 文件以及 JSTL 中 5 個庫描述符文件(TLD)。2安裝 JSTL將 jstl.jar 和 standard.jar 這兩個文件到 day18 項目的 lib 目錄下,如圖 1-16 所示。圖1-1導入 jstl.jar 和 standard.ja

16、r 文件從圖 1-8 可以看出,jstl.jar 和 standard.jar 這兩個文件已經(jīng)被導入到 day18 項目的 lib 文件夾中,這個過程就相當于在 day18 項目中安裝 JSTL,安裝完 JSTL 后,就可以在 JSP 文件中使用 JSTL庫。3測試 JSTLJSTL 安裝完成后,就需要測試 JSTL 安裝是否成功。由于在測試的時候使用的是,因此,需要使用 taglib 指令導入 Core庫,具體代碼如下:在上述代碼中,taglib 指令的 uri 屬性用于指定引入庫描述符文件的 URI,prefix 屬性用于指定引入庫描述符文件的前綴,在 JSP 文件中使用這個庫中的某個時,

17、都需要使用這個前綴。庫:if2.3Core在程序開發(fā)中,經(jīng)常需要使用 if 語句進行條件判斷,如果要在 JSP 頁面中進行條件判斷,就需要使用 Core庫提供的,該專門用于完成 JSP 頁面中的條件判斷,它有兩種語法格式,具體如下:語法 1:沒有體的情況,將結(jié)果存放到指定的作用域(不常用)語法 2:有體的情況,在體中指定要輸出的內(nèi)容body content在上述語法格式中,可以看到解,具體如下:有三個屬性,接下來將針對這三個屬性進行講test 屬性用于設置邏輯表達式;var 屬性用于指定邏輯表達式中變量的名字;scope 屬性用于指定 var 變量的作用范圍,默認值為 page。如果屬性 te

18、st 的計算結(jié)果為 true,那么體將被執(zhí)行,否則體不會被執(zhí)行。通過前面的講解,對來演示如何在 JSP 頁面中使用有了一個簡單的認識,接下來通過一個具體的案例。Insert title here1 xc:if test=$1 yyyy5 num 大于 5庫:forEach2.4Core在 JSP 頁面中,經(jīng)常需要對集合對象進行循環(huán)迭代操作,為此,Core庫提供了一個,該專門用于迭代集合對象中的元素,如 Set、List、Map、數(shù)組等,并且能重復執(zhí)行體中的內(nèi)容,它有兩種語法格式,具體如下:語法 1:迭代包含多個對象的集合語法 2:迭代指定范圍內(nèi)的集合在上述語法格式中,可以看到解,具體如下:有多

19、個屬性。接下來針對這些屬性進行講var 屬性用于指將當前迭代到的元素保存到 page 域中的名稱;items 屬性用于指定將要迭代的集合對象;varSus 用于指定當前迭代狀態(tài)信息的對象保存到 page 域中的名稱;begin 屬性用于指定從集合中第幾個元素開始進行迭代,begin 的索引值從 0 開始,如果沒有指定 items 屬性,就從 begin 指定的值開始迭代,直到迭代結(jié)束為止; step 屬性用于指定迭代的步長,即迭代因子的增量。在程序開發(fā)中經(jīng)常會被用到,因此熟練掌握是很有必要的,接下來,通過幾個具體的案例來學習的使用。分別使用迭代數(shù)組和 Map 集合,首先需要在數(shù)組和 Map 集

20、合中添加幾個元素,然后將數(shù)組賦值給的 items 屬性,而 Map 集合對象同樣賦值給的 items 屬性,之后使用 getKey()和 getValue()方法就可以獲取到 Map 集合中的鍵和值Insert title here!-body contentbody contentInsert title here%/模擬域中的集合數(shù)據(jù)foreach 循環(huán) begini=0 end i$i%List list = new ArrayList(); list.add();list.add(itheima); list.add(java);request.setribute(list, list

21、);%$str $ vs.countList list = new ArrayList();User user = new User(); Address addr = new Address(); user.setId(100); user.setUsername(); addr.setCity();addr.setArea(海淀);user.setAddr(addr);User user2 = new User(); Address addr2 = new Address(); user2.setId(100); user2.setUsername(); addr2.setCity();a

22、ddr2.setArea(浦東);user2.setAddr(addr2);list.add(user); list.add(user2);pageContext.setribute(list, list);%$user.username =$user.addr.city Insert title here%/模擬域中的集合數(shù)據(jù)Map map = new HashMap();User user = new User(); Address addr = new Address(); user.setId(100);user.setUsername();addr.setCity();addr.se

23、tArea(海淀);user.setAddr(addr);User user2 = new User(); Address addr2 = new Address(); user2.setId(100);user2.setUsername();addr2.setCity();addr2.setArea(浦東);user2.setAddr(addr2);map.put(u1, user);map.put(u2, user2);request.setribute(map, map);%$entry.key =$entry.value.username =$entry.value.addr.city

24、2.5MVC 設計模式MVC 設計模式: M-View-Controller 簡寫。MVC 是法。它把工程中的一種架構(gòu)模式,它是一種分離業(yè)務邏輯與顯示界面的設計方系統(tǒng)分為三個基本部分:模型(M)、視圖(View)和控制器(Controller)??刂破鰿ontroller:對請求進行處理,負責請求轉(zhuǎn)發(fā);視圖 View:界面設計進行圖形界面設計;模型 M:編寫程序應用的功能(實現(xiàn)算法等等)、數(shù)據(jù)庫管理;MVC 可對程序的后期和擴展提供了方便,并且使程序某些部分的重用提供了方便。而且 MVC 也使程序簡化,更加直觀。注意,MVC 不是 Java 的特有的,幾乎現(xiàn)在所有 B/S 結(jié)構(gòu)的都采用了MVC

25、 設計模式。2.6JSP 開發(fā)模式當 SUN 公司推出 JSP 后,同時也提供相應的開發(fā)模式,JavaWeb 經(jīng)歷了 JSP M1 第一代,JSPM1 第二代,JSP M2 三個時期。2.6.1 JSP M1 第一代JSP M1 是 JavaWeb 早期的模型,它適合小型 Web 項目,開發(fā)成本低!M1 第一代時期,服務器端只有 JSP 頁面,所有的操作都在 JSP 頁面中,連數(shù)據(jù)庫的 API 也在 JSP頁面中完成。也就是說,所有的東西都耦合在一起,對后期的(高內(nèi)聚低耦合:)和擴展極為不利。2.6.2 JSP M1 第二代JSP M1 第二代有所改進,把業(yè)務邏輯的內(nèi)容放到了 JavaBean 中,而 JSP 頁面負責顯示以及請求調(diào)度的工作。雖然第二代比第一代好了些,但還讓 JSP 做了過多的工作,JSP 中把

溫馨提示

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

評論

0/150

提交評論