




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、本章目標l 熟悉EL的基本用法l 熟悉JSTL的常用標記l 能編寫簡單的自定義標簽本章考核l 用JSTL和EL實現MVC的查詢分頁功能l 用自定義標簽實現分頁工具條知識點1:EL Expression Language 以$起始、以結尾 ,例如$sessionScope.user.sex EL語法比傳統jsp語法簡潔,方便1.1、.和運算符$sessionScope.user.sex和$sessionScope.user"sex" 可以混合使用在以下兩種情況下,這兩種表示方法是有差異的l 當屬性名稱中存在特殊字符,如.或者-就要使用 例如:$sessionScope.use
2、r"my-name"l 如果動態取值,例如$sessionScopt.userdata 此時data是個變量1.2、EL變量 $變量名變量自動搜索順序屬性范圍在EL中的隱含對象名稱PagepageScopeRequestrequestScopeSessionsessionScopeApplicationapplicationScope1.3、自動類型轉換$param.count+20等價于String strCount = request.getParameter("count"); int count = Integer.parseInt(strCou
3、nt); count = count+20;1.4、EL保留字 【and、or、no、instanceof 】 【 eq、ne、lt、empty 】【 gt、le、ge、div】 【true、false、null、mod】1.5、EL隱含對象pageContext、pageScope、requestScope、sessionScope、applicationScope、Param【request.getParameter】、paramValues、header、headerValues、cookie、initParam【ServletContext.getInitParameter】$page
4、Context的常用部分$pageContext.request.queryString請求參數字符串$pageContext.request.requestUrl取得請求的URL$pageContext.request.contextPath取得web應用的名稱$pageContext.request.method取得請求方式post、get$pageCtocol請求的Http協議(HTTP/1.1 HTTP/1.0)$pageContext.request.remoteUser取得用戶名稱$pageContext.request.remoteAddr取得
5、用戶的ip地址$pageContext.session.new判斷session是否為新的$pageContext.session.id取得session的id<fmt:requestEncoding value="GBK"/>$param.username $param.sex興趣<c:forEach var="s" items="$paramVerest"> $s <br/> <c:/forEach>用戶名:張三性別:男興趣:旅游、閱讀、影視學歷:高中1.6、EL算
6、術運算符 + - * /或div %或mod1.7、EL關系運算符=或eq 、!=或ne、<或lt、>或gt、<=或le、>=或ge1.8、EL邏輯運算符 &&或and |或or !或not1.9、EL其他運算符 empty判斷是否為空$empty param.username $A?B:C $empty param.pcode?1:param.pcode ()優先權1.10、EL自定義函數知識點2:JSTL javaServet Pages Standard Tag Library主要提供給javaweb開發人員一個標準通用的標簽函數庫l Web程序開
7、發人員能夠利用JSTL和EL來開發Web程序,取代傳統直接在頁面上嵌入java程序代碼段的做法,以提高程序可讀性、維護性和方便性l JSTL五大標簽函數庫1、 核心標簽庫 <c:out>2、 L18N格式標簽庫 <fmt:formatDate>3、 SQL標簽庫 <sql:query>4、 XML標簽庫 <x:forBach>5、 函數標簽庫 <fn:split>l 在jsp頁面中使用<%taglib uri="" prefix=""/>引入JSTL標簽庫 如果沒有聲明指令,將無法使
8、用JSTL的核心標簽庫的功l 另外JSTL也支持EL語法:n Jsp語法:<%=messagelist.getMessage().getContent%> n 傳統JSTL:<c:out value="<%=messagelist.getMessage().getContent%> " escapeXML="false"/>n JSTL搭配EL<c:out value="$messagelist.getMessage().getContent " escapeXML="false&q
9、uot;/>l 引入標簽庫的方式:新建webproject的時候,選擇J2EE4下的AddJSTL復選框2.1、核心標簽庫(c標簽)組成:基本輸入輸出、流程控制、迭代操作和Url操作分類功能分類標簽名稱core表達式操作out、set、remove、catch流程控制if、 choose、when、otherwise迭代操作forEach、forTokensURL操作import、param、url、redirect2.1.1、<c:out> 顯示數據的內容,就像是<%=%>一樣語法:<c:out value="$username" es
10、capeXml="true|false是否轉換字符,如<轉換為<"default="defaultValue"/>注:EL項為Y表示該屬性的內容可以使用EL表達式,寫成attribute="$表達式",N則反之范例:<c:out value="hello world"/> <c:out value="$3+5"/> <c:out value="$param.data" default="no data"
11、;/> <c:out value="<p>特殊字符</p>"/> <c:out value="<p>特殊字符</p>" escapeXml="true"/>2.1.2、<c:set>將變量的存儲到JSP范圍或javaBean的屬性中語法:<c:set value="value要被存儲的值" var ="varName欲存入的變量的名稱" scope="page|request|session
12、|applicationvar變量的jsp范圍"/> <c:set value="value" target="target為一個JavaBean或java.util.map對象" property="property執行target對象的屬性"/>范例:<c:set var="number" scope="request" value="$1+1"/>將2存儲在request范圍內<c:set var="number&
13、quot; scope="request" value="$request.number"/>假若number為null,則移出request范圍的變量number<c:set var="number" property="name" value="$param.username"/>假若username為空,則賦值null給username2.1.3、<c:if><c:if test="判斷條件" var="用來存儲test運算
14、后的結果,即true或false" scope="page|request|session|application>具體內容<c:if>范例:<c:if test="$param.username='Admin'" var="condition" scope="page">你好Admin先生</c:if><br> 執行結果為$condition2.1.4、<c:choose>本身只當做<c:when>和<c:othe
15、rwise>的父標簽語法:<c:choose>本體內容(<c:when test=""></c:when>和<c:otherwise></c:otherwise>)</c:choose>2.1.5、<c:forEach>可以將集合中的成員一次瀏覽一遍語法1:迭代一集合對象之所有成員<c:forEach var="用來存放當前循環的成員" items="集合名稱" varStatus="用來存放單簽指到相關成員" begi
16、n="開始位置" end="結束位置" step="每次迭代的間隔數">本體內容</c:forEach>語法2:迭代指定次數<c:forEach var="" varStatus="" begin="" end="" step="">本體內容</c:forEach>varStatus屬性Index:當前成員的索引序號0開始Count:已經循環過的成員總數從1開始First:是否第一個成員、las
17、t:是否最后一個成員范例一:循環List范例二:循環Map范例三:循環數組范例四:varStatus的用法2.1.6、<c:forTokens>用來瀏覽一字符串的所有成員,其成員由定義符號分開案例1:單一分隔符:<c:forTokens var="str" items="A,B,C,D" delims=","> $str </c:forTokens>案例2:多個分隔符:<c:forTokens var="str" items="A,B:C-D,E" de
18、lims=",:-"> $str </c:forTokens>-2.2、l18N格式標簽庫(fmt標簽) 國際化的,一共12個,被分成兩類國際化核心標簽 <fmt:setLocale><fmt:bundle><fmt:setBundle><fmt:message><fmt:param><fmt:requestString>格式化標簽:<fmt:timeZone><fmt:setTimeZone><fmt:formatNumber><fmt:pa
19、rseNumber><fmt:formatDate><fmt:parseDate>2.2.1、<fmt:formatDate>用于日期對象格式化為任意格式的字符串語法:<fmt:formatDate value="需要格式化對象" pattern="日期格式掩碼" type="日期的類型" var="格式化后結果保存的變量"scope="page|request|session|application變量范圍"timeZone="指定時區
20、的信息"/>案例1:格式化日期為yyyy-MM-dd格式案例2:yyyy-MM-dd HH:mm:ss2.2.2、<fmt:formatNumber>用于格式化數字為制定字符串語法:<fmt:formatDate value="需要格式化對象" pattern="數字格式掩碼" type="currency|number|percent" var="格式化后結果保存的變量"scope="page|request|session|application變量范圍"/
21、>案例1:價格保留到小數點后2位案例2:以財務格式顯示金額“1,888.90”2.3、自定義標簽開發自定義標簽需要以下三個步驟來操作:Step1創建標簽的處理類(Tag Handler Class) 要求 extens SimpleTagSupportstep3、在JSP文件中引入標簽庫Step2創建標簽庫描述文件(Tag Library Descrptor File)*.tld在web.xml文件下案例1:用JSTL和EL實現按類別查詢圖書JSTL 使用:<1> 導入<% taglib uri=" prefix="c"%> 置于JS
22、P頁面頂部。prefix屬性可任意書寫, uri屬性為固定寫法。1.<c:forEach></c:forEach>用來遍歷集合與數組。參數var為自定義參數 , 參數items 為要循環遍歷的容器,該標簽可以循環任意數組,以及MAP,COLLECTION接口下的容器。例如:<table border='1'><c:forEach var="product" items="$requestSducts"><tr><td>$product.p_name &
23、lt;/td><td>$product.p_value </td><td><a href="/ShoppingDemo/servlet/CartServlet?id=$product.id ">購買</a></td></tr></c:forEach></table>EL 表達式中$requestScope的含義是在request作用域下尋找 products 。<% taglib uri=" prefix="c"%>&l
24、t;!- session.setAttribute("icss",8); 避開代碼 利用標簽 增強程序可讀性 -><c:set var="icss" value="$3+5" scope="session" /><!- 顯示icss 的值 -><c:out value="$icss"/><a href="c_set_remove2.jsp">測試刪除</a><c:out value="icss&
25、quot;></c:out><c:remove var="icss" scope="session"/><c:out value="icss" ></c:out><c:if test="$sessionScope.user_info = null" ><p><a href="/ShoppingDemo/reg.jsp">注冊</a><a href="/ShoppingDemo/l
26、ogin.jsp">登錄</a></p></c:if> <c:if test="$sessionScope.user_info != null" ><p><span>歡迎您 , $sessionScope.user_</span><a href="/ShoppingDemo/login.jsp">修改個人信息</a></c:if><form action="/ShoppingDemo/s
27、ervlet/CartServlet"><table border='1'><c:forEach var="product" items="$requestScope'products'"><tr><td><c:out value="$product.p_name "/></td><td>$product.p_value </td><td><a href="/Sho
28、ppingDemo/servlet/CartServlet?id=$product.id ">購買</a></td></tr></c:forEach>目標l EL的基本使用l JSTL的常用標記知識點1:EL概念:Expression Language jsp語法和html語法分離基本使用:以$開始、結束特點:與傳統的jsp比較,el語法更加簡潔,方便特殊符號:. 隱含內置對象JSP內置對象EL隱含內置對象RequestrequestScopesessionsessionScopeapplicationapplicationSco
29、pepagepageScoperequest.getParameterparamrequest.getParameterValuesparamValuesEL表達式的靈活使用 $屬性名Session.setAttribute(“aa”,”microsoft”);session屬性值Application.setAttribute(“bb”,”sun”);application屬性值El表達式打印3種方式:$sessionScope.aa $sessionScope“aa” $aa【pageScope>requestScope>sessionScope>applicationS
30、cope】 變量自動搜索順序 <% application.setAttribute("aa","sun"); session.setAttribute("aa","microsoft"); request.setAttribute("aa","ibm"); pageContext.setAttribute("aa","hp"); %> $sessionScope.aa $applicationScope"aa&q
31、uot; $pageScope.aa$aa 知識點2:JSTL標簽 JavaServerPages standard標準 tag標簽 library庫五大分類:核心標簽庫<c:XXX/> l18N格式標簽庫<fmt:XXX/> SQL標簽庫<sql:XXX/> XML標簽庫<x:XXX/> 函數標簽庫<fn:XXX/>JSTL書寫語法:會跟EL混合在一起,完善一個標記與jsp語法的分離 <% session.setAttribute("aa","microsoft"); /jsp傳統輸出
32、out.println(session.getAttribute("aa"); %> <hr/> <!- EL表達式的輸出 -> $aa <hr/> <!- JSTL和EL混合的輸出 -> <c:out value="$aa"></c:out> <hr/>JSTL和EL作用:避開jsp語法代碼,利用標簽,增強程序的可讀性JSTL的使用步驟Step1:引入標簽庫<% taglib uri=” 【引用名】“ prefix=”c【別名】”%>/jsp/jstl
33、/fmt注意:JavaEE4.0需要手動添加 JavaEE5自動帶著jstl標簽庫Step2:使用標簽<c:XXX標簽輸出基本字符串:<c:out value=”值”/> 輸出變量:<c:out value=”$param.變量名”/>循環標簽<c:forEach var=”循環控制變量名” items=”集合、數組名”> 基本處理</c:forEach>判斷標簽<c:forEach var="i" begin="1" end="10" ><c:if test=&
34、quot;$i%2!=0" ><br/>$i</c:if></c:forEach>案例1:表單提交并用jstl和el處理提交元素<form name="form1" method="post" action="indexPost.jsp"> <p>用戶名: <input type="text" name="txtName" id="textfield"> </p> <p&
35、gt;性別: <input name="rbtSex" type="radio" id="radio" value="男" checked> 男 <input type="radio" name="rbtSex" id="radio2" value="女"> 女</p> <p>學歷: <select name="dropEdu" id="select&q
36、uot;> <option>中學</option> <option>高中</option> <option>本科</option> <option>專科</option> </select> </p> <p>個人興趣愛好: <input type="checkbox" name="chboxInterest" value="吃飯" id="chbox_0"> 吃飯 &
37、lt;input type="checkbox" name="chboxInterest" value="睡覺" id="chbox_1"> 睡覺 <input type="checkbox" name="chboxInterest" value="打豆豆" id="chbox_2"> 打豆豆 </p> <p>個人描述: <textarea name="txtAInfo"
38、; id="textarea" cols="45" rows="5"></textarea> </p> <p> <input type="submit" name="ok" id="button" value="注冊"> </p> </form><% page language="java" import="java.util.*"
39、pageEncoding="gbk"%><% taglib uri=" prefix="c" %><% taglib uri=" prefix="fmt" %><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <title>My JSP 'indexPost.jsp' starting page</t
40、itle> </head> <body> <fmt:requestEncoding value="gbk"/> 用戶名:$param.txtName<br/>性別:$param"rbtSex"<br/>學歷:$param.dropEdu<br/>個人興趣愛好:<c:forEach var="str" items="$paramValues.chboxInterest"><c:out value="$str&qu
41、ot;></c:out></c:forEach><br/>個人信息:$param.txtAInfo<c:forEach var="i" begin="1" end="10" ><c:if test="$i%2!=0" ><br/>$i</c:if></c:forEach> </body></html>案例2:更改CRUD +分頁留言板UpdateLw.jsp<form act
42、ion="UpdateServlet" method="post" name="form1"> <!- 傳統的el調用session屬性對象.方法 -> <input type="hidden" name="lwid" value="$sessionScope.lwobject.lwid"/> <!- 使用el可以調用對象中的私有屬性 -> 姓名:<input type="text" name="l
43、wname" value="$sessionScope.lwobject.lwname" /><br/> <!- 靈活 -> email:<input type="text" name="lwemail" value="$lwobject.lwemail"/><br/> 主題:<input type="text" name="lwsubject" value="$lwobject.lwSubjec
44、t"/><br/> 內容:<textarea name="lwcontent" cols="15" rows="5"> $lwobject.lwContent</textarea><br/> <input type="submit" name="OK" value="更新"/> <input type="button" name="back" onclick="window.location='ViewServlet'" value="返回"/> </form>ViewLw.jsp<c:if test="$abc != null"> <table width="400" border="1" cellspacing="0" cellpadding="0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司知識培訓策劃方案
- 公司科技活動方案
- 公司烹飪活動方案
- 公司晨練活動策劃方案
- 公司結對活動方案
- 公司電競比賽活動方案
- 公司點餐活動策劃方案
- 公司整風活動方案
- 公司競爭類游戲策劃方案
- 公司組織去海邊策劃方案
- 2024年財政部會計法律法規答題活動題目及答案一
- 《中藥調劑技術》課件-中藥調劑的概念、起源與發展
- 《數據中心節能方法》課件
- 2024年變電設備檢修工(高級)技能鑒定理論考試題庫-上(選擇題)
- 循環系統疾病智慧樹知到答案2024年哈爾濱醫科大學附屬第一醫院
- 2024-2030年中國激光水平儀行業市場發展趨勢與前景展望戰略分析報告
- 部編本小學語文六年級下冊畢業總復習教案
- JB∕T 11864-2014 長期堵轉力矩電動機式電纜卷筒
- 小兒氨酚黃那敏顆粒的藥動學研究
- 生態環境行政處罰自由裁量基準
- 長沙市開福區2024屆六年級下學期小升初數學試卷含解析
評論
0/150
提交評論