在应用中要使用JSTL标签库以及它的表达式语言只需如下几步即可:
1. 将jstl.jar和standard.jar包含到应用程序中(WEB-INF/lib目录下);
2. 修改web.xml,在其中加入如下片段:
<taglib>
<taglib-uri>core</taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
OK,现在我们就可以使用JSTL标签以及表达式了。尽管这两部非常简单,但是还是
花了我一点时间,下面是几点要注意的地方:
1. JSTL是基于JSP技术的,因此我们Web服务器必须是一个JSP容器
2. 关于web.xml,它的头必须是这样的:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
之前我的web.xml是eclipse自动生成的,头如下所示:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD
Web Application 2.3//EN" "web-app_2_4.dtd" >
<web-app>
这样的直接后果就是页面上不支持JSTL表达式,比方说我有一个${3+7},正常情况下它应该显示为10,结果它直接显示为${3+7},为什么会这样呢?因为只有Servlet2.4才支持这种表达式的写法,所有web.xml的头必须修改。
3.standard.jar包必须要包含,实际上我们在页面中使用标签依靠的都是这个包,我们可以打开c.tld文件,随便找一段话看看,如下所示:
<tag>
<description>
Simple conditional tag that establishes a context for
mutually exclusive conditional operations, marked by
<when> and <otherwise>
</description>
<name>choose</name>
<tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class>
<body-content>JSP</body-content>
</tag>
这说明<c:choose>标签依赖于org.apache.taglibs.standard.tag.common.core.ChooseTag类,而这个类就包含在standard.jar中。
4.在jsp中使用jstl标签需要使用taglib指令,如下所示:
<%@ taglib prefix="c" uri="core" %>