亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JSTL標簽和EL表達式學習

2019-11-11 07:22:58
字體:
來源:轉載
供稿:網友

JSTL簡單介紹

什么是JSTL?

JSTL是apache對EL表達式的擴展(也就是說JSTL依賴EL),JSTL是標簽語言!JSTL標簽使用以來非常方便,它與jsp動作標簽一樣,只不過它不是JSP內置的標簽,需要我們自己導包,以及指定標簽庫而已!,JSTL是有tld文件(JSTL1.1含有5個tld文件)和標準處理類組成

如果你使用MyEclipse開發javaWeb,那么在把項目發布到Tomcat時,你會發現,MyEclipse會在lib目錄下存放jstl的Jar包!如果你沒有使用MyEclipse開發那么需要自己來導入這個JSTL的Jar包:jstl-1.2.jar

JSLT的下載:

下載之后解壓導入jstl.jar和standard.jsr包導入lib目錄下:

http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

JSTL標簽介紹和使用

JSTL標簽庫:

JSTL一共包含四大標簽庫:

core:核心標簽庫,我們學習的重點fmt:格式化標簽庫,只需要學習兩個標簽即可sql:數據庫標簽庫,不需要學習了,它過時了xml:xml標簽庫,不需要學習了,它過時了

使用taglib指令導入標簽庫:

除了JSP動作標簽外,使用其他第三方的標簽庫都需要:

導包在使用標簽的JSP頁面中使用taglib指令導入標簽庫

下面是導入JSTL的core標簽庫:

<%@ taglib prefix=”c”:指定標簽庫的前綴,這個前綴可以隨便給值,但大家都會在使用core標簽庫時指定前綴為c

uri=”http://java.sun.com/jstl/core”:指定標簽庫的uri,它不一定是真實存在的網址,但它可以讓JSP找到標簽庫的描述文件

core標簽庫常用標簽:

out和set標簽:

<c:out value=”aaa”/> //輸出aaa字符串常量<c:out value=”${aaa}”/> //與${aaa}相同<c:out value=”${aaa}” default=”xxx”/> //當${aaa}不存在時,輸出xxx字符串<%request.setAttribute("a","<script>alert('hello');</script>");%><c:out value="${a }" default="xxx" escapeXml="false" />如果為escapeXml="false",則將其中的html、xml解析出來,還可以輸出轉義字符,所以會輸出hello<c:set var=”a” value=”hello”/> //在pageContext中添加name為a,value為hello的數據<c:set var="a" scope="
session">hello</c:set> //也是輸出hello<c:set var=”a” value=”hello” scope=”session”/> //在session中添加name為a,value為hello的數據

remove標簽:

<%pageContext.setAttribute("a","pageContext");request.setAttribute("a","session");session.setAttribute("a","session"); application.setAttribute("a","application");%><c:remove var="a"/> //刪除所有域中name為a的數據!<c:out value="${a}" default="none"/><c:remove var="a" scope=”page”/> //刪除pageContext中name為a的數據

catch標簽:

<c:catch var="error"> <%=10/0></c:catch>//捕獲異常,后面的代碼繼續執行<c:out value="${error}"/> //輸出異常信息

if標簽:

if標簽的test屬性必須是一個boolean類型的值,如果test的值為true,那么執行if標簽的內容,否則不執行

<c:set var="a" value="hello"/> <c:if test="${not empty a }" var="result" scope="session"> <c:out value="正確"/> </c:if><c:out value="${result}"></c:out> //輸出"正確"

choose,when,otherwise標簽:

choose標簽對應Java中的if/else,when標簽的test為true時,會執行這個when的內容,當所有when標簽的test都為false時,才會執行otherwise標簽的內容,choose標簽可以省略不寫

<c:set var="score" value="${param.score }"/> <c:choose> <c:when test="${score > 100 || score < 0}">錯誤的分數:${score }</c:when> <c:when test="${score >= 90 }">A級</c:when> <c:when test="${score >= 80 }">B級</c:when> <c:when test="${score >= 70 }">C級</c:when> <c:when test="${score >= 60 }">D級</c:when> <c:otherwise>E級</c:otherwise> </c:choose>

forEach標簽:

forEach當前就是循環標簽了,forEach標簽有多種兩種使用方式:

使用循環變量,指定開始和結束值,類似for(int i = 1; i <= 10; i++) {}循環遍歷集合,類似for(Object o : 集合)

循環變量:

<c:set var="sum" value="0" /> <c:forEach var="i" begin="1" end="10"> <c:set var="sum" value="${sum + i}" /> </c:forEach> <c:set var="sum" value="0" /> <c:forEach var="i" begin="1" end="10" step ="2"> <c:set var="sum" value="${sum + i}" /> </c:forEach>

遍歷集合或數組方式:

<% String[] names = {"zhangSan", "liSi", "wangWu", "zhaoLiu"}; pageContext.setAttribute("ns", names); %> <c:forEach var="item" items="${ns }"> <c:out value="name: ${item }"/><br/> </c:forEach>

遍歷List:

<% List<String> names = new ArrayList<String>(); names.add("zhangSan"); names.add("liSi"); names.add("wangWu"); names.add("zhaoLiu"); pageContext.setAttribute("ns", names); %> <c:forEach var="item" items="${ns }" begin="1" end="3"> <c:out value="name: ${item }"/><br/> </c:forEach>

遍歷Map:

<% Map<String,String> stu = new LinkedHashMap<String,String>(); stu.put("number", "N_1001"); stu.put("name", "zhangSan"); stu.put("age", "23"); stu.put("sex", "male"); pageContext.setAttribute("stu", stu); %> <c:forEach var="item" items="${stu }"> <c:out value="${item.key }: ${item.value }"/><br/> </c:forEach>

forEach標簽還有一個屬性:varStatus,這個屬性用來指定接收”循環狀態”的變量名,例如:<forEach varStatus=”vs” …/>,這時就可以使用vs這個變量來獲取循環的狀態了

count:int類型,當前以遍歷元素的個數index:int類型,當前元素的下標first:boolean類型,是否為第一個元素last:boolean類型,是否為最后一個元素current:Object類型,表示當前項目<c:forEach var="item" items="${ns }" varStatus="vs"> <c:if test="${vs.first }">第一行:</c:if> <c:if test="${vs.last }">最后一行:</c:if> <c:out value="第${vs.count }行: "/> <c:out value="[${vs.index }]: "/> <c:out value="name: ${vs.current }"/><br/> </c:forEach>

forTokens標簽:

通過指定分隔符將字符串分隔為一個數組然后迭代它們,delims:分隔符

<c:forTokens items="google,runoob,taobao" delims="," var="name"> <c:out value="${name}"/><p></c:forTokens> //輸出google runoob taobao

c:import 標簽:

使用c:import標簽可以包含一個FTP服務器中不同的網頁內容

<c:import var="data" url="http://www.runoob.com"/><c:out value="${data}"/> //以上程序將會打印http://www.runoob.com"頁面的源代碼<c:import url="/import.jsp" context="/WebProjext"/> //引入同一個服務器下的另外一個Project

c:redirect>標簽:

c:redirect標簽通過自動重寫URL來將瀏覽器重定向至一個新的URL,它提供內容相關的URL,并且支持c:param標簽,context:緊接著一個本地網絡應用程序的名稱

<c:redirect url="if.jsp"> <c:param name="aa" value="123"></c:param>//傳參數</c:redirect> //用${param.aa}可以獲得

url標簽:該標簽會在需要重寫URL時添加

<c:url value="/"/> //輸出上下文路徑:/項目名/<c:url value="/" var="a" scope="request"/> //把本該輸出的結果賦給變量a,范圍為request<c:url value="/AServlet"> <c:param name="username" value="abc"/> <c:param name="passWord" value="123"/></c:url> //輸出:/項目名/AServlet?username=abc&password=123,如果參數中包含中文,那么會自動使用URL編碼!

fmt標簽庫常用標簽:

fmt標簽庫是用來格式化輸出的,通常需要格式化的有時間和數字

格式化時間:

<% Date date = new Date(); pageContext.setAttribute("d", date); %> <fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>

格式化數字:

<% double d1 = 3.5; double d2 = 4.4; pageContext.setAttribute("d1", d1); pageContext.setAttribute("d2", d2); %> <fmt:formatNumber value="${d1 }" pattern="0.00"/><br/> <fmt:formatNumber value="${d2 }" pattern="#.##"/>

JSTL(fn函數):

首先,我們要在頁面的最上方引用:

<%@ taglib prefix="fn" uri="http://Java.sun.com/jsp/jstl/functions" %>

基本函數使用:

fn:contains(string, substring)

<c:if test="${fn:contains("你好","你好了嗎")}"/> //前面的字符串是否包含后面的fn:containsIgnoreCase(string, substring) //忽略大小寫的包含fn:endsWith(string, suffix) //假如參數string以參數suffix結尾,返回truefn:indexOf(string, substring) //返回參數substring在參數string中第一次出現的位置

fn:escapeXml(string)

將有非凡意義的XML (和HTML)轉換為對應的XML,character entity code,并返回

<c:out value="${fn:excapeXml('<book>歌曲</book>')}"/> <!--輸出&lt;book&gt;歌曲&lt;book&gt;-->

JSP訪問JavaBean:

1.導入javaBean類

<%@ page import="com.anllin.bean.Person" %>

2.聲明javaBean對象

<jsp:useBean id="person" class="com.anllin.bean.Person"></jsp:useBean>

其實相當于

<% Person person = new Person(); %>

Id表示生成一個類的實例,一般id不能重復,用于表示不同的對象,如果相同則表示同一個對象,這種情況下jsp會報錯

3.訪問javaBean屬性

<jsp:setProperty property="name" name="person" value="jack"/><jsp:getProperty property="name" name="person"/><br>

其實相當于

<% person.setName("jack"); person.getName();%>

也可以使用JSTL:

<c:set target="${person}" property="name" value="jark"/>//相當于:<c:set target="${person}" property="name">jark</c:set><c:out value="${person.name}"/>

具體介紹:http://www.cnblogs.com/zfc2201/archive/2011/08/17/2143615.html

EL表達式介紹

EL(Expression Language)表達式語言:用于計算和輸出存儲在標志位置(page、request、session、application)的java對象的值

EL是JSP2.0規范的一部分,只要容器支持Servlet2.4/JSP2.0,就可以在JSP2.0網頁中直接使用EL

EL表達式的使用

基本格式:${表達式}

所有的EL都是以"${"開始,以"}"結尾表達式與開始符和終結符的空格被忽略表達式的值為null,則在頁面中顯示為一個空字符串,而不是null

運算符的介紹:

算術運算:+、-、*、/或div、%或mod關系運算:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge邏輯運算:&&或and、||或or、!或not特殊運算:empty(是否為null或空字符串)、?:(三元運算符)轉義符:/${變量}

EL 提供”.”和”[ ]”兩種運算符來存取數據:

當要存取的屬性名稱中包含一些特殊字符,如.或?等并非字母或數字的符號,就一定要使用”[ ]”,例如:

${user.My-Name}應當改為${user["My-Name"] }

如果要動態取值時,就可以用“[ ]“來做,而“.“無法做到動態取值,例如:

${sessionScope.user[data]}中data 是一個變量

EL常用的隱式對象:

作用域(以下11個EL作用域名稱也是EL提供的隱式對象):

EL中存取變量:

EL存取變量數據的方法很簡單,例如:${username},它的意思是取出某一范圍中名稱為username的變量

因為我們并沒有指定哪一個范圍的username,所以它會依序從Page、Request、Session、Application范圍查找

假如途中找到username,就直接回傳,不再繼續找下去,但是假如全部的范圍都沒有找到時,就回傳null

屬性范圍在EL中的名稱:

Page PageScopeRequest RequestScopeSession SessionScopeApplication ApplicationScope

特別強調:

1.注意當表達式根據名稱引用這些對象之一時,返回的是相應的對象而不是相應的屬性,例如:即使現有的pageContext 屬性包含某些其他值,${pageContext}也返回 PageContext 對象

2.注意 <%@ page isELIgnored=”true” %> 表示是否禁用EL語言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默認的啟用EL語言

基本使用舉例:

< %=request.getParameter(“username”)% >等價于${ param.username } //注意EL會進行自動類型轉換
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线日韩中文字幕| 国产欧美一区二区三区在线| 91精品啪在线观看麻豆免费| 国产精品一区二区久久久久| 91在线中文字幕| 欧美激情一区二区久久久| 国产精品久久久久77777| 亚洲网站在线观看| 日韩**中文字幕毛片| 麻豆精品精华液| 视频直播国产精品| 国产精品∨欧美精品v日韩精品| 欧美激情视频一区| 91精品国产网站| 欧美伊久线香蕉线新在线| 国产精品一区=区| 久久99国产综合精品女同| 奇米一区二区三区四区久久| 亚洲第一在线视频| 狠狠躁夜夜躁人人躁婷婷91| 麻豆乱码国产一区二区三区| 尤物tv国产一区| 国产综合久久久久久| 欧美成人精品在线播放| 欧美一级视频免费在线观看| 精品伊人久久97| 日韩视频免费在线| 欧美在线日韩在线| 欧美性生交xxxxx久久久| 亚洲aⅴ男人的天堂在线观看| 九色精品美女在线| 国产精品久久久久久影视| 午夜精品久久久久久99热软件| 亚洲一区中文字幕| 欧美午夜丰满在线18影院| 欧美激情a∨在线视频播放| 久久视频国产精品免费视频在线| 亚洲国产精品久久久久秋霞蜜臀| 精品自拍视频在线观看| 国产精品大片wwwwww| 九九久久国产精品| 亚洲一区二区精品| 欧美色另类天堂2015| 成人亚洲综合色就1024| 亚洲国产成人久久综合一区| 日韩av手机在线| 日韩精品视频在线播放| 亚洲色图国产精品| 91高清免费视频| 欧美一级黑人aaaaaaa做受| 精品久久久久久久久中文字幕| 成人黄色av网站| 亚洲第一男人天堂| 8090理伦午夜在线电影| 亚洲韩国欧洲国产日产av| 欧美中文在线免费| 欧美性猛交xxxx乱大交极品| 国内精品久久久久影院 日本资源| 最新国产成人av网站网址麻豆| 午夜精品三级视频福利| 国产精品久久久久久影视| 91精品久久久久久久久中文字幕| 成人观看高清在线观看免费| 日韩一区二区久久久| 日本欧美一二三区| 亚洲精品资源在线| 亚洲成人aaa| 69久久夜色精品国产69| 国产精品女人久久久久久| 性欧美暴力猛交69hd| 欧美理论电影在线观看| 久久久精品久久久久| 在线精品国产成人综合| 国产欧美精品一区二区三区-老狼| 日韩经典中文字幕在线观看| 亚洲午夜未删减在线观看| 国产丝袜视频一区| 午夜精品久久久久久久男人的天堂| 亚洲剧情一区二区| 免费97视频在线精品国自产拍| 日本伊人精品一区二区三区介绍| 欧美成年人在线观看| 成人精品视频久久久久| 一本色道久久88综合日韩精品| 欧美日韩激情小视频| 国产专区欧美专区| 亚洲美女性视频| 91豆花精品一区| 久久精品国产2020观看福利| 97成人精品视频在线观看| 欧美剧在线观看| 日韩国产精品视频| 欧洲成人免费视频| 日韩精品免费在线视频观看| 亚洲精品suv精品一区二区| 91国产精品电影| 久久夜色精品国产亚洲aⅴ| 国产精品午夜国产小视频| 欧美色道久久88综合亚洲精品| 亚洲一区二区三| 欧美成人合集magnet| 日韩av在线网站| 亚洲国产另类 国产精品国产免费| 欧美午夜片欧美片在线观看| 日韩一区二区三区国产| 欧美性生交大片免费| 91av在线播放| 亚洲理论片在线观看| 精品久久香蕉国产线看观看gif| 欧美成人免费全部观看天天性色| 欧美精品videos性欧美| 精品久久久久人成| 亚洲精品久久久久久久久久久久久| 91成人在线观看国产| 中文字幕亚洲字幕| 一本色道久久综合狠狠躁篇怎么玩| 国产不卡视频在线| 中文字幕日韩视频| 91色p视频在线| 成人免费看黄网站| 亚洲精品一区久久久久久| 中文字幕日韩免费视频| 国产成人aa精品一区在线播放| 日本高清视频一区| 欧美高清视频在线| 精品中文字幕在线观看| 97精品在线观看| 国产精品偷伦视频免费观看国产| 亚洲久久久久久久久久| 成人网页在线免费观看| 国产999视频| 国产91精品黑色丝袜高跟鞋| 精品国产精品三级精品av网址| 国产中文字幕亚洲| 国内伊人久久久久久网站视频| 欧美日韩国产成人在线| 国产精品麻豆va在线播放| 亚洲精品国产电影| 热久久免费国产视频| 欧美视频第一页| 日韩av电影在线网| 亚洲欧洲免费视频| 亚洲二区在线播放视频| 亚洲综合精品一区二区| 久久视频在线观看免费| 97视频com| 亚洲综合国产精品| www国产91| 国产精品永久免费观看| 欧美视频免费在线观看| 欧美在线视频网| 久久久精品国产一区二区| 亚洲欧美一区二区精品久久久| 欧美中文在线字幕| 精品女厕一区二区三区| 欧美又大又硬又粗bbbbb| 亚洲男女自偷自拍图片另类| 亚洲japanese制服美女| 久久久中精品2020中文| 欧美亚洲一级片| 亚洲欧美日韩一区二区三区在线| 2019亚洲男人天堂| 国产精品自产拍在线观| 精品视频在线导航|