JSP中的EL

Posted 十三弦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP中的EL相关的知识,希望对你有一定的参考价值。

1.为什么要使用EL

  使用<jsp:getProperty>,只能访问bean属性的性质,不能访问嵌套性质。例如一个含有Dog对象的Person对象。

  当然使用脚本可以工作,但是如果不想使用脚本呢?EL(表达式语言)可以使我们不受脚本的限制。

2.使用(.)操作符和[]操作符

  使用.操作符时,第一个变量可以是一个隐式对象,也可以是一个属性。对应的,点号右边可以使一个映射键,也可以是一个bean性质。

  只有当点号邮编是左边变量的一个映射键或bean性质时,点号操作符才能正常工作。如果左边是一个数组或List,或者不遵循正常的java命名规则(例如,foo.Person等类似于类名的命名),点号无法正常使用,[]是更好的点号。

  可以这样访问元素

  可以这样访问元素

  如果中括号左边是一个数组或List,而且索引是一个String直接量,那么这个索引会强制转换为int。

  上面的两种访问方法与下面的等价

   

  

3.EL隐式对象

  EL隐式对象与JSP隐式对象不同,除了pageContext是真正的引用之外,其他隐式对象都是简单的Map(名/值对)。

4.Map作用域对象和属性绑定的对象

  使用Map,只能获得相应属性,而不能获得对象的方法。不过幸好有pageContext是真正的对象引用,可是使用它来获得更多的信息。

  比如,想要获得request对象的method属性,不能使用

  

  而要使用

  

5.作用域隐式对象的其他作用

  如果有不遵循java命名规则的String名作为属性,例如

  

  那么使用起来就有麻烦,容器会把foo当成某个作用域的属性,而且他有一个person性质,但是容器永远也找不到一个foo属性:

  

  使用作用域对象,就能使用[]操作符,这样就算是不遵循java命名规则的Sting名也能顺利使用:

  

6.禁用EL

  默认情况下EL是开启的,如果希望JSP忽略EL,必须显式地指出。所谓的禁用,只是将EL表达式以文本的方式输出:

  

  禁用后:

  

  page指令优先于DD设置。

  在页面中也可以禁用个别表达式,只需要在不需要解析的EL表达式的“$”符号前加入一个反斜杠就行,如"\\$"。

以上是关于JSP中的EL的主要内容,如果未能解决你的问题,请参考以下文章

JSP中的JSTL与EL表达式用法及区别

EL表达式总结

Java Web EL表达式

EL 和 JSTL

EL&JSTL

Jsp第九课 EL表达式的学习和使用