绝对uri:http://java.sun.com/jstl/core无法在web.xml或使用此应用程序部署的jar文件中解析

时间:2012-04-02 12:18:40

标签: eclipse jsp jstl taglib

我需要一些帮助,我想做一个程序并使用

if(session.getAttribute("logged")!="1"){ 
 String err="You must be logged in!!"; 
 request.setAttribute( "error", err ); 
 String nextJSP = "/login.jsp"; 
 RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP); 
dispatcher.forward(request,response); }

%GT;

在jsp中,但是我的老板告诉我使用jstl所以我把它改成了:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
 <c:if test="${session.getAttribute('logged')!=null}"> 
      <jsp:forward page="login.jsp">
      </jsp:forward>
 </c:if>
 <c:if test="${session.getAttribute('logged')==null}">
      <jsp:forward page="princ.jsp"> </jsp:forward>
 </c:if>

我得到了一个令人讨厌的错误:

 "org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application " 

我在互联网上搜索了一些修复,我把javax.servlet.jsp.jstl-api-1.2.1-javadoc.jar放在我的库中,甚至把javaee.jar放在Tomcat库中,但仍然得到了没有解决方案,有人可以帮我吗? PS:我为Web开发人员提供了Eclipse Java EE IDE。(INDIGO)Tomcat 7.08

3 个答案:

答案 0 :(得分:7)

您的taglib URI错误。

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

此URI来自旧的EOL'ed JSTL 1.0库。从JSTL 1.1开始,在路径中需要额外的/jsp,因为taglib的内部工作已经改变,因为EL部分已从JSTL移动到JSP:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

此外,您尝试放入/WEB-INF/lib的JAR文件是错误的。 javax.servlet.jsp.jstl-api-1.2.1-javadoc.jar仅包含JSTL javadoc,javaee.jar包含可能是desastreus的整个Java EE API,因为Tomcat已经部署了它(JSP / Servlet),可能conflict

全部删除它们。您需要jstl-1.2.jar文件。

另见:

答案 1 :(得分:1)

我认为你应该包括jstl impl jar。这是我发现的罐子的一个位置:

JSTL Impl jar

答案 2 :(得分:1)

此外,而不是

<c:if test="${session.getAttribute('logged')!=null}">  

使用以下其中一项

<c:if test="${sessionScoped.logged != null}">  
<c:if test="${sessionScoped[logged] != null}">
<c:if test="${logged != null}">