JSTL常用标签:
1、EL表达式可以取出Java Bean以及单个属性的值,在页面中使用${..},但是不能遍历集合。 使用JSTL可以遍历集合,因此使用EL和JSTL配合使用,基本上可以实现所有的功能。
2、在使用标签的页面中,头部需要引入文件,我的公司实际项目引入以下的标签:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
3、<c:out/>标签
用法:<c:out value="${param.Action}"></c:out>
等效于EL表达式中的${param.action},其中 <c:out/>标签有属性default以及escapeXml,如果value的值不存在会输出default的值,escapeXml为 true会对输出的内容进行编码(只对特殊字符&,“>”,"<");
<c:out value="${param.Action}" default="aaaa" ></c:out> <c:out value='${"<>"}' escapeXml="true" ></c:out>-------<>
4、<c:if/>标签
用法:<c:if test="${param.action=='add'}"></c:if>
== -----eq;
> -----gt;
< ------lt;
5、<c:choose/> 、<c:when/>、<c:otherwise/>标签
用法: <c:choose>
<c:when test="${param.action=='12'}">
when标签的输出
</c:when>
<c:otherwise>
otherwise标签的输出
</c:otherwise>
</c:choose>
6、<c:forEach/>标签
var 定义变量的名称,begin定义开始的位置,end定义结束的位置,step定义步长
(1)<c:forEach/>标签遍历List
用法:<c:forEach items="${personlist}" var="data"> <tr> <td>${data.age}</td> </tr> </c:forEach>
(2) <c:forEach/>标签遍历Map对象
Map也是集合类,但是由于Map中存储的是一对属性,因此遍历Map与遍历List、set String[]不同
<forEach items="${mapperson}" var="data">
<tr>
<td>${data.key}</td>
<td>${data.value}</td>
</tr>
</forEach>
(3)<c:forEach/>标签的varStatus属性
当前被遍历对象的信息被记录在varStatus里,通过varStatus即可获取当前遍历对象的信息。
varStatus的属性:
index:返回当前对象是第几个对象。从0开始计数。
count:返回已经遍历了多少对象。从1开始计数。
first:返回当前对象是否是第一个对象
last:返回当前对象是否是最后一个对象。
current:返回当前被遍历的对象。
begin:返回forEach标签begin属性的值。
end:返回forEach标签end属性的值。
step:返回forEach标签step属性的值。
7、<forTokens/>标签
forTokens标签与forEach标签类似,都有begin、end、step、items等属性,可以循环遍历items属性的值。
不同的是forEach标签里的items属性里面是集合类对象或者是数组,而forTokens标签里的items属性里面是字符串。 这个字符串会被delims属性内容分割成多个字符串。
<c:forTokens items="aa,bb,cc,dd" delims="," var="data" varStatus="status" begin="1" end="2">
<tr> <td>${data}</td> </tr>
</c:forTokens>
8、<c:set/>标签以及<forEach/>遍历数组
<c:set var="names" value="${fn:split(strlist,',')}"/>
<forEach var="name" items="${names}"> ${name} </forEach>
9、<c:set/>标签
能够实现写的功能。既可以声明一个不存在的对象,也可以修改一个已经存在的对象,还可以修改对象的某个属性,前提是该属性是可写的 (即有对应的setter方法)。 set标签有5个属性:
var :是set的对象名,如果该对象不存在则生成,如果存在则修改。
value:是set进去的值,可以是El表达式。
scope:声明该对象的范围,取值可以为Session 、request、page、application等,默认为page。
target:作用类似于var,不同的是target只能用来操作Java Bean或者Map。target和var的功能是互补的,二者不能同时使用。target只能接受 El表达式,而var不能接受EL表达式。 target一般与property一块使用。如果target为Java Bean,则property为Java Bean的一个属性,则不存在会抛错。 如果target为Map,则property为Map的一个Key,如果不存在会创建。 target只能修改已经存在的Java Bean的属性或者Map的内容。
var 只能设置Integer、Double、Float、String等类型的数据,而不能操作Java Bean或者Map等复杂数据类型。