J2EE 5 的项目没有这个问题 , 如果是J2EE 6 的项目就会出现这个问题。
J2EE 5之后就只有jstl.jar这一个jar包了,没有standard.jar包,tld文件也打包到jar里面去了
J2EE 6项目出现该问题,是因版本问题:
JSTL 1.0 的声明是:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core " %>
JSTL1.1 的声明是:
<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core %>
现在jstl 1.2 版本了,页面中还是用<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core %>这种方式。
网上很多在web.xml文件里配置jsp-config的解决方式也是浮云。
解决方法一:
MyEclipse或Eclipse项目中有jstl.jar包,但在tomcat发布的应用WEB-INF/lib下不存在该jar包,可以手动复制该jar包过去就可解决。
这样可以解决问题,但视乎有点麻烦。
解决方法二:
将已添加的jstl-1.2.jar删掉,使用taglibs-standard-impl-1.2.1.jar、taglibs-standard-spec-1.2.1.jar代替,然后重新部署、启动、运行,你会发现运行成功
本人是在使用maven工程中遇到的该问题,maven工程的解决方法如下:
方法一:
在pom.xml文件中添加
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
</exclusion>
</exclusions>
</dependency>
方法二:
在pom.xml文件中添加
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-spec</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.1</version>
</dependency>
本人是用的第二种方法,问题解决运行正常