Sun JSTL 常用几个核心库标签(catch,if,foreach,forTokens,import,redirect,out,set)
首先导入标签库,这个在jsp文件htnl标签前面使用下面指令就可以了。
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Uri指向jstl 里面的jar包中的 META-INF中的 c.tld文件中绑定的uri。Prefix默认使用和tld文件同名。
1.
<c:catch> 这个标签通常使用来捕获在jsp中的异常。Catch标签有几个属性。
<name>var</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
其中name属性指定一个标签属性,required指明标签属性是不是必须,rtexprvalue指定是不是可以使用el表达式获取变量值,下面所有标签的这些属性都是一样的功能。
如下面代码所示。
<c:catch var="e">
<%
int x=1/0;
%>
</c:catch>
${e}
Var定义的e 指向异常对象。Catch中的执行如果出现异常,就会捕获,上面用一个el表达式输出异常。显示效果如下。
2.
<c:if></c:if> 一个if标签,主要用来根据一些条件来确定是否输出if标签中的标签体。
If标签的属性test
是一个boolean值,<required><rtexprvalue>的值都为true,就是说test属性是必须,并且可以使用el表达式获取。
<c:if test="${b}" scope="page" var="result">
this is true
${result}
</c:if>
上面的简单的写了if标签使用,${b}是使用el表达式获取b的值,其中b是一个boolean值,scope表示var保存域。Var中的值用来保存if结果。值为true 或者false。
3. forEach标签 主要来循环执行标签体。可以迭代map或者list还有数组。<c:forEach></c:forEach>
下面一个简单代码
Items属性用于获取迭代对象,可以使用el表达式获取。 Var表示每次迭代的变量。在下面代码中就是数组中的值。还有一个varStatus,用于记住每次迭代的对象,(这里记住是对象)可以获取迭代的一些参数。
Begin end setp 三个属性结合一起使用。Begin代表开始的位置,end表示结束位置,step表示步长,
<%
int[] nums=new int[]{1,2,3,6,8};
pageContext.setAttribute("nums",nums);
保存一个数组,用于迭代。
%>
<c:forEach items="${nums}" var="num">
${num}
</c:forEach>
<c:forEach begin="1" end="7" step="2">
hello<br>
</c:forEach>
这里结果会输出hello4次,因为步长step为2.从1到7每次间隔2.就输出4次。
4.
<c:forToken> 用于使用指定字符分割字符串
Items属性也是用于获取指定分割的字符串,可以使用el表达式获取,
Delims用于设置使用什么字符进行分割,使用var变量来保存分割的字符。
<c:forTokens items="${fortoken}" delims="," var="s">
${s}
</c:forTokens>
输出:ddf eed ggee ss
5.
<c:import> 标签 一个导入功能的标签,可以把外部资源导入,并保存在一个变量中。
Url指定一个资源路径,可以是绝对和相对。charEncoding指定输出编码,scope指定保存域。Var的值是一个String 就是在域里面保存资源的变量。
Url也可以使用这种格式。
6.
<c:redirect>标签比较简单,用来页面重定向 可以和url标签一起使用。
7.
<c:out>标签,用于输出文本,可以是实现转义功能。Value可以使用el表达式获取,
escapeXMl用于表示是不是按照字符原来格式输出,default指定一个缺省值,缺省值表示的是当value=null的时候。
上面代码将输出 <a>这个是一个测试</a>
8.
<c:set>用于设置4大域里面的变量或者属性值,可以是bean或者是map集合的
有4种用法,
这个是直接设置保存域中值的变量。
<c:set var="z">
heh
</c:set>
这种情况是没有value的情况下使用标签体设置变量值。
第三种情况,
这里是设置map集合属性的值,taget指定map对象,也可以是一个javabean对象,property代表属性值,如果没有value 可以使用标签体内容来设置,如下