; 开篇吐槽,我去,今天本来打算在Spring MVC中用Maven添加一下JSTL的包,结果搞了一上午也是各种错误:
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
网上各种解决办法都是版本错误什么的,换个版本的Maven依赖,挂了代理都下不动,手动导了包又报了个ClassNotFound,WEB-INF下的lib也有对应的jar包,后来发现貌似是犯二了,没有导入jstl-impl,又搜了一下,这哥们正确配置Jstl的Maven依赖给了正确的Maven依赖配置:
-
<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>
其实现在看来原因是现有的项目中已经有了对jsp-api和javax.servlet-api的引用,再引入一个JSTL,JSTL也会引入自身一套的jsp-api和javax.servlet-api引用,所以需要在pom.xml中把jstl引用的jsp-api和javax.servlet-api给exclusion掉。
普通的javaee项目无非就需要3个jar包
-
<dependency>
-
<groupId>javax.servlet
</groupId>
-
<artifactId>javax.servlet-api
</artifactId>
-
<version>3.0.1
</version>
-
<scope>provided
</scope>
-
</dependency>
-
<dependency>
-
<groupId>javax.servlet.jsp
</groupId>
-
<artifactId>jsp-api
</artifactId>
-
<version>2.1
</version>
-
<scope>provided
</scope>
-
</dependency>
-
<dependency>
-
<groupId>javax.servlet
</groupId>
-
<artifactId>jstl
</artifactId>
-
<version>1.2
</version>
-
</dependency>
这里面JSTL没有jstl-impl.jar,对运行也没什么影响。。至于网上说的比较多的standard.jar标准标签库在jstl1.2以后的高版本不再需要了。
转载地址:https://blog.csdn.net/qq_29227939/article/details/52063869