JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为 1.2.5 版。JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签函数库。Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序的阅读性、维护性和方便性。
Tomcat安装JSTL 库步骤如下:
从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。
http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
https://mvnrepository.com/artifact/javax.servlet/jstl
http://www.java2s.com/Code/Jar/j/Downloadjstljar.htm
下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下,或者通过软件(例:intellij idea)导入,导入方式如下。
点击顺序:File--->Project Structure--->Module--->Dependencies--->+
将 tld 下的需要引入的 tld 文件复制到 WEB-INF 目录下,如下所示,然后就可以开始使用。
使用方式一:
在图中所示位置添加
<%@ taglib uri="WEB-INF/c.tld" prefix="c"%>
,即可以使用
标签,其余tld文件同理。
使用方式二:
首先在 web.xml 文件中添加以下配置:
http://java.sun.com/jsp/jstl/fmt
/WEB-INF/fmt.tld
http://java.sun.com/jsp/jstl/fmt-rt
/WEB-INF/fmt-rt.tld
http://java.sun.com/jsp/jstl/core
/WEB-INF/c.tld
http://java.sun.com/jsp/jstl/core-rt
/WEB-INF/c-rt.tld
http://java.sun.com/jsp/jstl/sql
/WEB-INF/sql.tld
http://java.sun.com/jsp/jstl/sql-rt
/WEB-INF/sql-rt.tld
http://java.sun.com/jsp/jstl/x
/WEB-INF/x.tld
http://java.sun.com/jsp/jstl/x-rt
/WEB-INF/x-rt.tld
然后在每个 JSP 文件中的头部包含
标签,如引用核心标签库的语法如下,其余同理。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSTL 1.2.5 必须在支持 Servlet 2.5, JavaServer Pages 2.1 以上版本的JavaWeb容器才可使用。和jstl1.1系列一样,首先在 WEB-INF/lib 下加入如下jar包或者通过工具直接导入(1.1系列已讲):
taglibs-standard-compat-1.2.5.jar
taglibs-standard-impl-1.2.5.jar
taglibs-standard-jstlel-1.2.5.jar
taglibs-standard-spec-1.2.5.jar
在这里如果涉及到XML标记库依赖项的话,需要Apache Xalan 2.7.1或更高版本。
Apache Xalan 2.7.1
同时为解决XSLT处理的性能问题,此版本依赖于Apache Xalan实现特定的功能。下列库应该包含在应用程序的类路径中:
xalan-2.7.1.jar
serializer-2.7.1.jar
但是如果你不使用JSTL 1.0标签,那么“taglibs-standard-jstlel”JAR可以省略。如果您不使用XML库,那么Apache Xalan依赖项也可以省略;如果使用Maven构建应用程序,请将以下依赖项添加到你的pom.xml文件:
org.apache.taglibs
taglibs-standard-spec
1.2.5
org.apache.taglibs
taglibs-standard-impl
1.2.5
最后在开发的jsp页面中选择如下所需的标签即可。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="xml"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c"%>
报错。用eclipse,myeclipse,intellij idea等开发工具写jsp时如下代码报错
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/sql” prefix=“sql”%>
解决办法:缺少包,如下:
jstl 1.0系列为jstl.jar和 standard.jar; 1.2系列为taglibs-standard-impl-1.2.5.jar,taglibs-standard-spec-1.2.5.jar
可以通过tomcat\webapps\examples\WEB-INF\lib目录下找到两个jar包, 然后把这两个包复制粘贴到tomcat的lib目录下或项目的lib目录下即可。
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jstl/core cannot be resolved
,此问题发生前使用了JSTL 1.2 。解决办法:该URI适用于JSTL 1.0,但您实际上使用的是JSTL 1.2,它使用带有附加/ jsp路径的URI(因为发明EL表达式的JSTL自从1.1版本集成为JSP的一部分以便共享或重用EL)普通JSP中的逻辑也是如此。因此,请相应地修复taglib的URI为:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
如果使用maven依赖的话,对应的修改POM为:
javax.servlet
jstl
1.2