核心标签库
核心标签库包括:out , set , remove , catch , if ,forEach等.(还有choose , when 和 URL 还没研究 )
表达式操作标签: 包括:out , set , remove , catch.
out标签:
核心标签库中最为基本的标签就是<c:out>,他可以在页面中显示一个字符串或者一个EL表达式的值,其功能与JSP中的<%= 表达式%>类似
使用格式如下:
-----------------------c:out-------------------<br>
<c:out value="${user}">good morning</c:out>
<c:out value="<h1>hello world</h1>" escapeXml="true"/>
<c:out value="<h1>hello world</h1>" escapeXml="false"/>当escapeXml为false时 HTML标签有效 当为true时无效
这表示当value属性指定的object值为null时,就会显示体中指定的值,也就是default value的值,体中也可以是jsp代码.
<c:out>中各属性的说明如下:
1. value : 可以指定一个字符串作为输出内容,也可以指定为EL表达式,例如:${3+5}.
2. escapeXml : 类型为boolean , 确定 , < , > , & , ‘ , “ 等字符在结构的字符串中是否被转换成字符串实体代码,默认值是true(就是是否按html中的样式进行输出,设置true就是按照字符串原样进行输出,false就是按照html标识符进行输出)
3. default value : 可以是字符串,也可以是一个EL表达式或者jsp表达式,如果属性(value)指定的表达式或者对象为null,那么将输出这个defalut value部分的值.
set标签:
set标签用来在某个范围(request,session或者application)内设置值,或者设置某个对象的属性值.
Set标签使用格式如下:
1. 使用value 属性在一个特定的范围内指定某个变量的值,其使用格式如下:
<c:set var=”varName” value=”varValue” [scope=”page|request|session|application”]/>
2. 当使用value属性在一个特定范围内指定某各变量的值时,也可以包括一个体,他的作用与out标签体的作用一样,即value指定的值为null时,默认使用体中指定的值,使用的格式如下:
<c:set var=”varName” value=”varValue” [scope=”page|request|session|application”]>
default value
</c:set>
3. 设置某一个特定对象属性的使用格式如下:
<c:set property=”propertyName” target=”target” value=”value”/>
4. 在设置某个特定对象的一个属性时,也可以使用一个体,并且指定默认的值,使用格式如下:
<br>-----------------------c:set-------------------<br>
<c:set var="user" value="tam" scope="session"/>
<c:out value="${user}"></c:out>
<br>
<%
Map map=new HashMap();
request.setAttribute("map",map);
%>
<c:set target="${map}" property="city" value="baoding"></c:set>
<c:out value="${map.city }"></c:out>遍历MAP集合
<%
Person pe=new Person();
request.setAttribute("pe",pe);
%>
<c:set property="name" value="wo" target="${pe}"> </c:set>
<c:out value="${pe.name}"></c:out>
<br/>
该标签中的各属性说明如下:
1. value : 该属性指定变量或者对象中某个属性的值,并且可以是一个表达式.
2. var : 变量名称,value属性指定的值就保存在这个变量中.
3. scope : 设定变量的有效范围,如果不设置,默认为page.
4. target : 设置属性的一个对象,它必须是JavaBean 或者java.util.Map对象.
5. property : 设置对象中的一个属性.
remove标签
remove标签一般和set标签配套使用,两者是相对应的,remove标签用于删除某个变量或者属性,使用格式如下:
<br>-----------------------c:remove-------------------<br>
<%
session.setAttribute("date","2011.11.11");
%>
date=${date}
<br/>
<c:remove var="date"/>
<c:out value="${date}">date已经删除了</c:out>
scope可以为四个作用域
<c:remove var=”varName” [scope=”page|request|session|application”] />
Remove标签中使用的各属性说明如下:
1. scope : 设定这个需要删除的变量的所在范围.
2. var : 需要删除的变量或者对象属性的名称.
如果没有scope属性,即采用默认值,就相当于调用PageContext.removeAttribute(varName)方法,如果指定了这个变量所在的范围,那么系统会调用PageContext.removeAttribute(varName,scope)方法.
catch标签
catch标签的功能和java中的try{…}catch{…}语句的功能很相似,它用于捕获嵌入到其中间语句抛出的异常,这个标签的使用格式如下:
<br>-----------------------c:catch-------------------<br>
<c:catch var="error">
<%=1/0 %>
</c:catch>
输出异常:
<c:out value="${error}"></c:out> <br/>
异常:<c:out value="${error.message}"></c:out> <br/>
堆栈轨迹<c:out value="${error.stackTrace}"></c:out>
相关操作语句
</c:catch> --如果操作语句中出现异常,则catch会将异常保存在 varName变量中.
流程控制标签: 包括: if , choose , when , otherwise 等.
if标签
这个标签作用与java中的if语句作用相同,用于判断条件语句,主要的使用格式如下
1. 在<c:if> 体中不包括体的使用格式:
<c:if test=”checkCondition” var=”varName” scope=”page|request|session|application”/>
2. 当<c:if> 体中包括体时,使用格式如下:
<c:if test=”checkCondition” var=”varName” scope=”page|request|session|application”>
body content
</c:if>
标签中使用的属性说明:
test : 判断条件的表达式,返回类型为true 或者 false;(也就是if的条件)
var : 这个变量用于保存test条件表达式判断所返回的true或者false值
(if条件执行后所得到的boolean值将要保存在var变量中).
scope : 指定var变量所在的有效范围.
forEach迭代标签
该标签用来对一个collection集合中的一系列对象进行迭代输出,并且可以指定迭代次数,一般的使用格式如下:
<c:forEach items=”collection” var=”varName” [varstatue=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
Body content
</c:forEach>
这个标签使用的属性描述如下:
1. var : 也就是保存在collection集合类中的对象名称.
2. items : 将要迭代的集合类名.
3. varStatus : 存储迭代的状态信息,可以访问到迭代自身的信息.
4. begin : 如果指定了begin值,就表示从items[begin]开始迭代;如果没有指定begin值,则从集合的第一个值开始迭代.
5. end : 表示迭代到集合的end位时结束,如果没有指定end值,则表示一直迭代到集合的最后一位.
6. step : 指定迭代的步长.
<br>-----------------------c:forEach-------------------<br><%
List list =new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
list.add("8");
request.setAttribute("list",list);
%>
<c:forEach items="${list }" var="curElement" begin="2" end="4" step="2">
<c:out value="${curElement}"></c:out><br/>
</c:forEach>
<br/>
——————————————————————————————
<br>-----------------------c:forEach实现表格颜色-------------------<br>
<%
List list =new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
list.add("8");
request.setAttribute("list",list);
%>
<style type="text/css">
.even{background-color:#ffffcc}
.odd{background-color:#ffcc00}
tr:hover{background-color:#ffccff}
</style>
<table border="1" width="30%">
<c:forEach var="data" items="${list}" varStatus="status">
<tr class="${status.count%2==0?'odd':'even'}">
<td>${data}</td>
</tr>
</c:forEach>
</table>
这个标签的作用和Java中的StringTokenizer类的作用非常相似,通过items属性来指定一个特定的字符串,然后通过delims属性指定一种分隔符(可以同时指定多个),通过指定的分隔符把items属性指定的字符串进行分组,与forEach标签一样,forTokens标签也可以指定begin和end以及step属性值.
使用格式如下:
<c:forTokens items=”stringOfTokens” delims=”delimiters” var=”varName” [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
Body content
</c:forTokens>
标签中的各个属性描述如下:
1. var : 进行迭代的参数名称.
2. items : 指定的进行标签化的字符串.
3. varSatus : 每次迭代的状态信息.
4. delims : 使用这个属性指定的分隔符来分隔items指定的字符串.
5. begin : 开始迭代的位置.
6. end : 迭代结束的位置.
7. step : 迭代的步长.
<c:forTokens items="2011-11-10" delims="-" var="token">
<c:out value="${token}"/>
</c:forTokens>
<c:forTokens items="1234567890" delims="358" var="token">
<c:out value="${token}"/>
</c:forTokens>