报错:javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext等
可能出现问题,一个是JAR包冲突,另一个是TOMCAT版本不匹配,
因为tomcat的版本与jstl以及servlet还需要兼容,匹配如下:
servlet/jsp tomcat
2.5/2.1 6.0.18
2.4/2.0 5.5.27
2.3/1.2 4.1.39
2.2/1.1 3.3.2(archived)
-----------------------------------------------------------
servlet jsp jstl javaee
2.5 2.1 1.2 5.0
2.4 2.0 1.1 1.4
2.3 1.2 1.0 1.2
注意看下web.xml头上servlet是什么版本
1.1需要引入两个包
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
<type>jar</type>
</dependency>
1.2引入一个包就可以了
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<type>jar</type>
</dependency>
另外:
1.1中要引入这个
<%@ taglib prefix="c" uri="http://java.sun.com//jstl/core" %>
1.2中引入这个,地址不太一样
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
否则报错
org.apache.jasper.JasperException: /WEB-INF/jsp/search.jsp(18,11) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
Unable to read TLD "META-INF/c.tld" from JAR file 解决方法
删除WEB-INF/lib下面的servlet-api.jar jsp-api.jar ,java build path添加变量
server runtime
总之就是这个冲突了,如果使用maven,记得把servlet 和jsp的改为provided