EL表达式

javaWeb

一、EL表达式

Expression Language(表达式语言)

1.1 概念

书写在jsp中通过特定的语法对作用域中的数据进行快速获取,减少在jsp页面中java代码的书写,简化开发

1.2 语法

1.2.1 获取传递数据并进行自动转换

获取指定作用域数据并进行自动类型转换(因为保存的是object类型,el表达式在取出后会自动转换为放置之前的类型)
${作用域.name}
属性范围EL中的名称
pagepageScope,例如${pageScope.username},表示在page范围内查找username变量,找不到返回空字符串
requestrequstScope
sessionsessionScope
applicationapplicationScope

虽然可以通过各个作用域获取相同名字的数据,但是一般我们不会书写相同属性的数据,所以可以直接通过${name}进行获取,但是如果出现相同name可能会导致数据获取出现问题(如果没有书写作用域,那么会从小到大依次进行获取)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
<%
pageContext.setAttribute("test", "page");
request.setAttribute("test", "request");
session.setAttribute("test", "session");
application.setAttribute("test", "application");
%>

page:${pageScope.test}<br>
request:${requestScope.test}<br>
session:${sessionScope.test}<br>
application:${applicationScope.test}<br>
啥都不写:${test }
</body>
</html>

1.2.2 获取指定数据的属性

使用属性获取时是自动根据属性调用对应的get方法进行获取

对象.属性

对象[“属性”]

<%@page import="com.yunhe.el.Student"%>
<%@page import="com.yunhe.el.Teacher"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
<% 
Teacher t=new Teacher("tname","tage");
Student s=new Student("sname",18,t );
session.setAttribute("stu", s); %>

<!-- 获取并进行自动类型转换 -->
${s}

<!-- 获取指定对象后获取对应的属性  -->
=${stu.teacher.name}
<hr>
${stu["teacher"]["name"]}
</body>
</html>

1.2.3 获取集合中的数据

List集合

<%@page import="java.util.ArrayList"%>
<%@page import="com.yunhe.el.Student"%>
<%@page import="com.yunhe.el.Teacher"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
<% 
ArrayList<Teacher> list=new ArrayList<>();
list.add(new Teacher("t1","t1"));
list.add(new Teacher("t2","t2"));
list.add(new Teacher("t3","t3"));
request.setAttribute("teacherlist", list);
%>
 <!-- 获取 集合中的数据 -->
 <!-- 通过类似于数组的获取方式进行获取 -->
${teacherlist[1]}
<hr>
${teacherlist.get(1)}
</body>
</html>

map集合

<%@page import="java.util.HashMap"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.yunhe.el.Student"%>
<%@page import="com.yunhe.el.Teacher"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
<%
	HashMap<String,String> names = new HashMap<>();
    names.put("one","LiYang");
    names.put("two","WangHua");
    request.setAttribute("names",names);
%>
<!-- 可以将map集合的key当做对象的属性进行获取 -->
姓名:${names.one}<br/>
姓名:${names["two"] }<br/>
姓名:${names.get("one") }<br/>
</body>
</html>

1.2.4 El操作符

与java中的操作符使用方法一致,并提供了仅用于el的对应操作符的语法

关系操作符说明示例结果
==(或eq)等于 23 = = 5 或 {23==5}或 23==5{23 eq 5} " a " = = " a " 或 {"a" =="a"}或 "a"=="a"{“a” eq “a”}falsetrue
!=(或ne)不等于 23 ! = 5 或 {23!=5}或 23!=5{23 ne 5}true
<(或lt)小于 23 < 5 或 {23<5}或 23<5{23 lt 5}false
>(或gt)大于 23 > 5 或 {23>5}或 23>5{23 gt 5}true
<=(或le)小于等于 23 < = 5 或 {23<=5}或 23<=5{23 le 5}false
>=(或ge)大于等于 23 > = 5 或 {23>=5}或 23>=5{23 ge 5}ture
逻辑操作符说明示例结果
&&(或and)逻辑与如果A为true,B为false,则A&&B(或A and B)false
||(或or)逻辑或如果A为true,B为false,则A||B(或A or B)true
! (或not)逻辑非如果A为true,则!A (或not A)false

变量 a不存在,则${empty a}返回的结果为true
n o t e m p t y a 或 {not empty a}或 notemptya{!empty a}返回的结果为false

1.3 el隐式对象

el表达式可以对当前服务存储在指定隐式对象中的数据进行获取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mJXhpf0u-1616476712364)(day0318.assets/image-20210318112052080.png)]

对象名称说 明
pageScope返回页面范围的变量名,这些名称已映射至相应的值
requestScope返回请求范围的变量名,这些名称已映射至相应的值
sessionScope返回会话范围的变量名,这些名称已映射至相应的值
applicationScope返回应用范围内的变量,并将变量名映射至相应的值
param返回客户端的请求参数的字符串值
paramValues返回映射至客户端的请求参数的一组值
pageContext提供对用户请求和页面信息的访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值