今天学习mybatis的时候,发现要用到EL表达式和JSTL,所以今天花了半天时间去学习EL表达式和JSTL,现在来总结一下,方便以后查阅。

写在前面:注意 <%@ page isELIgnored=”true” %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。


1.EL表达式是什么

EL(Expression Language)。JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。


2.EL表达式的格式

  1. 用$定界,内容包含在{}中。${表达式}
  2. “.”和“[]”运算符

    • 通常情况下这两种方式可以通用,比如取得user中的name属性,${user.name}和${user[“name”]}。
    • “[]”可以用来表示集合元素中的定位,比如${booklist[1].price}。
    • 当包含特殊字符事物时候,只能用“[]”。比如${user[“first-name”]},而不能用${user.first-name}。
    • 通过变量动态取值的时候,只能用“[]”。比如${user[param]},其中param为变量。

3.EL变量

如果我们要取得user类中的name属性,那么使用jsp表达式应该这样写<%=user.getName() %>。但我们使用EL表达式就应该这样写${user.name}。

${name}表示取出某一范围内的name的值,因为我们没有指定范围,所以它会依次从Page,Request,Session,Application中进行查找,如果找到了,则返回它的值,如果没有找到,不是返回null,而是返回一个空字符串””。

它们的一一对应关系如下:

  • Page——->PageScope
  • Request——–>SessionScope
  • Session———>SessionScope
  • Application——>ApplicationScope

范围从小到大。session.getAttribute(“name”)等价于${sessionScope.name}。

这四个EL隐含对象可以读取jsp内置对象pageContext,request,session,application的setAttribute方法所设定的对象的值,但不能取得其他的相关信息。


4.EL隐式对象

EL表达式总结_网站
下面是它们的详细介绍
EL表达式总结_总结_02
EL表达式总结_EL表达式_03
EL表达式总结_EL表达式_04


5.EL运算符

EL表达式总结_Java学习之旅_05
因为EL结合JSTL,所有这里就不贴代码,下篇文章讲JSTL的时候再贴代码。



写在后面:EL的“+”运算符和Java中的“+”运算符不一样,它不能起连接字符串的作用,如果用EL表达式进行字符串的连接,要这样写 表 达 式 {表达式}。同时,EL在一定情况下能实现自动类型转换。比如字符串加一个数字,在字符串是能被转化为数值的情况下,则进行自动类型转换,否则抛出异常。

<c:out value="${\"hello \"}${\"world\"}"></c:out><br>
<c:out value="${\"2\" + 100}"></c:out><br>

输出

hello world 
102



好了,EL表达式的总结就到此。


个人博客http://www.codeliu.com,欢迎各位志同道合的朋友。