EL表达式在JSP中不生效问题

您所在的位置:网站首页 jsp开启el表达式 EL表达式在JSP中不生效问题

EL表达式在JSP中不生效问题

2023-12-22 02:18| 来源: 网络整理| 查看: 265

1、问题描述

servlet代码如下:

el-demo.jsp代码如下:

正常情况下用浏览器访问到的结果为:

而我访问到的情况如下:

问题:JSP在用EL表达式的时候,EL表达式不起作用,比如我遇到的情况(访问不到集合中的数据)

2、问题起因

servlet版本过低,在默认情况下,Servlet 2.3 (及之前版本)/ JSP 1.2(及之前版本)是不支持EL表达式的,而Servlet 2.4 / JSP 2.0支持。 servlets 2.4这个版本(以及之后的版本)的isELIgnored默认设置为false。而servlets2.3以及之前的版本isELIgnored默认值为true。就导致了出现EL表达式无效的情况。

3、解决方案

方式1

在需要使用EL表达式的页面加上下面的指令,这个方法使用的时候,每一个用到EL的jsp文件中都需要添加这行代码。

例如下图中的样子:

方式2

在项目结构中删除web.xml文件,然后重新添加该文件,删除重建的步骤请看下方链接中的修改web.xml文件标题下的内容

链接:maven搭建web项目步骤_maven怎么运行web项目_AIains的博客-CSDN博客

重新添加后的web.xml文件内容如下:

3、方式1和方式2的缺点

方式1使用的过程中,如果这个页面需要用到EL表达式,就必须在这个页面中添加那一行配置。

方式2使用的过程中,每次创建一个新的项目的时候,都需要删除重建web.xml文件。

所以方式1和方式2在使用的过程中,站在长期使用的角度来看,还是非常麻烦的,因此我们采用第三种方法来优化方式1和方式2

4、最佳解决方案

1、通过下面的路径找到下图中的jar包(路径中的红色部分是maven仓库路径,该jar包在maven仓库中)

D:\IDEA2020\Maven\maven_repository\org\apache\maven\archetypes\maven-archetype-webapp\1.4

2、然后在预览中找到src\main\webapp\WEB-INF目录下的web.xml文件,然后点中web.xml文件,右击选择编辑

3、用下面的代码替换掉web.xml文件中原来的内容

Archetype Created Web Application

4、然后保存退出,此时会弹出下面的界面,点击是即可

5、总结:

采用最佳方案之后,以后每次创建项目的时候,都不用在担心本文标题中的问题了。

关于web.xml的加载过程配置详解请参考下面链接中的文章

链接:web.xml的加载过程配置详解-腾讯云开发者社区-腾讯云

6、遗留问题

在查找资料的过程中,发现了下面的内容,虽然前面的步骤已经把问题解决了,然后对下面的内容比较好奇,但是下面的内容还未进行测试。暂且保留下来,说不定以后能够用到。

这个方法使用的时候,每一个用到EL的jsp文件中都需要添加上面刚刚提到的那行代码,为了解决此问题,可以在web.xml文件中配置下面的代码,

*.jsp false true

上面的配置就足够使用,但是网上还有跟这个有关的详细的配置,具体如下:

指定JSP文件的配置属性 jspConfiguration *.jsp false utf-8 false 指定htm文件的配置属性 jspConfiguration *.htm false utf-8 false 指定html文件的配置属性 jspConfiguration *.html false utf-8 false 上面配置过程中的属性说明: :设定的说明 :设定名称 :设定值所影响的范围,如:/CH2或/*.jsp :若为true,表示不支持EL语法 :若为true,表示不支持语法 :设定JSP网页的编码 :设置JSP网页的抬头,扩展名为.jspf :设置JSP网页的结尾,扩展名为.jspf



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3