一.EL表达式
1.EL语法结构
1)它最大的特点就是使用上很方便。
${sessionScope.user.sex}
所有EL 都是以 ${ 为起始、以} 为结尾的。上述EL 范例的意思是:从 Session 的范围中,取得用户的性别。假若依照之前JSP Scriptlet 的写法如下:
User user = (User)session.getAttribute("user");
String sex = user.getSex( );
EL 提供 . 和 [ ] 两种运算符来存取数据。下列两者所代表的意思是一样的:
${sessionScope.user.sex}
等于
${sessionScope.user["sex"]}
2). 和 [ ] 也可以同时混合使用,如下: ${sessionScope.shoppingCart[0].price}
3)以下两种情况,两者会有差异:
当要存取的属性名称中包含一些特殊字符,如 . 或 – 等并非字母或数字的符号,就一定要使用 [ ],例如:
${user.My-Name }
2.EL变量
EL 存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为 username的变量。因为我们并没有指定哪一个范围的 username,所以它的默认值会先从 Page 范围找,假如找不到,再依序到 Request、Session、Application 范围。假如途中找到 username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传 null
JSP2.0 技术手册
表 6-1
属性范围
在 EL 中的名称
Page
PageScope
Request
RequestScope
Session
SessionScope
Application
ApplicationScope
自动搜索顺序
3.自动类型转换
二、EL 隐含对象
1. 与范围有关的隐含对象
applicationScope,它们基本上就和JSP的pageContext、request、session和application一样。不过必须注意的是,这四个隐含对象只能用来取得范围属性值,即JSP 中的getAttribute(String name),却不能取得其他相关信息 applicationScope sessionScope requestScope pageScope 2. 与输入有关的隐含对象 param paramValues
例“”JAVA代码:
request.getParameter(String name) request.getParameterValues(String name) 在EL 中则可以使用param 和paramValues 两者来取得数据。 ${param.name} ${paramValues.name} 这里 param 的功能和 request.getParameter(String name) 相同,而 paramValues 和 request.getParameterValues(String name)相同 3. 其他隐含对象 cookie header headerValues initParam pageContext :
${pageContext.request.queryString} 取得请求的参数字符串 ${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串 ${pageContext.request.contextPath} 服务的web application的名称 ${pageContext.request.method} 取得HTTP 的方法(GET、POST) ${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0) ${pageContext.request.remoteUser} 取得用户名称 ${pageContext.request.remoteAddr } 取得用户的IP 地址 ${pageContext.session.new} 判断session 是否为新的,所谓新的session, 表示刚由server 产生而client尚未使用 ${pageContext.session.id} 取得session 的ID ${pageContext.servletContext.serverInfo} 取得主机端的服务信息
三、EL 算术运算符
1.+ 加 : ${ 17 + 5 } 22 2.* 乘 : ${ 17 * 5 } 85 3./ 或 div 除: ${ 17 / 5 } 或 ${ 17 div 5 } 3 4.% 或 mod : 余数 ${ 17 % 5 } 或 ${ 17 mod 5 } 2 四、EL 关系运算符
1.= = 或 eq :等于 ${ 5 = = 5 } 或 ${ 5 eq 5 } true 2.!= 或 ne: 不等于 ${ 5 != 5 } 或 ${ 5 ne 5 } false 3.< 或 lt :小于 ${ 3 < 5 }或 ${ 3 lt 5 } true 4.> 或 gt :大于 ${ 3 > 5 }或 ${ 3 gt 5 } false 5.<= 或 le:小于等于 ${ 3 <= 5 }或 ${ 3 le 5 } true 6.>= 或 ge :大于等于 ${ 3 >= 5 }或 ${ 3 ge 5 } false
五、EL 逻辑运算符
1.&& 或 and :交集 ${ A && B } 或 ${ A and B } true / false 2.|| 或 or :并集 ${ A || B } 或 ${ A or B } true / false 3.! 或 not :非 ${ !A } 或 ${ not A } true / false
六、EL 其他运算符
1.Empty 运算符:Empty运算符主要用来判断值是否为null或空的,例如: ${ empty param.name } 2.条件运算符 :${ A ? B : C}
3. ( ) 括号运算符 :括号运算符主要用来改变执行优先权
七、EL Functions
EL函数的语法如下: ns:function( arg1, arg2, arg3 …. argN) 其中ns 为前置名称(prefix),它必须和taglib指令的前置名称一样
