[原创]java WEB学习笔记37:EL表达式(简介,运算符,自动类型转换,保留字,隐含对象)
1.EL 简介
1)EL 全名为 Expression Language,它原本是 JSTL 1.0 为方便存取数据所自定义的语言
2)语法:EL 语法很简单,它最大的特点就是使用上很方便:${sessionScope.user.sex}。所有 EL 都是以 ${ 为起始、以} 为结尾的。
3).与[ ] 运算符:EL 提供. 和[ ] 两种运算符来存取数据
例子:${sessionScope.user.sex} 等于 ${sessionScope.user["sex"]}
2. . 和 [] 运算符
当要存取的属性名称中包含一些特殊字符, 如 . 或 – 等并非字母或数字的符号, 就一定要使用[ ],例如:
${user.My-Name }
上述是不正确的方式,应当改为:
${user["My-Name"] }
1 <%
2 Customer cust = new Customer();
3 cust.setName("jason");
4 session.setAttribute("com.jason.customer", cust);
5 %>
6 <br>
7 <!-- 普通方法 -->
8 <%
9 Customer cust1 = (Customer) session.getAttribute("com.jason.customer");
10 String name = cust1.getName();
11 out.print(name);
12 %>
13 <br>
14 <!-- el 方式 -->
15 <!-- 在域对象中的 属性名 含有特殊字符时候,使用 [] 运算符很方便 -->
16 name:${sessionScope.com.jason.customer.name }
17 <br>
18 name:${sessionScope["com.jason.customer"].name }
3.EL 中的隐含对象
EL 存取变量数据的方法很简单,例如: ${username}。 它的意思是取出某一范围中名称为 username的变量。因为我们并没有指定哪一个范围的 username,所以它的默认值会先从 Page 范围找,假如找不到,再依序到 Request、Session、Application 范围。假如途中找到 username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传 null.
${pageScope.username} 取出 Page 范围的 username 变量
${requestScope.username} 取出 Request 范围的 username 变量
${sessionScope.username} 取出 Session 范围的 username 变量
${applicationScope.username} 取出 Application 范围的 username 变量
pageScope、requestScope、sessionScope 和 applicationScope 都是 EL 的隐含对象,由它们的名称可以很容易猜出它们所代表的意思,例如:${sessionScope.username}是取出 Session范围的 username 变量
4.EL 中的自动转变类型
${param.count + 20}
假若窗体传来 count 的值为 10 时, 那么上面的结果为 30
5.保留字
所谓保留字的意思是指变量在命名时,应该避开上述的名字,以免程序编译时发生错误