JSTL
- 格式:pdf
- 大小:261.29 KB
- 文档页数:46
JSTL(JSP标准标签库)介绍作者:令少爷(shaoye@)前言从JSP 1.1规范开始,JSP就支持在JSP中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了JSTL(JavaServer Pages Standard Tag Library)的诞生。
因为工作中需要用到JSTL,但网上却苦于找不到有关JSTL的中文资料,所以就有了这篇文章。
JSTL简介JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。
JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。
但是在即将推出的JSP 2.0中是作为标准支持的。
JSTL目前的最新版本为1.02,最终发布版为1.0。
JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。
标签库目前支持四种标签:标签URI 前缀示例Core /jstl/core c <c:tagname ...> XML processing /jstl/xml x <x:tagname ...>I18N capableformatting/jstl/fmt fmt <fmt:tagname ...> Database access(SQL)/jstl/sql sql <sql:tagname ...>Core支持JSP中的一些基本的操作;XML processing支持XML文档的处理;I18N capable formatting支持对JSP页面的国际化;Database access (SQL)支持JSP对数据库的操作。
由于本人水平有限,本文仅介绍Core标签,如有兴趣,可一起探讨其它三种标签的使用与扩充。
EL语言介绍EL语言是JSTL输出(输入)一个JAVA表达式的表示形式。
在JSTL中,EL语言只能在属性值中使用。
JSTL中的TLD配置和使⽤。
⼀,JSTL介绍: JSTL标签库,是⽇常开发经常使⽤的,也是众多标签中性能最好的。
把常⽤的内容,放在这⾥备份⼀份,随⽤随查。
尽量做到不⽤查,就可以随⼿就可以写出来。
这算是Java程序员的基本功吧,⼀定要扎实。
JSTL全名为JavaServer Pages Standard Tag Library。
JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发⼈员⼀个标准通⽤的标签函数库。
Web程序员能够利⽤JSTL和EL来开发Web程序,取代传统直接在页⾯上嵌⼊Java程序(Scripting)的做法,以提⾼程序的阅读性、维护性和⽅便性。
⼆,JSTL配置: 主要牵涉到两个jar包 standward.jar和jstl.jar包(两个包1.0和1.2版本的下载以及TLD下载路径如下:) 加载⽅式包括两种 1,⾮⾃动加载 a,将tld⽂件copy到WEB-INFO下的tld⽬录下,没有就创建之 b,修改web.xml⽂件配置,添加配置如下 1<jsp-config>2<taglib>3<taglib-uri>/jstl/core</taglib-uri>4<taglib-location>/WEB-INF/tld/c.tld</taglib-location>5</taglib>6<taglib>7<taglib-uri>/jstl/fmt</taglib-uri>8<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>9</taglib>10<taglib>11<taglib-uri>/jstl/fn</taglib-uri>12<taglib-location>/WEB-INF/tld/fn.tld</taglib-location>13</taglib>14</jsp-config>View Code c,jsp中引⽤taglib 2,⾃动加载Servlet2.4规范提供了对tld⽂件的⾃动加载,tld⽂件在standard.jar的META-INF⽂件夹中。
JSTL标签库引入:/harderxin/article/details/7090501自定义标签:我们可以自己去定义一些jsp标签。
自定义包含两个:java类,tld文件(标签的描述文件)标签库JSTL(JSP Standard Tag Library):因为在jsp中使用java代码去控制页面的显示(即:用小段的<%%>),可读性很差,这样后期维护会比较麻烦,所以引入了Java标签库。
n 常用的JSTL标签库:n 核心标签库:/jsp/jstl/core包含Web 应用的常见工作,比如:循环、表达式赋值、基本输入输出等。
n 格式化标签库:/jsp/jstl/fmt用来格式化显示数据的工作,比如:对不同区域的日期格式化等。
n XML 标签库:/jsp/jstl/xml用来访问XML 文件的工作,这是JSTL 标签库的一个特点。
n 函数标签库:/jsp/jstl/functions用来读取已经定义的某个函数。
n 数据库标签库:/jsp/jstl/sql可以做访问数据库的工作。
J2EE 1.4:使用Java标签库首先要在项目中引入jstl.jar和standard.jar两个jar包,MyEclipse 中有这个功能;Standard.jar中有tld文件(是一个xml文档),这是关于JSTL标签的说明文件,对应的java 类就是加载这些说明,然后对我们写的JSTL标签进行解析处理。
JAVAEE 5.0:javaee5.0类库已经自带了jstl相关的jar包。
不需要再添加,可以直接使用jstl。
其次要在页面中加入这样一个标签头[gjw1]<%@ taglib prefix="c"uri="/jsp/jstl/core" %><c:out>标签用于显示变量数据。
<c:out value="${a}" default="空"[c2]escapeXml="true" [c3]></c:out><c:set>标签的常用属性(将值存储到作用域或为JavaBean 中的变量属性赋值):示例:<c:forEach items="${li}" var="str" begin="0" end="9" step="1" varStatus="ind"><b>${fn:substring(str,1,fn:length(str))}</b><c:if test="${(ind.index+1)%3==0}"><br></c:if></c:forEach><c:forEach items='${fn:split("a,b,c",",")}'[gjw17]var="cc" >${cc} <br></c:forEach>扩展知识点:JSTL的格式化标签库。
jst l中使用out输出内容jstl(JSP标准标签库)是一种强大的JSP标签集,用于以更加简洁和方便的方式来操作JSP页面上的数据。
其中,使用out标签可以实现在JSP页面上有效输出内容。
使用out标签输出内容时,可以采用:${}或者<c:out value=变量这两种方式。
前者可以使用表达式访问对象的属性、调用方法,也可以使用脚本变量,将属性值或者方法的返回值输出到页面上;而后者可以引用一个JavaBean或者使用EL表达式来获取参数,并将参数的值通过value属性填入到c:out标签中。
使用out标签输出的内容不仅仅限于字符串,它还能够输出表达式的结果,比如:可以使用<c:out value=${表达式}来输出表达式结果。
这就可以使我们以更为灵活的方式来操作JSP页面内容。
此外,使用out标签还可以进行HTML字符的转义。
在JSP中,当我们要在页面上输出HTML特殊字符时,就会出现问题,这时,就要采用<c:out>标签来转义特殊字符,它会将<, >, &, 等字符都进行转义,这样就不会影响到页面的正常显示。
除了上面提到的功能之外,<c:out>标签还可以实现一些高级功能,如:当引用的变量为null时,可以用<c:out>标签来输出默认值,从而实现空值检查;另外,还可以使用<c:out>标签来实现数据格式化,使用<fmt:formatNumber>标签可以实现对金额数字的格式化显示,比如将一个小数数字的格式化显示为指定的金额格式,或者将一个指定的数字格式化成指定的日期格式等等。
总的来说,使用out标签输出内容是JSP页面的一种常见操作,它可以使我们更加简便地操作JSP页面上的数据,从而实现更加优良的页面效果。
JSTL中的scope属性前两天接到⽼⼤⼀个任务:要验证⼀下<c:import>能否动态地引⼊不同的⽂件。
当时很兴奋,要知道在对⽇外包⾥⾯,这个也得算技术活了。
呵呵!说⼲就⼲,写了两个jsp⽂件:m.jsp test1.jsp。
⽬的是⽤变量"a"代替test1中的“1”。
代码如下:m.jsp----------------------------------<c:set var="a" value="1"/><c:import url="test${a}.jsp"/>----------------------------------test1.jsp---------------------------------<BR>TEST1<BR><c:out value="${a}"/>---------------------------------试验之前⽼⼤说估计不⾏,⽽结果却是TEST1那是不是可以说JSTL(Jsp Standard Taglib Language)是可以解析EL(Express Language)的呢?。
我再看了看tomcat⾥⾯work⽬录下编译java⽂件(m_jsp.java⽂件),其实是没编译EL的,即还是把他作为字符串参数传递,⽽在执⾏的时候动态的解析。
说到现在还没说到<c:import> 的scope属性,别急哈。
先谈谈引⼊这个问题的原因:试验结果出乎⽼⼤的意料,他在那JJYY了⼀阵,我在⼀旁偷着乐:哈哈,没搞对吧!没想到他马上⼜说:如果给"a"设不同的值,能引⼊不同的⽂件吗? “恩.........,我也不知道”我应到。
于是他在我机⼦上写了下⾯的代码:m.jsp----------------------------------<c:set var="a" value="1"/><c:import url="test${a}.jsp"/><c:set var="a" value="2" scope="request"/><c:import url="test${a}.jsp"/>----------------------------------test1.jsp---------------------------------<BR>TEST1<BR><c:out value="${a}"/>---------------------------------test2.jsp---------------------------------<BR>TEST2<BR><c:out value="${a}"/>---------------------------------结果如下:TEST11TEST11⽼⼤⽕了,为什么不⾏呢?这次test2.jsp怎么没引⼊进来??“不搞了,看来不⾏”⽼⼤拂袖⽽去,丢了这么⼀句。
Web Development Part IX JSP標準標籤庫-JSTL iJavaServer Pages Standard Tag Library 目 錄 JSTL簡介..................................................................................................................................1 核心標籤庫(Core Tag Library)..................................................................................................1 運算式操作(General Expression Tags).............................................................................2 流程控制(Conditional Tags)..............................................................................................5 迭代操作(Iterator Tags).....................................................................................................7 URL操作(Import Tags)...................................................................................................10 I18N格式標籤庫(I18N-Capable Formatting Tags)................................................................14 國際化格式標籤..............................................................................................................14 訊息格式標籤..................................................................................................................15 數字日期格式化標籤......................................................................................................19 SQL標籤庫(SQL Tags)...........................................................................................................25 設定資料庫連線..............................................................................................................25 SQL存取指令.................................................................................................................26 函式標籤庫(Function Tags).....................................................................................................31 Web Development Part IX JSP標準標籤庫-JSTL 1JSTL簡介 ¾ JavaServer Pages Standard Tag Library (1.1) – JSP標準標籤函式庫,應用於基本輸出、輸入、流程控制、迴圈、XML文件剖析、資料庫查詢及國際化文字格式標準化(UTF)等。主要分為以下五大類 JSTL Prefix URI Example 核心標籤庫 (Core Tag Library) c http://java.sun.com/jsp/jstl/core
I18N格式標籤庫(I18N-capable-formatting Tag Library)
fmt http://java.sun.com/jsp/jstl/fmt Date>
SQL標籤庫 (SQL Tag Library) sql http://java.sun.com/jsp/jstl/sql
> XML標籤庫 (XML Tag Library) xml http://java.sun.com/jsp/jstl/xml
> 函式標籤庫 (Functions Tag Library) fn http://java.sun.com/jsp/jstl/functions
¾ 安裝JSTL1.1 JSTL官方網站為http://java.sun.com/products/jsp/jstl/ 必須在支援Servlet 2.4及JSP2.0以上版本的Container使用。 下載網址:http://jakarta.apache.org/taglibs/index.html 解壓縮目錄下之子目錄\standard\javadoc中即API套件說明文件。 將子目錄\standard\lib下之jstl.jar及standard.jar檔複製到伺服器站台下WEB-INF\lib中,或放在伺服器的共用程式資料夾(如Tomcat的\commom\lib),即可在JSP中使用JSTL。 將子目錄\standard\tld下之tld檔複製到WEB-INF目錄下以便日後使用。 將子目錄\standard下的standard-examples.war檔案複製到伺服器路徑下(如Tomcat的webapps),會自動部署standard-examples站台,可在該站台下瀏覽JSTL範例程式檔案。
核心標籤庫(Core Tag Library) ¾ 核心標籤庫主要功能如下 功能分類 標籤名稱 運算式操作 out, set, remove, catch
流程控制 if, choose…when…otherwise
迭代操作 forEach, forTokens Web Development Part IX JSP標準標籤庫-JSTL 2URL操作 import, url, redirect
使用核心標籤庫時使用<%@tablib %>指令,並設定prefix和uri值如下 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
運算式操作(General Expression Tags) ¾ - 顯示資料的內容
Syntax 1: with body
Syntax 2: without body Default value 屬性說明 名稱 說明 EL 型態 是否必須 預設值 value 要被顯示出來的值 Y Object 是 無 default 預設值 Y Object 否 無 escapeXml 是否轉換特殊字元如:否 Yes
value所定義的值除了一般字串外,可作簡單的數值計算,如value=”${3+5}”;亦可為表單所傳過來的參數,例如value=”${param.data}”會將標單中參數data的值顯示出來。 假如value為空值時,會顯示default所定義的值;若沒有設定default值時則會顯示一個空字串。 如escapeXml屬性不為false時,會將如下表之特殊字元等做轉換。 字元 < > ‘ “ &
Entity < > ' " & ¾ - 將變數儲存至JSP範圍中或JavaBean的屬性中 Syntax 1: 將value的值儲存到範圍為scope的varName變數中
Syntax 2: 將本體內容的資料儲存至範圍為scope的varName變數之中 ……statement body
Syntax 3: 將value的值儲存至target物件的屬性中