Javaweb学习笔记——EL表达式
一、前言
EL表达式是什么?
简而言之,可以这样理解,EL表达式全名为:Exprexxsion Language,原先是JSTL 1.0为了方便存取数据而定义的语言,到了JSTL 2.0便正式成为标准之一。EL表达式的引入可以简化jsp页面中的java代码,方便存取数据等优点。提供了表示层和应用程序通信的一种机制
EL表达式的作用有:
1、获取数据
EL表达式替换jsp页面中的java代码,可以从各种类型的WEB域对象中检索java对象,获取数据,
2、执行运算
EL表达式支持逻辑运算和算术运算,可在jsp页面进行简单的运算功能,如${1+1}
3、获取WEB开发常用对象
EL表达式定义一些隐式对象,利用这些隐式对象,开发人员可以轻松获得web对象的引用,从而获得对象的数据
4、调用java方法
EL表达式运行用户自定义EL函数,可在java通过表达式调用函数
1.1、获取数据
使用EL表达式的语法为:${标识符}
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
EL表达式可以获取javaBean对象的属性,数组,Collection,Map类型集合的数据
EL常用语法:
<%@page import="java.util.Map"%> <%@page import="java.util.HashMap"%> <%@page import="java.util.ArrayList"%> <%@page import="com.el.tag.Person"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>el表达式</title> </head> <body> <% request.setAttribute("name", "升少"); %> <!--${name}等于pageContext.findAttribute("name"); --> 使用EL表达式获取数据:${name } <br/> <!--获取javabean对象中的数据 --> <% //JavaBean Person p = new Person(); p.setUname("张三"); request.setAttribute("person", p); %> 使用EL表达式获取Bean对象的数据:${person.uname } <br/> <!--获取特定对象的数据 --> <% Person p1 = new Person(); p1.setUname("李四"); Person p2 = new Person(); p2.setUname("王五"); ArrayList list = new ArrayList(); list.add(p1); list.add(p2); request.setAttribute("list", list); %> <!--获取list对象特定的数据 --> list集合的值为:${requestScope.list[0].uname } <br/> <!--循环集合 --> 循环集合产生的值:<br/> <c:forEach var="items" items="${list }"> ${items.uname }<br/> </c:forEach> <br/> <!--在jsp页面中,使用map集合 --> 在jsp页面使用map集合 <% Map<String,String> map = new HashMap<String,String>(); map.put("1", "值1"); map.put("ccc", "值2"); map.put("3", "值3"); map.put("4", "值4"); request.setAttribute("map", map); %> <!--注意:数字是特殊字符 ,不能用逗号点出数据 --> 使用el表达式读取map集合的数据:${map["1"]}与——>${map.ccc } <br/> <br/> <!--循环map集合对象 --> <c:forEach var="maps" items="${map }"> ${maps.key }=${maps.value }<br/> </c:forEach> <br/> </body> </html>
效果为: