原因是因为maven生成的web.xml版本太低了,2.5之前web.xml文件中的头定义中,el表达式默认是忽略不解析的,故需要显示声明解析el表达式。
解决步骤一:
在需要使用EL表达式的.jsp文件头加上:
<%@ page isELIgnored="false" %>
解决步骤二:
在web.xml中配置更高的版本:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
</web-app>
另外,所需jar包:
<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
使用JSTL:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
永久解决方案:
3.2 永久解决
1.上述方法只能解决一个项目问题,但是我们并不想每次创建web项目都要像上面一样,很麻烦,所以我们这里永久性解决
2.我们创建web项目的时候发现使用:分隔了一个路径和jar包名称,前者其实就是Maven仓库坐标,后者就是web项目核心jar包
3.根据提供的坐标(路径)找到maven-archetype-webapp这个jar包
我的路径:d:\maven\MavenRepository\.m2\repository\org\apache\maven\archetypes\maven-archetype-webapp\1.3\
4.我们使用压缩软件打开这个jar包,注意是打开而不是解压,如使用2345好压打开,依次进入以下路径到WEB-INF目录中就可以看到有一个web.xml文件
选择打开
依次进入maven-archetype-webapp-1.3.jar\archetype-resources\src\main\webapp\WEB-INF目录中,找到web.xml
5.双击打开,注意不是解压!将此web.xml的头内容替换为我们需要的头信息(也可以直接删除这个web.xml,然后直接从Tomcat安装目录下的webapp/ROOT/WEB-INF中将web.xml给复制过来替换原来的web.xml),两种方式都行
6.修改完成,保存,然后关闭打开的文件,这个时候压缩软件会提示信息已经改变,是否重新压缩,选择是,修改完成
7.重新创建web工程,出现的web.xml就是我们刚刚修改的web.xml
参考地址:
https://blog.youkuaiyun.com/sinat_34104446/article/details/82895337