栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何安装JSTL?绝对URI:无法解析http://java.sun.com/jstl/core

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何安装JSTL?绝对URI:无法解析http://java.sun.com/jstl/core

org.apache.jasper.JasperException:绝对uri:http
:
//java.sun.com/jstl/core不能在web.xml或与此应用程序一起部署的jar文件中解析

该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" %>

此外,您的POM还通过指定了Apache的JSTL 1.1实现

taglibs:standard
。当您已经通过捆绑了JSTL 1.2 API +
impl时,这是不必要的,甚至是危险的
javax.servlet:jstl
,因为1.1和1.2显然会相互冲突。只是
只有 下列JSTL 1.2的依赖应该这样做,以安装在你的Tomcat针对性的webapp JSTL(也
设置
<scope>
provided
比如Tomcat居然不提供开箱!):

<dependency>    <groupId>javax.servlet</groupId>    <artifactId>jstl</artifactId>    <version>1.2</version></dependency>

非Maven用户可以通过将单个jstl-1.2.jar文件拖放

/WEB-INF/lib
到Web应用程序项目的文件夹中来实现相同目的(不要 在其中 拖放standard.jar或任何松散的.tld文件!)。

如果您实际上使用的是普通的Java
EE服务器(如WildFly,Payara等)而不是诸如Tomcat,Jetty等的准系统servlet容器,那么您根本不需要显式安装JSTL。普通的Java
EE服务器已经提供了JSTL。换句话说,您无需向

pom.xml
Webapp中添加JSTL 或删除任何JAR /
TLD文件。仅
provided
限定范围的Java EE坐标就足够了:

<dependency>    <groupId>javax</groupId>    <artifactId>javaee-api</artifactId>    <version><!-- 8.0, 7.0, etc depending on your server --></version>    <scope>provided</scope></dependency>

此外,您还应确保声明您

web.xml
的声明 至少 符合Servlet 2.4,因此不符合Servlet
2.3或更早的版本。否则,JSTL标记内的EL表达式将无法正常工作。选择与目标容器匹配的最高版本,并确保您的容器中没有
<!DOCTYPE>
任何位置
web.xml
。这是一个与Servlet
4.0(Tomcat 9)兼容的示例:

<?xml version="1.0" encoding="UTF-8"?><web-app    xmlns="http://xmlns.jcp.org/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"    version="4.0">    <!-- Config here. --></web-app>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号