使用jstl标签时提示The absolute uri: http://java.sun.com/jsp/jstl/core cannot

本文介绍两种在Web项目中配置JSTL库的方法:一是通过直接放置JAR和TLD文件到指定目录;二是修改web.xml文件来注册TLD文件。并提供了具体的操作步骤。

http://www.360doc.com/content/11/1219/15/1007797_173395882.shtml

 

检查应用目录下WEB-INF的lib里是否有jstl.jar和standard.jar两个包(注意:两个包的版本要一致,这一点要注意,如jstl-1.1.2.jar和standard-1.0.6.jar不起效的),可以用winrar打开包查看META-INF下的MANIFEST.MF文件里Implementation-Version的值来看版本号,或者直接将tomcat应用目录下的examles里WEB-INF\lib下的两个标准库文件复制到项目的目录中。

第一种就是在Eclipse的工程中导入JSTL1.1后,下载JSTL1.1  http://jakarta.apache.org/taglibs/index.html
然后解压,把*.jar和*.tld放到/WEB-INF/lib目录下。也就是将所有的jakarta-taglibs-standard-current.zip(JSTL的类库)中的.jar和.tlb放到WEB-INF目录下的lib文件夹中,JSP文件中导入<%@ taglib prefix="c" uri="/WEB-INF/lib/c.tld" %>,经试验是可以的。

       第二种是修改web.xml,加上下面的语句:

<jsp-config>

   <taglib>

    <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>

    <taglib-location>/WEB-INF/c.tld</taglib-location>

   </taglib>

   <taglib>

    <taglib-uri>http://java.sun.com/jsp/jstl/xml</taglib-uri>

    <taglib-location>/WEB-INF/x.tld</taglib-location>

   </taglib>

   <taglib>

    <taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>

    <taglib-location>/WEB-INF/fmt.tld</taglib-location>

   </taglib>

   <taglib>

    <taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>

    <taglib-location>/WEB-INF/sql.tld</taglib-location>

   </taglib>

</jsp-config>

       JSP中导入<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>。应该就可以了……

推荐第二种^_^!

在Spring Boot项目中,启动报错`org.apache.jasper.JasperException: Cannot resolve absolute URI "http://java.sun.com/jsp/jstl/core"`,通常与JSP使用JSTL标签库无法正确解析有关。此问题的根源在于缺少JSTL实现库,或者Tomcat的JSP引擎(Apache Jasper)无法识别该URI。 ### 问题原因分析 1. **缺少JSTL依赖**:如果项目中使用JSP并包含JSTL标签(如`<c:if>`、`<c:forEach>`等),但未正确引入`javax.servlet.jsp.jstl`相关的依赖,将导致JSP编译失败。 2. **JSP运行环境配置问题**:Spring Boot默认使用嵌入式的Tomcat服务器,但嵌入式Tomcat可能未包含完整的JSP支持,尤其是在某些版本中缺少`jasper-el`或`tomcat-jasper`组件。 3. **JSTL URI映射错误**:旧版本的Tomcat或JSP实现可能无法正确映射JSTLURI,尤其是当使用`http://java.sun.com/jsp/jstl/core`而不是`http://jakarta.ee/xml/ns/jsp/jstl/core`(适用于Jakarta EE 9+)。 ### 解决方案 #### 1. 添加JSTL依赖 如果使用的是Maven项目,确保在`pom.xml`中包含以下依赖: ```xml <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> ``` 如果是Gradle项目: ```groovy implementation 'javax.servlet:jstl:1.2' ``` 此外,为了确保JSP能够正常运行,还需添加Tomcat的JSP支持依赖: ```xml <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> ``` #### 2. 启用JSP支持(适用于嵌入式Tomcat) 确保Spring Boot项目中JSP支持被正确启用。可以在`application.properties`中添加: ```properties spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp ``` 同,确保JSP文件放置在`src/main/resources/META-INF/resources/WEB-INF/jsp/`路径下。 #### 3. 修改JSTL URI(适用于Jakarta EE 9+) 从Jakarta EE 9开始,JSTL的命名空间从`http://java.sun.com/jsp/jstl/core`变更为`http://jakarta.ee/xml/ns/jsp/jstl/core`。因此,JSP文件中的标签库声明应更新为: ```jsp <%@ taglib prefix="c" uri="http://jakarta.ee/xml/ns/jsp/jstl/core" %> ``` #### 4. 检查Tomcat版本兼容性 如果使用的是外部Tomcat部署Spring Boot项目,确保Tomcat版本与JDK版本兼容。例如,Tomcat 7不完全支持JDK 8,建议升级到Tomcat 8或更高版本。 ### 示例代码 以下是一个典型的JSP页面示例,展示了如何正确引入JSTL使用`<c:forEach>`标签: ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://jakarta.ee/xml/ns/jsp/jstl/core" %> <html> <head> <title>JSTL Example</title> </head> <body> <h1>Items:</h1> <ul> <c:forEach var="item" items="${items}"> <li>${item}</li> </c:forEach> </ul> </body> </html> ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值