EL : 表达式语言(Expression Language),是JSP 2.0新增加的技术规范。
1. EL基本语法
${表达式}
EL表达式可以写在HTML和JSP标签体内,也可以写在标签属性值内。
(在包含EL表达式的JSP页面中,为了使JSP页面能够识别EL表达式,有时需要采用page指令启用EL表达式)如下:
<%@ page isELIgnored="false" %>
isELIgnored属性值为true时,表示当前JSP页面禁用EL表达式;
JSP 2.0中默认使用EL表达式。
EL表达式存取值的方法很简单,例如:${userName}是取出某一范围中名称为userName的变量值。如果没有指定哪一种范围的userName,会依次从page,request,session,application范围查找。假如找到了userName,就直接返回userName的值,不再继续找下去。如果全部范围都没有找到则返回null。
变量存取范围:
⑴ pageScope:表示当前页面范围的变量
⑵ requestScope:表示一次请求范围的变量
⑶ sessionScope:表示一次会话范围内的变量
⑷ applicationScope: 表示应用范围的变量(application我的理解是服务器范围)
例如,在request中定义userName变量的值为 张三 ,EL获取userName的值如下:
<%
request.setAttribute("userName", "张三");
%>
${requestScope.userName}
2 EL表达式访问对象的属性及数组元素
EL表达式中提供“.”和“[]”两种运算符来存取数据,“[]”可以访问集合,数组的元素或者JavaBean的属性
例如:
${requestScope.User.userName}
${requestScope.User[“userName”]}
上述两者所代表的意思是一样的。
(注意:如果对象的属性名中出现了特殊字符,如“-”,“?”等,此时就必须使用“[]”) 比如:
${User.my-name}应改写为${user[“my-name”]}
3 EL表达式的隐含对象
EL表达式定义了一组隐含对象,能够方便的读取JSP环境中的数据,读取JSP作用范围变量,读取request请求报头数据,读取客户端表单或用户cookie数据等。
⑴pageContext :JSP页面的上下文,可以用来访问JSP的隐式对象,如request,response,session,out等。例如${pageContex.session}
⑵ param : 将请求参数名称映射到单个字符串数值,${param.name}相当于通过调用JSP隐式对象request.getParameter(String name)
⑶ paramValues :将请求参数名称映射到一个数值数组,它和param隐式对象非常类似,但它返回的一个字符串数组而不是单个值,可以用来获取表单中的多个值,比如复选框的值。${paramValues.name}相当于request.getParameterValues(name)
⑷cookie : 如果我们在cookie中设定一个名称为admin的值,那么可以使用${cookie.admin}来取得它。
还有header和headerValues隐含对象,这两个对象包含请求参数头部信息的集合,header变量表示单一头部信息,headerValues则表示数组型的头部信息。最后是initParam隐含对象,通过它我们能够获得Web应用的环境参数(Context),例如在web.xml有如下设置:
<context-param>
<param-name>userName</param-name>
<param-value>张三</param-value>
</context-param>
那么我们就可以直接使用${initParam.userName}来获取名称为userName值为 张三 的参数