EL概念
EL 全名 (Expression Language 表达式语言 ) 定义了一系列隐含对象和操作符,
无须java代码便可以方便的访问 pageContext, request,session,application作用域中的对象。
-
EL表达式显示数据
1> 基本数据类型与String类型
<%
request.setAttribute(“score”,11.0);%> 成绩: ${score} 2>自定义类型 1。在页面中要显示的自定义类成员变量必须要有getter; 2。如何显示: ${key (setAttribute中的key).变量名 } 3>集合或数组
list集合
<%
List<String> namelist = new ArrayList<String>();
namelist.add("小林");
namelist.add("小王");
request.setAttribute("names",namelist);
%>
<!--输出单个-->
姓名:${names[0] }
<!--遍历集合-->
<c:forEach var="name" items=" ${names} ">
姓名:${name}
</c:forEach>
数组
<%
Student [] stuArray = {new Student(参数) , new Student(参数) };
request.setAttribute("sa",stuArray);
%>
<!--输出单个-->
姓名 :${ sa[0].属性名 }
*<!--遍历数组-->*
<c:forEach var = "student" items="${ sa }">
姓名:${ student.属性名 }
</c:forEach>
Set集合
因为这个是无法获取单个元素的,但可以使用<c:forEach></c:forEach>遍历set集合中元素
Map集合
<%
Map<String, String> teaMap = new HashMap<String, String>();
teaMap.put("语文","黄老师");
teaMap.put("数学","李老师");
request.setAttribute("teas",teaMap);
%>
<!--输出单个-->
${ teas.语文}
${teas['数学'] }
${teas["数学"] }
<!--遍历Map -->
<c:forEach var="t" items="${teas}">
姓名:${t.key}:${t.value}
</c:forEach>
<%
Map<String,String> teacherMap = new HashMap<String,String>();
teacherMap .put("2","黄老师");
teacherMap .put("3","李老师");
request.setAttribute("teachers",teacherMap);
%>
<!--输出单个-->
<!--姓名:${teachers.1} 由于key为数值,这种方式不能用 -->
姓名 :${teacher['2'] } 如果key为Integer类型,则无法获取数据
姓名 :${teacher["2"] } 如果key为Integer类型,则无法获取数据
<c:forEach var="teacher" items="${teachers}">
姓名:${teacher.key}:${teacher.value}
</c:forEach>
**特殊**
在Map集合中 key最好符合java标识符规范,如果不符合,只能通过[]来获取相应的value不能通过.来获取
Map集合的泛型不能是java基本数据类型的包装类,否则这两种都无法获取value值
表达格式
us.id也可以写作{us.id} 也可以写作us.id也可以写作{us.[“id”]} 当里面有"."等非字母或数字的符号时,就需要[]操作符例如us.id改为{us.id}改为us.id改为{us[“id”]} 当动态取值时,需要用[]操作符来做,而点操作符无法做到动态取值,例如在${sessionScope.user[index] }中,index时一个变量。
pageContext.setAttribute(“stu”,“1111”);
${pageScope.键值}其他三个类似