A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 大蓝鲸Java 中级黑马   /  2018-4-26 00:32  /  381 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、什么是EL?
EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,
它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。二、EL的语法${ EL表达式 }三、EL的功能1、从jsp的四个域中获取数据
例1:获取普通数据
<%
pageContext.setAttribute("name", "pValue");
request.setAttribute("name", "rValue");
session.setAttribute("name", "sValue");
application.setAttribute("name", "aValue");
%>
${ name }
注:依次从pageContext、request、session、application域中查找数据,找到即返回。
例2:获取数组的数据
<%
String[] arrs = {"李旭华","李冠希","杨凤","杨如花"};
pageContext.setAttribute("arrs", arrs);
%>
${ arrs[0] }
注:根据数组中索引获取元素
例3:获取List集合的数据
<%
List<String> list = new ArrayList<String>();
list.add("李芙蓉");
list.add("杨芙蓉");
list.add("王凤");
pageContext.setAttribute("list", list);
%>
${ list[0] }
注:根据集合的下标获取数据
例4:获取Map集合的数据
<%
Map<String,String> map = new HashMap<String,String>();
map.put("aaa","李旭华");
map.put("bbb","杨久君");
map.put("ccc","李芮");
pageContext.setAttribute("map", map);
%>
${ map.aaa }
注:根据map的key获取值
例5:获取对象的数据
<%
User user = new User(1,"aaa","123");
pageContext.setAttribute("user", user);
%>
${ user.id }
注:根据对象的属性获取值
例6:获取对象的集合的数据
<%
User user1 = new User(1,"aaa","123");
User user2 = new User(2,"bbb","123");
User user3 = new User(3,"ccc","123");
List<User> userList = new ArrayList<User>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
pageContext.setAttribute("userList", userList);
%>
${ userList[0].id }
总结:
.运算符用于获取map或对象的数据
[]运算符用于获取数组或list集合数据
EL表达式获取的对象如果是null,返回的是""2、执行运算
例1:算数运算
<%
pageContext.setAttribute("n1", "10");
pageContext.setAttribute("n2", "20");
pageContext.setAttribute("n3", "30");
pageContext.setAttribute("n4", "40");
%>
${ n1 + n2 + n3 }
注:EL表达式不支持字符串连接操作
例2:逻辑运算
<%
pageContext.setAttribute("n1", "10");
pageContext.setAttribute("n2", "20");
pageContext.setAttribute("n3", "30");
pageContext.setAttribute("n4", "40");
%>
${ n1 < n2 } - ${ n1 lt n2 }
${ n1 > n2 } - ${ n1 gt n2 }
${ n1 <= n2 } - ${ n1 le n2 }
${ n1 >= n2 } - ${ n1 ge n2 }
${ n1 == n2 } - ${ n1 eq n2 }
例3:关系运算
<%
pageContext.setAttribute("n1", "10");
pageContext.setAttribute("n2", "20");
pageContext.setAttribute("n3", "30");
pageContext.setAttribute("n4", "40");
%>
${ n1<n2 && n3<n4 } - ${ n1<n2 and n3<n4 }
${ n1<n2 || n3<n4 } - ${ n1<n2 or n3<n4 }
${ !(n1<n2) } - ${ not(n1<n2) }
例4:三元运算
<%
pageContext.setAttribute("n1", "10");
pageContext.setAttribute("n2", "20");
pageContext.setAttribute("n3", "30");
pageContext.setAttribute("n4", "40");
%>
${ n1 < n2 ? "正确"
${ user == null } - ${ empty user }
${ user != null } - ${ not empty user }
注意事项:
    如果判断的对象是null或者空字符串,都返回true。
    对于集合,即使集合对象本身不是null,没有任何元素,也返回true。3、操作WEB开发的常用的对象在EL中有11个隐式对象,可以直接在EL表达式中使用。
对象                                                类型                                                                备注
pageContext                         PageContext                                与JSP中的pageContext内置对象完全相同。
pageScope                         java.util.Map                        代表着PageContext页面范围域那个Map。
requestScope                 java.util.Map                        代表着ServletRequest请求范围域那个Map。
sessionScope                 java.util.Map                        代表着HttpSession会话范围域那个Map。
applicationScope         java.util.Map                        代表着ServletContext应用范围域那个Map。
param                                 java.util.Map                        代表着请求参数:key请求参数的名称,value请求参数的值,它是一个字符串。
paramValues                         java.util.Map                        代表着请求参数:key请求参数的名称,value请求参数的值,它是一个字符串数组。
header                                 java.util.Map                        代表着请求消息头:key头名称,value头值,它是一个字符串。
headerValues                 java.util.Map                        代表着请求消息头:key头名称,value头值,它是一个字符串数组。
cookie                                 java.util.Map                        代表客户端提交的Cookie的Map:key是cookie的name,value是cookie对象本身。
initParam                         java.util.Map                        代表着全局初始化参数(web.xml中context-param):key参数名称,value参数值。
例1:获取工程路径
${ pageContext.request.contextPath}
例2:获取指定域中的数据
<%
pageContext.setAttribute("name", "pValue");
request.setAttribute("name", "rValue");
session.setAttribute("name", "sValue");
application.setAttribute("name", "aValue");
%>
${ pageScope.name }
${ requestScope.name }
${ sessionScope.name }
${ applicationScope.name }


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马