运行时错误:
index.jsp(12,8) PWC6038: "${sqlStatement == null}" contains invalid expression(s):
javax.el.ELException: Unable to find ExpressionFactory of type:
org.apache.el.ExpressionFactoryImpl
org.apache.jasper.JasperException: : javax.el.ELException: Unable to find ExpressionFactory of type: org.apache.el.ExpressionFactoryImpl
问题:
这就是我所拥有的
这是Murach的书中的一个简单的SQL网关
的index.jsp
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${sqlStatement == null}">
<c:set var="sqlStatment" value="select * from User" />
</c:if>
<h1>The SQL Gateway</h1>
<p>Enter an SQL statement and click the execute button. Then, information about the<br/>
statement will appear at the bottom of this page.
</p>
<p><b>SQL Statement:</b></p>
<form action="SqlGateway" method="POST">
<textarea name="sqlStatement" cols="60" rows="8">${sqlStatement}</textarea>
<br/><br/>
<input type="submit" value="Execute">
</form>
<p><b>SQL result:</b></p>
<p>${sqlResult}</p>
的web.xml
<servlet>
<servlet-name>SqlGatewayServlet</servlet-name>
<servlet-class>sql.SqlGatewayServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SqlGatewayServlet</servlet-name>
<url-pattern>/SqlGateway</url-pattern>
</servlet-mapping>
我认为servlet没有任何问题,但是如果你需要我发布它,请告诉我。
答案 0 :(得分:1)
我的el-api.jar文件可能有问题吗
您应该不在您的webapp /WEB-INF/lib
中包含任何特定于servletcontainer的JAR文件。特定于Servletcontainer的JAR文件应该由servlet-container本身提供。
查看Tomcat的/lib
文件夹,它已经提供了内部库,JSP,Servlet和EL库。您无需通过您的webapp提供任何服务。如果仍然这样做,运行时类路径可能最终会出现灾难,因为存在重复的不同版本库。在您的特定情况下,您可能通过webapp提供了一个随机下载的EL API,它与运行时类路径中找到的EL impl不匹配,因此无法通过抽象工厂模式找到正确的impl。
因此,如果您在/WEB-INF/lib
中删除了特定于servletcontainer的JAR,那么一切都应该很好。 /WEB-INF/lib
应包含仅库,这些库特定于webapp本身,并且尚未由servletcontainer提供。