我需要一些帮助,我想做一个程序并使用
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
答案 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。这是我发现的罐子的一个位置:
答案 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}">