JSTL核心标签库(C标签)标签共有13个,功能上分为4类:
1.表达式控制标签:out、set、remove、catch
2.流程控制标签:if、choose、when、otherwise
3.循环标签:forEach、forTokens
4.URL操作标签:import、url、redirect
【应用】
使用核心标签前,要先引用核心标签库的语法如下:
<%@ taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core" %>
【<c:out>】
语法格式:
属性:
out标签主要用于显示数据,需要注意的是c:out标签有两个属性,一个是default,一个是escapeXml。如下:
1.default:如果没有要取得值,就显示default的内容。以下两种写法效果一样。
使用缺省值:<c:outvalue="${hello123}" default="没有值"/><br>
使用缺省值:<c:outvalue="${hello123}">没有值</c:out><br>
2.escapeXml:默认为true,则会将字符串原封不动的显示,若为false,则会将<>中的内容进行编译。如下:
//HTML字符串
request.setAttribute("welcome","<font color='red'>欢迎你来到这个世界!</font>");
<br>使用EL表达式:${welcome }
<br>使用标签,escapeXml=true:
<c:outvalue="${welcome }" escapeXml="true" />
<br>使用标签,escapeXml=false:
<c:outvalue="${welcome }" escapeXml="false" />
【<c:set>】
语法格式:
属性:
set标签相当于声明一个变量,可以在声明的时候指定作用域。
这主要取决于scope属性。
【<c:remove>】
语法格式:
属性:
而c:remove标签则是与c:set相反,恰恰是清除该变量。
<li>测试c:set,c:remove标签</li>
<br>
<c:setvalue="root" var="userid" />
userid:
<c:outvalue="${userid }">没有值</c:out>
<br>
<c:removevar="userid" />
userid:
<c:outvalue="${userid }">没有值</c:out>
<br>
【c:catch】
语法格式:
属性:
<li>c:catch标签</li><br>
<%
try {
Integer.parseInt("asdfsdf");
}catch(NumberFormatException e) {
e.printStackTrace();
out.println(e.getMessage());
}
%>
<p>
<c:catch var="msg">
<%
Integer.parseInt("asdfsdf");
%>
</c:catch>
${msg }<br>
<p>