日期:2014-05-16  浏览次数:20488 次

JSTL 常用标签属性

??? JSTL 全名为Java Server Pages Standard Tag Library(JSP Standard Tag Library),它的中文名称为JSP 标准标签函数库。Web 程序开发人员能够利用JSTL和EL来开发Web 程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序可读性、维护性和方便性。
??? JSTL是一个标准的已制定好的标签库,可以应用于各种领域,如:基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等。JSTL所提供的标签函数库主要分为五大类:
??? (1)核心标签库 (Core tag library)
??? (2)I18N 格式化标签库 (I18N-capable formatting tag library)
??? (3)SQL 标签库 (SQL tag library)
??? (4)XML 标签库 (XML tag library)
??? (5)函数标签库 (Functions tag library)
??? JSTL 前缀 URI
??? 核心标签库 c http://java.sun.com/jsp/jstl/core
??? I18N格式化标签库 fmt http://java.sun.com/jsp/jstl/fmt
??? SQL标签库 sql http://java.sun.com/jsp/jstl/sql
??? XML标签库 xml http://java.sun.com/jsp/jstl/xml
??? 函数标签库 fn http://java.sun.com/jsp/jstl/functions
??? 若要在JSP 网页中使用JSTL,一定要先做下面这行声明:
??? <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
??? 核心标签库 (Core tag library)
??? Core 标签库,又被称为核心标签库,该标签库的工作是对于 JSP 页面一般处理的封装。在该标签库中的标签一共有 14 个,被分为了四类,分别是:
?? 通用核心标签: <c:out> 、 <c:set> 、 <c:remove> 、 <c:catch> 。
?? 条件控制标签: <c:if> 、 <c:choose> 、 <c:when> 、 <c:otherwise> 。
?? 循环控制标签: <c:forEach> 、 <c:forTokens> 。
?? URL 相关标签: <c:import> 、 <c:url> 、 <c:redirect> 、 <c:param> 。

一、通用核心标签:<c:out>, <c:set>, <c:remove>, <c:catch>
1.<c:out>
?? <c:out>主要用来显示数据的内容,就像是 <%= scripting-language %> 一样,例如:Hello ! <c:out value="${username}" />。
?? 语法1:没有Body的情况
?? <c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"]/>
?? 语法2:有Body的情况
?? <c:out value="value" [excapeXml="{true|false}"]
?????? default value
?? </c:out>
?? 属性名称????? 说明???????????????????????????????? EL类型????? 必须???? 默认值
?? value????? 需要显示出来的值?????????????????????? Y Object???? 是??????? 无
?? default??? 如果value的值为null则显示default的值?? Y Object???? 否??????? 无
?? escapeXml? 是否转换特殊字符,如:<转换成&lt;????? Y boolean??? 否??????? true

?? default Object 如果value是null,那么输出这个default值。
?? 注意:
?? 表格中的EL字段,表示此属性的值是否可以为EL表达式,例如:Y表示attribute="${表达式}"为符合语法的,N 则反之。
?? Null 和错误处理:
?? 假若 value为null,会显示default 的值;假若没有设定default的值,则会显示一个空的字符串。
?? 说明:
?? 一般来说,<c:out>默认会将 <、>、’、” 和 & 转换为 &lt;、&gt;、&#039;、&#034; 和 &amp;。
?? 假若不想转换时,只需要设定<c:out>的escapeXml 属性为fasle 就可以了。
?? 范例1、<c:out value="Hello JSP 2.0 !! " />? 在网页上显示 Hello JSP 2.0 !! ;
?? 范例2、<c:out value="${ 3 + 5 }" />? 在网页上显示 8;
?? 范例3、<c:out value="${ param.data }" default="No Data" />? 在网页上显示由窗体传送过来的data 参数之值,假若没有data 参数,或data 参数的值为null 时,则网页上会显示No Data;
?? 范例4、<c:out value="<p>有特殊字符</p>" />? 在网页上显示“<p>有特殊字符</p>”;
?? 范例5、<c:out value="<p>有特殊字符</p>" escapeXml="false" />? 在网页上显示“有特殊字符”。

2.<c:set>
?? <c:set>主要用来将变量储存至JSP范围(Request, Session, Application等)中或是JavaBean的属性中(设置某个对象的属性)。
??? 语法1.使用value属性设置一个特定范围中的属性.
??????? <c:set value="value" var="varName" [scope="{page|request|session|application}"]/>
??? 语法2.使用value属性设置一个特定范围中的属性,并且带有一个Body.
??????? <c:set var="varName" [scope="{page|request|session|application}"]>
??????????? body content
??????? </c:set>
??? 语法3.设置某个特定对象的一个属性.
??????? <c:set value="value" target="target" property="propertyName"/>
??? 语法4.设置某个特定对象的一个属性,并且带有一个Body
??????? <c:set target="target" property="propertyName"/>
??????????? body content
??????? </c:set>
?? 属性名称????? 说明???????????????????????????????? EL类型????? 必须???? 默认值
?? value??????? 要被储存的值???????????????????????? Y Object????? 否??????? 无
?? var????????? 欲存入的变量名称???????????????????? N String????? 否??????? 无
?? scopevar???? 变量的JSP范围??????????????????????? N String????? 否??????? page