问题:
maven项目中,使用jsp作为显示页面时jsp页面无法显示,el表达式没有效果
分析过程:
1、检查是否导入了相关依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
</dependency>
jstl-impl,,,servlet.jsp, 导入错误改正,scope范围忘记配置
2、检查依赖是否冲突
运行:
可以显示jsp页面,el表达式没有效果
方式一:
<%@page isELIgnored="false" %>
在jsp页面上添加;缺点,多个jsp页面每一个都要添加,麻烦
方式二:
web.xml 更改
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
..............................
原理参考:为什么el表达式没有效果
web.xml的版本太低不支持el表达式
既然该web.xml不支持,换一个web.xml
愚见:
maven骨架构建的web项目没有引入解析el表达式的命名空间,xml文档结构不对解析不了;
骨架构建的web.xml文件:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
配置xml文件需得先引入命名空间和所在目录与解析文件地址,才能使用其中的各种标签,同理el也是;
jsp运行在Tomcat服务器的servlet容器中,web.xml没有配置。。。
再次运行:
还是没有效果
将
<%@taglib prefix=“c” uri=“http://java.sun.com/jstl/core” %>
改为
<%@taglib prefix=“c” uri=“http://java.sun.com/jstl/core_rt” %>
参考:解决办法
成功解决。。。。