el表达式
el表达式主要是为了简化脚本的书写的复杂,代替<%=…%>
el表达式的作用:
- 获取存放在域中的数据
- 执行运算
- 获取常见的web的对象
- 调用java的方法
格式:
${ el 表达式 }
示例展示:
-
使用el表达式取出域中的数据
实例1:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <%--在域中放数据--%> <% pageContext.setAttribute("xingming","zhangsan"); application.setAttribute("xinmging2","lisi"); %> <%--获取域中的数据--%> ${xingming} ${xinmging2} </body> </html>
注意:el表达式和传统的脚本获取数据的区别
传统脚本的当取不到域中的数据时,会在浏览器会以null展示
el表达式在取不到域中的数据时,会以空串展示
当不同的域中存放相同的数据的的键时,可以使用下面的方法获取存放在域中的数据:
实例2:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <%--在域中放数据--%> <% application.setAttribute("data","aaaa"); request.setAttribute("data","bbbb"); session.setAttribute("data","ssss"); pageContext.setAttribute("data","pppp"); %> ${applicationScope.data} ${requestScope.data} ${sessionScope.data} ${pageScope.data} </body> </html>
-
使用el表达式取出数组中的值
获取角标为0的数组的值<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <% int arr[]={1,2,3,4,5,6,7}; pageContext.setAttribute("arrs",arr); %> ${arrs[0]} </body> </html>
-
使用el表达式取出集合中的值
通过角标获取集合中的值<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <% ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); pageContext.setAttribute("list",list); %> ${list.get(0)} </body> </html>
-
el表达式支持运算
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> ${100>10?true:false} </body> </html>
-
支持java的语法,使用java对象的方法
例如下面获取集合的长度<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <% ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); pageContext.setAttribute("list",list); %> ${list.size()} </body> </html>
-
获取双链集合中的指定的值map
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <% HashMap<String, String> map = new HashMap<>(); map.put("学生1","张三"); map.put("学生2","李四"); map.put("学生3","王五"); pageContext.setAttribute("map",map); %> <%--简化的写法--%> ${map.学生2} <%--正式的写法--%> ${map.get("学生1")} </body> </html>
-
获取是对象中定义的变量的值
在普通类定义一个用户实体类
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <% User user = new User("zhangsan",20); pageContext.setAttribute("user",user); %> ${user.name} ${user.age} </body> </html>
-
获取存放在数组中的对象的属性
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <% User user1 = new User("zhangsan",20); User user2 = new User("lisi", 23); User user3 = new User("wangwu", 24); LinkedHashMap<String, User> map = new LinkedHashMap(); map.put("s001",user1); map.put("s002",user2); map.put("s003",user3); pageContext.setAttribute("map",map); %> ${map.get("s001").name} ${map.get("s001").age} </body> </html>
-
判断一个对象是否为空,判断一个容器的长度是否为0
<%--判断这个容器是否为空--%> ${empty map} <%--判断这个容器是否不为空--%> ${not empty map}
-
el表达式的11个内置对象
- pageScope、requestScope、sessionScope、applicationScope、param、paramValues、header、haederValues、initParam、cookie
- el表达式的内部对象cookie对象
${cookie.给cookie起名字.value}
- 获取jessionion的值
${cookie.JSESSIONID.value}
-
通过el表达式获取项目的路径
${pageContext.request.contextPath}
例如:
<a href="${pageContext.request.contextPath }/demo8.jsp"></a>