jsp中c标签的使用
JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的。把常用的内容,放在这里备份一份,随用随查。尽量做到不用查,就可以随手就可以写出来。这算是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文件的顶部加入以下内容:
Java代码
- <%@ 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" %>
核心标签库
==========================================================================
JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:
1.表达式控制标签:out、set、remove、catch
2.流程控制标签:if、choose、when、otherwise
3.循环标签:forEach、forTokens
4.URL操作标签:import、url、redirect
迭代标签:
标签
-------------------------------------------------------------------
为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。
标签的语法 说明 :
语法1:迭代一集合对象之所有成员
Html代码
- var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
- 本体内容
-
语法2:迭代指定的次数
Html代码
- var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>
- 本体内容
-
标签的 属性说明 :

标签的 属性 : varStatus属性: 它的提供另外四个属性:index,count,fist和last,它们个自的意义如下:
Java代码
- 属性 类型 意义
- index number 现在指到成员的索引
- count number 总共指到成员的总和
- first boolean 现在指到成员是否为第一个
- last boolean 现在指到成员是否为最后一个
遍历 List列表:
对于一个基本类型的数组,当前元素将作为相应包装类(Integer、Float等等)的一个实例提供。
Html代码
- items="${domainList }" var="item">
-
align="center" valign="middle">${item["domain"]==null?" ":item["domain"]} |
-
align="center" valign="middle">value="${item['bind_date']}" pattern="yyyy-MM-dd HH:mm:ss"/> |
-
align="center" valign="middle">
- test="${item['domain']!=null}">
- href="javascript:;" id="${item['domain']}" class="del">
-
-
|
-
遍历Map:
对于一个java.util.Map,当前元素则作为一个java.util.Map.Entry提供。
Html代码
- test="${!empty permissionMap}">
- items="${permissionMap}" var="item">
-
${item.value.id} |
-
${item.value.urlOnClass} |
-
${item.value.urlOnMethod} |
-
-
-----------c:forEach-----------
${i }
<%
List persons = new ArrayList();
Set set = new HashSet();
Map map = new HashMap();
for(int i = 0; i < 10; i++){
Person p = new Person();
p.setId("100" + i);
p.setAge(20 + i);
p.setEmail("_" + i + "[email protected]");
p.setName("_" + i + "_name");
persons.add(p);
set.add(p);
map.put(i, p);
}
request.setAttribute("persons", persons);
pageContext.setAttribute("map", map);
%>
遍历 List:
${person.id } -- ${person.name } -- ${person.email } -- ${person.age }
遍历 Set:
${person.id } -- ${person.name } -- ${person.email } -- ${person.age } === ${status.count }, ${status.index }, ${status.first }, ${status.last }
${person.id } -- ${person.name } -- ${person.email } -- ${person.age } === ${status.count }, ${status.index }, ${status.first }, ${status.last }
遍历 Map:
key: ${person.key} -- value: ${person.value.name } -- ${person.value.email } -- ${person.value.age }
遍历字符串(使用 , 作为分隔符进行遍历):
${str }
标签
-------------------------------------------------------------------
用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔的。
标签的语法 说明 :
Html代码
- items="stringOfTokens" delims="delimiters" [var="varName"]
- [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
- 本体内容
-
标签的 属性说明 :

标签
-------------------------------------------------------------------
主要用来将变量储存至JSP范围中或是JavaBean的属性中。
标签的语法 说明 :
语法1:将value的值储存至范围为scope的 varName 变量之中
Html代码
- value="value" var="varName" [scope="{ page|request|session|application }"]/>
语法2:将本体内容的数据储存至范围为scope的 varName 变量之中
Html代码
- var="varName" [scope="{ page|request|session|application }"]>
- … 本体内容
-
语法3:将 value的值储存至 target 对象的属性中
Html代码
- value="value" target="target" property="propertyName" />
语法4:将本体内容的数据储存至target 对象的属性中
Html代码
- target="target" property="propertyName">
- … 本体内容
-
标签的 属性说明 :

1 变量维护:
(1)
:设置变量值和对象属性。语法如下:
每种设置都有两种方式,总结起来,的4种形式,如下所示:
a. 使用标记属性设置JSP变量
b. 使用标记体设置JSP变量
标记内容
c. 使用标记属性设置对象属性
d. 使用标记体设置对象属性
标记内容
-----------c:set-----------
<%--
session.setAttribute("book", "oracle");
--%>
(2):在指定作用域范围内删除变量。语法如下:
标签
-------------------------------------------------------------------
主要用来移除变量。
标签的语法 说明 :
Html代码
- var="varName" [scope="{ age|request|session|application }"] />
-----------c:remove-----------
\
2 流程控制:分为条件标签和迭代标签。
条件标签:
标签
-------------------------------------------------------------------
(1):与Java语言中的if语句的使用方法一样,但不能实现else的功能。
标签有两种语法形式,是以有无标记体来区分的。
无标签体:
有标签体:
标签体
带标记体的
欢迎光临
的用途就和我们一般在程序中用的if一样。
标签的语法 说明 :
语法1:没有本体内容(body)
Html代码
- test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
语法2:有本体内容
Html代码
- test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
- 本体内容
-
示例:
Html代码
- test="${not empty item.publish_time}">
- 内容
-
-
- test="${item['domain']!=null}">
- 内容
-
-
- test="${!empty permissionMap}">
- 内容
-
-----------c:if-----------
This is TOM!
This is TOM!
c:choose> 标签
-------------------------------------------------------------------
(2)
无法单独使用,只能作为的子标签来使用。这三个标签组合起来实现Java中的switch语句的功能。语法如下:
标签体1
标签体2
标签体3
标签的语法 说明 :
Html代码
- var="score">85
-
- test="${score>=90}">
- 你的成绩为优秀!
-
- test="${score>=70&&score<90}">
- 您的成绩为良好!
-
- test="${score>60&&score<70}">
- 您的成绩为及格
-
-
- 对不起,您没有通过考试!
-
-
-----------c:choose-----------
青年
少年
童年
幼年
3 URL管理
(1):用于对URL地址进行编码。
有标签体:
标签体
如下代码:
点我呀
生成的URL:http://localhost:8080/el/index.jsp?name=zero&age=28
无标签体:主要用于编辑上下文URL。
如下代码:
登录
若当前路径为el,则输出为:/el/logon.jsp
-----------c:url-----------