EL表达式
目录
EL表达式
格式:${ name }如果从作用域中取值,会先从小的作用域开始取,如果没有,就往下一个作用域取。 一直把四个作用域取完都没有, 就没有显示
作用:简化在jsp里面写的那些java代码。
如何使用 :
1. 取出4个作用域中存放的值。
<%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
按普通手段取值<br>
<%= pageContext.getAttribute("name")%>
<%= request.getAttribute("name")%>
<%= session.getAttribute("name")%>
<%= application.getAttribute("name")%>
<br>使用EL表达式取出作用域中的值<br>
${ pageScope.name }
${ requestScope.name }
${ sessionScope.name }
${ applicationScope.name }
- 如果域中所存的是数组 :
<%
String [] a = {"aa","bb","cc","dd"};
pageContext.setAttribute("array", a);
%>
使用EL表达式取出作用域中数组的值<br>
${array[0] } , ${array[1] },${array[2] },${array[3] }
- 如果域中锁存的是集合:
使用EL表达式取出作用域中集合的值<br>
${li[0] } , ${li[1] },${li[2] },${li[3] }
<br>-------------Map数据----------------<br>
<%
Map map = new HashMap();
map.put("name", "zhangsna");
map.put("age",18);
map.put("address","北京..");
map.put("address.aa","深圳..");
pageContext.setAttribute("map", map);
%>
- 取出Map集合的值 :
<%
Map map = new HashMap();
map.put("name", "zhangsna");
map.put("age",18);
map.put("address","北京..");
map.put("address.aa","深圳..");
pageContext.setAttribute("map", map);
%>
使用EL表达式取出作用域中Map的值<br>
${map.name } , ${map.age } , ${map.address } , ${map["address.aa"] }
2.取值细节:
- 从域中取值。 得先存值。
<%
//pageContext.setAttribute("name", "zhangsan");
session.setAttribute("name", "lisi...");
%>
<br>直接指定,到这个作用域里面去找这个name<br>
${ pageScope.name }
<br>
先从page里面找,没有去request找,再去session,最后去application <br>
${ name }
<br>指定从session中取值<br>
${ sessionScope.name }
3.取值方式 :
- 如果这份值是有下标的,那么直接使用[]
<%
String [] array = {"aa","bb","cc"}
session.setAttribute("array",array);
%>
${ array[1] } 这里array说的是attribute的name
- 如果没有下标, 直接使用 .的方式去取
<%
User user = new User("zhangsan",18);
session.setAttribute("u", user);
%>
${ u.name } , ${ u.age }
4.EL表达式支持的运算:
类别 | 运算符 |
算数运算符 | +、-、*、/ (或div)、% (或mod) |
关系运算符 | == (eq)、!= (ne)、< (lt)、> (gt)、<= (le) 、>= (ge) |
逻辑运算符 | && (and)、|| (or)、! (not) |
验证运算符 | empty |
注:优先级:
EL表达式 的11个内置对象:
${ 对象名.成员 }
和JSP共有的对象
-
pageContext:实例对应于当前页面的处理
作用域相关对象
-
pageScope:与页面作用域属性的名称和值相关联的 Map类
-
requestScope:与请求作用域属性的名称和值相关联的 Map类
-
sessionScope:与会话作用域属性的名称和值相关联的 Map类
-
applicationScope:与应用程序作用域属性的名称和值相关联的 Map类
头信息相关对象
-
header:按名称存储请求头主要值的
Map
类 -
headerValues:将请求头的所有值作为
String
数组存储的Map
类
参数信息相关对象
-
param:按名称存储请求参数的主要值的Map类
-
paramValues:将请求参数的所有值作为
String
数组存储的Map
类
-
cookie :按名称存储请求附带的 cookie 的
Map
类
全局初始化参数
-
initParam:按名称存储 Web 应用程序上下文初始化参数的
Map
类
尽管 JSP 和 EL 隐式对象中只有一个公共对象( pageContext
),但通过 EL 也可以访问其它 JSP 隐式对象。原因是 pageContext
拥有访问所有其它八个 JSP 隐式对象的特性。实际上,这是将它包括在 EL 隐式对象中的主要理由。
其余所有 EL 隐式对象都是映射,可以用来查找对应于名称的对象。前四个映射表示先前讨论的各种属性作用域。可以用它们来查找特定作用域中的标识符,而不用依赖于 EL 在缺省情况下使用的顺序查找过程。
接下来的四个映射用来获取请求参数和请求头的值。因为 HTTP 协议允许请求参数和请求头具有多个值,所以它们各有一对映射。每对中的第一个映射返回请求参数或头的主要值,通常是恰巧在实际请求中首先指定的那个值。每对中第二个映射允许检索参数或头的所有值。这些映射中的键是参数或头的名称,但这些值是 String
对象的数组,其中的每个元素都是单一参数值或头值。
cookie 隐式对象提供了对由请求设置的 cookie 名称的访问。这个对象将所有与请求相关联的 cookie 名称映射到表示那些 cookie 特性的 Cookie
对象。
最后一个 EL 隐式对象 initParam
是一个映射,它储存与 Web 应用程序相关联的所有上下文的初始化参数的名称和值。初始化参数是通过 web.xml
部署描述符文件指定的,该文件位于应用程序的 WEB-INF
目录中。
上一篇: php网页下弄一个超链接,是个pdf文档,请教如何实现。
下一篇: EL表达式