EL(Expression Language)表达式
1) EL 概述
·EL 表达式用${ }表示,可用在所有的 HTML 和 JSP 标签中,作用是代替 JSP 页面中复杂
的 JAVA 代码.
·EL 表达式可操作常量、变量和隐式对象。
最常用的隐式对象有${param}和${paramValues}。
${param}表示返回请求参数中单个字符串的值.
${paramValues}表示返回请求参数的一组值.
pageScope 表示页面范围的变量.
requestScope 表示请求对象的变量.
sessionScope 表示会话范围内的变量.
applicationScope 表示应用范围的变量.
· <%@ page isELIgnored="true"%> 表示是否禁用 EL 语言。
TRUE 表示禁止.FALSE 表示不禁止.JSP2.0 中默认(FALSE)的启用 EL 语言.
· EL 语言可显示逻辑表达式如${true and false}结果是 false ;
关系表达式如${5>6} 结果是 false ;算术表达式如 ${5+5} 结果是 10
· EL 中的变量搜索范围是: page 、request、 session、 application 。
点运算符( . )和"[ ]"都是表示获取变量的值。 . 区别是 [ ] 可以显示非词类的变量
2) 语法结构
${expression} :必须以“ ${ ”开始,以“ } ”结束,expression 就是具体表达
式的内容。
注意:EL 表达式可以作为元素属性的值,也可以在自定义或者
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
动作元素的内容
中使用,但是不可以在脚本元素中使用。EL 表达式可适用于所有的 HTML 和
JSP 标签
3)[ ] 与 . 运算符
·EL 提供 . 和 [ ] 两种运算符来存取数据。
·当要存取的属性名称中包含一些特殊字符,如. 或 ? 等并非字母或数字的符号, 就
一定要使用 []。
例如: ${user.My-Name}应当改为${user["My-Name"] }
·如果要动态取值时,就可以用[ ]来做,而.无法做到动态取值。
例如: ${sessionScope.user[data]}中 data 是一个变量
4)变量
·EL 存取变量数据的方法很简单。
例如:${username}。它的意思是取出某一范围中名称为 username 的变量。因为我们
并没有指定哪一个范围的 username,所以它会依序从 Page、Request、Session、
Application 范围查找。假如途中找到 username,就直接回传,不再继续找下去,
但是假如全部的范围都没有找到时,就回传 null。
·属性范围在 EL 中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
5)EL 隐含对象(共有 11 个)
·与范围有关的隐含对象(4 个)
与范围有关的 EL 隐含对象包含以下四个:
pageScope、requestScope、sessionScope 和 applicationScope;
它们基本上就和 JSP 的 pageContext、request、session 和 application 一样;
在 EL 中,这四个隐含对象只能用来取得范围属性值,即 getAttribute(String name),
却不能取得其他相关信息。
例如:
我们要取得 session 中储存的一个属性 username 的值,可以利用下列方法:
session.getAttribute("username") 取得 username 的值,
在 EL 中则使用下列方法 :${sessionScope.username}
·与输入有关的隐含对象(2 个)
与输入有关的隐含对象有两个:
param和 paramValues,它们是 EL 中比较特别的隐含对象。
例如:我们要取得用户的请求参数时,可以利用下列方法:
request.getParameter(String name)
request.getParameterValues(String name)
在 EL 中则可以使用 param 和 paramValues 两者来取得数据。
${param.name}
${paramValues.name}
·其他隐含对象
1)cookie
JSTL 并没有提供设定 cookie 的动作,
例:要取得 cookie 中有一个设定名称为 userCountry 的值,
可以使用${cookie.userCountry}来取得它。
2)header 和 headerValues
header 储存用户浏览器和服务端用来沟通的数据
例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用
headerValues 来取得这些值。
3)initParam
initParam 取得设定 web 站点的环境参数(Context)
例:一般的方法 String userid = (String)application.getInitParameter("userid");
可以使用 ${initParam.userid}来取得名称为 userid
4) pageContext
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 是否为新的
${pageContext.session.id} 取得 session 的 ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
6)禁用 EL
在 JSP2 .0 以后,默认是启用 EL 表达式的,如果需要禁用表达式的话,使用 JSP 的 page
指令的 isELIgnored 属性来指定,语法:
<%@ page isELIgnored = “true | false” %>
True :表示忽略对 EL 表达式进行计算。
False(默认) :表示计算 EL 表达式
7)操作符
·算术运算符(5 个) :
+ 、— 、* 、/ 或 div(除法)、% 或 mod(取模)
·关系运算符(6 个):
= = 或 eq 、! = 或 ne 、< 或 lt 、> 或 gt 、< = 或 le 、>= 或 ge
·逻辑运算符(3 个) :
&& 或 and :与,符号两边均为 true , 则返回 true , 否则返回 false 。
|| 或 or :或,符号两边任何一边为 true , 则返回 true , 否则返回 false 。
! 或 not :非,运算结果为 true 的时候,则返回 false , 否则返回 true 。
·其它运算符(3 个) :
empty 运算符 、条件运算符 ? 、( )运算符
验证运算符(empty):empty 作为前缀,用来检索一个值是否为 null 或 empty
例:${empty user.name}用来判断 user 对象中的 name 的值是否为 null 。
条件运算符( ?) :
格式: ${ 条件 ? truevalue :falsevalue }
如果条件为真,则表达式的值为 truevalue , 否则为 falsevalue .
8)EL
函
关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函
数(functions)
语法:ns : function ( arg1, arg2, arg3 „. argN )
其中 ns 为前置名称(prefix),它必须和 taglib 指令的前置名称一置