EL表达式在JSP中不生效问题 |
您所在的位置:网站首页 › jsp开启el表达式 › EL表达式在JSP中不生效问题 |
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 Application4、然后保存退出,此时会弹出下面的界面,点击是即可 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 |