目录
一、问题描述
1.本篇文章是亲自遇到和亲自解决,在网上找了很久找不到解决办法才按照自己的方法解决了这个问题,文章绝对不是粘贴复杂没有用系列,希望能给遇到这个问题的朋友一个帮助
2.今天使用Idea的maven创建web程序,在测试简单的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
3.在使用本解决方法之前试过以下解决办法,但是全部失败
- 将jstl包放到部署的lib目录中-失败
- 将jstl放到Tomcat的lib目录中-失败
- 版本问题,改动url的值-失败
- 将jar包单独导入然后添加依赖-失败
- 将jar包放到部署后的lib目录中-失败
二、问题原因
1.这个问题Eclipse、MyEclipse、甚至是Idea一般web应用都没有问题,就是出现在Idean使用Maven创建web应用程序中出现问题,但是并不绝对
2.如果在Eclipse、MyEclipse也遇到这个问题,同样可以参考解决
3.这个问题是taglib指定的uri找不到导致的,所以我们可以自己指定uri,也就是指定描述文件所在位置
三、问题解决
1.首先,在JSTL1.2之后,由原本的JSTL+standard两个jar包合并成了一个,这个jar包同时包含了描述文件和实现,根据自己的需要进行导入,因为两种方式到试过,问题不在jar包
- 以前低版本jstl,如果需要使用需要导入两个
- 新的只需要导入一个jar包,如taglibs-standard-impl-1.2.5.jar
2.本次解决这个问题所使用的是taglibs-standard-impl-1.2.5.jar,当然也可以导入以前的老包(记得是两个)
- 非Maven项目从官网下载:http://mirrors.hust.edu.cn/apache/tomcat/taglibs/taglibs-standard-1.2.5/taglibs-standard-impl-1.2.5.jar
- Maven项目请加入依赖:
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
</dependency>
3.下载完成或者依赖下载完成之后,找到该jar包,然后解压
4.进入压缩包中的taglibs-standard-impl-1.2.5\META-INF\中我们可以看到有如下描述文件
5.选择自己需要的描述文件放到项目的WEB-INF下,选择的时候不要选择带有1和0这样的,基本上我们选择c.tld也就是c标签通常就够用了
6.在web.xml中加入jsp-config配置,其中taglib-uri是自己需要在jsp文件中指定uri时使用,taglib-location是上一步拷贝的描述文件位置,如果是放在WEB-INF下的话就是"/WEB-INF/xxx.tld",注意需要多少个描述文件就有多少个<taglib>...</taglib>,但是只有一个<jsp-config>
<!-- 自己配置描述文件,需要多少个描述文件就配置多少 -->
<jsp-config>
<!-- 配置c描述文件-对应c标签 -->
<taglib>
<taglib-uri>http://www.codecoord.com</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://www.codecoord.com</taglib-uri>
<taglib-location>/WEB-INF/fn.tld</taglib-location>
</taglib
</jsp-config>
7.完成后在JSP文件中引用,uri记住是自己在web.xml中创建的
8.重启服务器,访问页面,成功访问,问题解决
9.总结解决流程:
- 下载taglibs-standard-impl-1.2.5 jar包
- 解压此jar包
- 进入到jar包的META-INF\中
- 拷贝描述文件如c.tld到项目的WEB-INF下
- 在web.xml中配置<jsp-config>、<taglib>、<taglib-uri>、<taglib-location>
- 在JSP文件的taglib中将uri指定为自己定义的uri
- 重启服务器,问题解决
10.如果还没有解决,欢迎留言探讨