从JSP 1.1规范开始JSP就支持使用自定义标签,使用自定义标签大大降低了JSP页面的复杂度,同时增强了代码的重用性,因此自定义标签在WEB应用中被广泛使用。许多WEB应用厂商都开发出了自己的一套标签库提供给用户使用,这导致出现了许多功能相同的标签,令网页制作者无所适从,不知道选择哪一家的好。为了解决这个问题,Apache Jakarta小组归纳汇总了那些网页设计人员经常遇到的问题,开发了一套用于解决这些常用问题的自定义标签库,这套标签库被SUN公司定义为标准标签库(The JavaServer Pages Standard Tag Library),简称JSTL。使用JSTL可以解决用户选用不同WEB厂商的自定义标签时的困惑,JSP规范同时也允许WEB容器厂商按JSTL标签库的标准提供自己的实现,以获取最佳性能。
本人之前用的都是struts的标签库,其实觉得这些标签库都差不多,只是在用法上、语法上有点差别。
首先要使用JSTL标签库要先在jsp页面引进该标签库:<%@ taglib uri="http://Java.sun.com/jsp/jstl/core" prefix="c"%>
接下来就可以使用jstl标签了:
1.<c:out />标签,它是将你要在页面上显示的数据通过该标签给以显示,例如:<c:out value="hello world"/>在页面上就显示出hello world的文本内容。
2.<c:set/>标签,它可以给某些属性(session,request,application,page)或者pojo对象赋值,例如:<c:set var="userName" scope="session" >username</c:set>,就是给userName的session赋值为username。
3.<c:remove/>标签,它和<c:set/>标签相反,是将某些属性的值给移除,例如:<c:remove var="userName" scope="session"/>,表示的意思就是将名为userName的session给移除。
4.<c:if>标签,它表示一个判断,如果某事发生,就执行。例如:接着上面的<c:set/>的例子,<c:if test="${userName!=null}"><span>userName is not null</span></c:if>,表示如果userName不为空那么会输出一段userName is not null的文本。
5.<c:choose>、<c:when>、<c:otherwise>这三个标签要配合使用可以达到if-else的组合效果,可以满足一些较为复杂的条件选择。例如:
<c:choose>
<c:when test="${userName!=null}">
<span>userName is not null</span>
</c:when>
<c:otherwise>
<span>userName is null</span>
</c:otherwise>
</c:choose>
6.<c:forEach>标签,该标签是迭代标签,可以将后台传过来的集合类给迭代出来。例如:假设在后台有一个这样的list:
List<User> userList=new List<User>();
for(int i=0;i<10;i++)
{User user=new User("username"+i);
userList.add(user);
}
那么我们可以在前台通过<c:forEach>标签加以迭代:
<c:forEach items="userList" var="users">
<span>${users.userName}</span>
</c:forEach>
在该标签还有两个属性:begin、end指的是从哪个元素开始迭代、哪个元素结束迭代。