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

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

JSTL標簽和EL表達式學習

2019-11-14 09:16:53
字體:
來源:轉載
供稿:網友

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.49028c.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色在线| 91麻豆国产语对白在线观看| 久久久久成人网| 91精品国产沙发| 欧美大秀在线观看| 欧美精品18videos性欧| 在线a欧美视频| 日韩成人av一区| 91在线视频成人| 国产精品久久久久久久久久久久久| 日韩电视剧在线观看免费网站| 国产一区二中文字幕在线看| 两个人的视频www国产精品| 久久激情视频免费观看| 国产一区二区三区日韩欧美| 欧美电影在线观看高清| 国产精品xxx视频| 国产成人精品优优av| 久久久亚洲国产| 欧美日韩成人在线观看| 日韩福利视频在线观看| 亚洲最大福利视频网| 欧美激情精品久久久久久久变态| 日韩在线不卡视频| 国内外成人免费激情在线视频| 国产精品video| 亚洲免费av电影| 久久久综合免费视频| 欧美日韩国产在线| 亚洲欧美中文字幕在线一区| 亚洲xxxx18| 欧美限制级电影在线观看| 中文字幕亚洲激情| 91久久久精品| www欧美xxxx| 在线观看免费高清视频97| 欧美亚洲国产另类| 日韩欧美在线播放| 一区二区三区视频在线| 国产99在线|中文| 久久成年人视频| 国产精品av在线播放| 国产成人激情小视频| 精品av在线播放| 日韩高清有码在线| 午夜精品久久久久久久久久久久久| 91探花福利精品国产自产在线| 成人乱色短篇合集| 国内精品久久久久久影视8| 亚洲国产精品国自产拍av秋霞| 在线视频精品一| 国产精品永久免费| 国产做受69高潮| 欧美黄网免费在线观看| 久久精品国产91精品亚洲| 日韩精品免费观看| 日韩暖暖在线视频| 日韩精品极品在线观看| 久久影院免费观看| 欧美一级视频一区二区| 成人在线一区二区| 色偷偷91综合久久噜噜| 91精品国产91久久久久| 久久久久久国产精品久久| 亚洲一级黄色片| 亚洲天堂视频在线观看| 性欧美xxxx交| 91欧美精品午夜性色福利在线| 456亚洲影院| 国产成人福利夜色影视| 精品视频中文字幕| 亚洲成人动漫在线播放| 91理论片午午论夜理片久久| 色综合导航网站| 日日摸夜夜添一区| 欧美人与物videos| 亚洲级视频在线观看免费1级| 色黄久久久久久| 日韩精品高清在线观看| 92看片淫黄大片欧美看国产片| www.美女亚洲精品| 成人午夜两性视频| 国产美女精彩久久| 在线成人激情视频| 国产精品高清在线观看| 亚洲综合色av| 精品久久久久久亚洲国产300| 色综合久久天天综线观看| 午夜精品视频网站| 久久精品国产久精国产一老狼| 亚洲精品成人网| 亚洲欧美国产精品久久久久久久| 欧美激情一区二区三区久久久| 国内精品小视频在线观看| 91九色国产视频| 日韩一中文字幕| 欧美伊久线香蕉线新在线| 欧美老妇交乱视频| 成人av在线天堂| 国产精品欧美久久久| 久久精品电影一区二区| 国产成人精品亚洲精品| 伊人男人综合视频网| 色噜噜狠狠狠综合曰曰曰| 91性高湖久久久久久久久_久久99| 国产精品亚洲一区二区三区| 欧美做受高潮电影o| 国产视频亚洲精品| 国产国产精品人在线视| 国产亚洲欧美日韩精品| 亚洲成av人影院在线观看| 97色在线观看免费视频| 国产精品一区二区在线| 亚洲乱码国产乱码精品精天堂| 亚洲free性xxxx护士白浆| 欧美富婆性猛交| 国产精品久久久久久久9999| 亚洲精品欧美一区二区三区| 自拍偷拍亚洲精品| 一区国产精品视频| 亚洲精品视频在线观看视频| 精品久久久久久久大神国产| 国产在线999| 色久欧美在线视频观看| 日韩精品丝袜在线| 亚洲第一综合天堂另类专| 久久久久久久久久久久久久久久久久av| 国产精品日韩av| 青青草原一区二区| 热re99久久精品国产66热| 亚洲亚裔videos黑人hd| 国产精品自拍偷拍| 中文国产成人精品久久一| 国产成人小视频在线观看| 欧美精品福利在线| 亚洲区中文字幕| 欧美亚洲免费电影| 日韩视频在线观看免费| 亚洲午夜女主播在线直播| 色爱精品视频一区| 午夜精品一区二区三区在线播放| 69精品小视频| 在线日韩精品视频| 欧美在线激情网| 尤物九九久久国产精品的特点| 欧美一二三视频| 国产精品伦子伦免费视频| 欧美国产日产韩国视频| 日本精品视频在线| 亚洲国产精品中文| 国产一区二区三区在线观看网站| 日韩69视频在线观看| 国产日本欧美一区二区三区在线| 日韩电影中文字幕一区| 久久99久国产精品黄毛片入口| 日韩高清电影免费观看完整版| 国产成人中文字幕| 久久青草福利网站| 日本久久精品视频| 久久九九亚洲综合| 久久久久日韩精品久久久男男| 欧美成年人在线观看|