在jsp开发中,有时会遇到EL表达式不被支持的问题。对此,下面是完整攻略:
在jsp开发中,有时会遇到EL表达式不被支持的问题。对此,下面是完整攻略:
问题背景
在jsp开发中,可以使用EL表达式来简化开发过程,但有时在使用EL表达式时会遭遇并发生“不支持EL表达式”的问题,通常会因为如下原因:
- web.xml文件缺少支持EL表达式的配置;
- 服务器版本过低,不支持EL表达式导致不生效;
- 需要使用el-api和jstl(JSP标准标签库)两个JAR包提供的支持。
解决步骤
第一步:检查配置
首先,检查web.xml文件中是否包含以下配置:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-enabled>true</el-enabled>
</jsp-property-group>
</jsp-config>
如果缺少这个配置,就会导致EL表达式无法生效,添加完配置后重新运行程序即可。
第二步:添加相关JAR包
其次,需要添加el-api和jstl两个JAR包提供的支持,以下是Maven的依赖引用配置(以JSTL 1.2为例):
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
<scope>compile</scope>
</dependency>
这里的javax.servlet-api依赖的作用是提供Servlet API相关的类,因此使用provided作用域,只在编译和测试时起作用。而javax.el-api依赖则是提供EL Expression相关的类。
添加好相关JAR包并重新编译、部署程序后,即可使用EL表达式。
示例说明
下面给出两个使用EL表达式的示例:
示例一
<c:set var="username" value="John"/>
<c:if test="${username eq 'John'}">
<p>Welcome back, ${username}!</p>
</c:if>
以上示例会在运行时判断var为username的变量是否等于‘John’,若为真则运行if块中的内容,输出 “Welcome back, John!”。
示例二
<%
pageContext.setAttribute("list", Arrays.asList(1, 2, 3, 4));
%>
<c:forEach items="${list}" var="item">
${item}<br/>
</c:forEach>
以上示例将一个整型数组转换成List,赋值给pageContext上下文,而JSTL标签库中的forEach标签则会对List中的元素进行迭代输出,逐行输出 "1 2 3 4"。
总之,只要遵循配置检查和添加JAR包的步骤,EL表达式将可以顺畅地在jsp开发中使用。
本文标题为:解决jsp开发中不支持EL问题


基础教程推荐
- springBoot详细讲解使用mybaties案例 2022-11-19
- Java Mybatis的初始化之Mapper.xml映射文件的详解 2023-04-17
- java实现单链表中的增删改 2022-11-15
- Java实现字符串和输入流的相互转换 2023-04-17
- 使用SpringBoot+EasyExcel+Vue实现excel表格的导入和导出 2022-09-03
- Java实现插入排序算法可视化的示例代码 2023-04-23
- 为什么Java单例模式一定要加 volatile 2022-11-23
- java开发ServiceLoader实现机制及SPI应用 2023-06-30
- mybatis自定义参数类型转换器数据库字段加密脱敏 2023-05-08
- SpringBoot 自定义注解异步记录复杂日志详解 2023-06-01