0
点赞
收藏
分享

微信扫一扫

【JSP开发】JSTL标签参考手册

花明 2023-06-12 阅读 34


前言

=========================================================================

JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的。把常用的内容,放在这里备份一份,随用随查。尽量做到不用查,就可以随手就可以写出来。这算是Java程序员的基本功吧,一定要扎实。

 

JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为1.1版。JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签函数库。

Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序的阅读性、维护性和方便性。

JSTL 1.1必须在支持Servlet 2.4且JSP 2.0以上版本的Container才可使用

 

 

<%@ taglib %>引入标签库

=========================================================================

1、以classPath中,加入jar包:  standard-1.1.2.jar ,  jstl-1.1.2.jar

 

2、在相目\WEB-INF\tld\文件夹中放入常用的tld文件:c.tld,fmt.tld

 

3、在jsp文件的顶部加入以下内容:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>  
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"

 

 

<c:> 核心标签库 

==========================================================================

JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:
1.表达式控制标签:out、set、remove、catch
2.流程控制标签:if、choose、when、otherwise
3.循环标签:forEach、forTokens
4.URL操作标签:import、url、redirect

 

<c:forEach> 标签

-------------------------------------------------------------------

为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。

 

 <c:forEach> 标签的语法 说明 :

语法1:迭代一集合对象之所有成员

<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
本体内容  
</c:forEach>


语法2:迭代指定的次数

<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>
本体内容  
</c:forEach>

 

<c:forEach> 标签的 属性说明 :


 

 

<c:forEach> 标签的 属性 : varStatus属性: 它的提供另外四个属性:index,count,fist和last,它们个自的意义如下:

属性                   类型                                  意义  
index                  number                    现在指到成员的索引  
count                  number                    总共指到成员的总和  
first                  boolean
last                   boolean

 

 

 <c:forEach> 遍历 List列表:

 对于一个基本类型的数组,当前元素将作为相应包装类(Integer、Float等等)的一个实例提供。

<c:forEach items="${domainList }" var="item">
<tr>
<td align="center" valign="middle">${item["domain"]==null?" ":item["domain"]}</td>
<td align="center" valign="middle"><fmt:formatDate value="${item['bind_date']}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
<td align="center" valign="middle">
<c:if test="${item['domain']!=null}">
<a href="javascript:;" id="${item['domain']}" class="del"> </a>
</c:if>
</td>
</tr>
</c:forEach>

 

 <c:forEach> 遍历Map:

 对于一个java.util.Map,当前元素则作为一个java.util.Map.Entry提供。

<c:if test="${!empty permissionMap}">
<c:forEach items="${permissionMap}" var="item">
<tr>
<td>${item.value.id}</td>
<td>${item.value.urlOnClass}</td>
<td>${item.value.urlOnMethod}</td>
</tr>
</c:forEach>
</c:if>

 

<c:forTokens> 标签

-------------------------------------------------------------------

用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔的。

 

 <c:forTokens> 标签的语法 说明 :

<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"]  
[varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
本体内容  
</c:forTokens>

 

<c:forTokens> 标签的 属性说明 :


 

 

<c:out> 标签

-------------------------------------------------------------------

主要用来显示数据的内容

 

 <c:out> 标签的语法 说明 :

语法1:没有本体(body)内容

<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />

 

语法2:有本体内容

<c:out value="value" [escapeXml="{true|false}"]>
default value  
</c:out>


<c:forEach> 标签的 属性说明 : 略

 

一般来说,<c:out>默认会将<、>、’、” 和 & 转换为 &lt;、&gt;、&#039;、&#034; 和&amp;。假若不想转换时,只需要设定<c:out>的escapeXml属性为fasle就可以了。

 

 

<c:set> 标签

-------------------------------------------------------------------

主要用来将变量储存至JSP范围中或是JavaBean的属性中。

 

 <c:set> 标签的语法 说明 :

语法1:将value的值储存至范围为scope的 varName 变量之中

<c:set value="value" var="varName" [scope="{ page|request|session|application }"]/>

 

语法2:将本体内容的数据储存至范围为scope的 varName 变量之中


<c:set var="varName" [scope="{ page|request|session|application }"]>
… 本体内容  
</c:set>

 

语法3:将 value的值储存至 target 对象的属性中

<c:set value="value" target="target" property="propertyName" />

语法4:将本体内容的数据储存至target 对象的属性中

<c:set target="target" property="propertyName">
… 本体内容  
</c:set>

 

<c:set> 标签的 属性说明 :


 

 

<c:remove> 标签

-------------------------------------------------------------------

主要用来移除变量。

 

 <c:remove> 标签的语法 说明 :

<c:remove var="varName" [scope="{ age|request|session|application }"] />

 

<c:catch> 标签

-------------------------------------------------------------------

主要用来处理产生错误的异常状况,并且将错误信息储存起来。

 

 <c:catch> 标签的语法 说明 :

<c:catch [var="varName"] >
… 欲抓取错误的部分  
</c:catch>

 

<c:if> 标签

-------------------------------------------------------------------

的用途就和我们一般在程序中用的if一样。

 

 <c:if> 标签的语法 说明 :

语法1:没有本体内容(body)

<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>

语法2:有本体内容

<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
本体内容  
</c:if>

示例:

<c:if test="${not empty item.publish_time}">
内容  
</c:if>
  
<c:if test="${item['domain']!=null}">
内容  
</c:if>
  
<c:if test="${!empty permissionMap}">
内容  
</c:if>

 

c:choose> <c:when> <c:otherwise>   标签

-------------------------------------------------------------------

 <c:choose when otherwise> 标签的语法 说明 :

<c:set var="score">85</c:set>
<c:choose>
<c:when test="${score>=90}">
你的成绩为优秀!  
</c:when>
<c:when test="${score>=70&&score<90}">
您的成绩为良好!  
</c:when>
<c:when test="${score>60&&score<70}">
您的成绩为及格  
</c:when>
<c:otherwise>
对不起,您没有通过考试!  
</c:otherwise>
</c:choose>

 

举报

相关推荐

0 条评论