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

ros*_*lin 5 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); }
Run Code Online (Sandbox Code Playgroud)

%>

在一个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>
Run Code Online (Sandbox Code Playgroud)

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

 "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 " 
Run Code Online (Sandbox Code Playgroud)

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

Bal*_*usC 8

您的taglib URI错误.

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
Run Code Online (Sandbox Code Playgroud)

此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" %>
Run Code Online (Sandbox Code Playgroud)

此外,您尝试插入的JAR文件/WEB-INF/lib是错误的.该javax.servlet.jsp.jstl-api-1.2.1-javadoc.jar只包含JSTL的javadoc和javaee.jar包含整个Java EE API这可能是因为desastreus Tomcat的附带已经可以它的部分(JSP/Servlet的)冲突.

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

也可以看看: