EL表达式
EL基础
1. EL表达式:解析Java代码,输出在页面上
语法:${ 代码 }
2. 忽略EL表达式,进行原样输出
1.在page中添加代码,isELIgnored="true",忽略当前的jsp页面的el表达式。
例:
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="true" %>
2. \${表达式} 忽略当前el表达式。
例:
\${3>4}
3. 运算符在EL中的表示
1. 算数运算符:+ - * /(div) %(mod)
例:
${3+4}<br>
${3 div 4}<br>
2. 比较运算符:> < >= <= == !=
例:
${3>=4}<br>
3. 逻辑运算符:&&(and) ||(or) !(not)
例:
${3>4&&3<4}<br>
4. 空运算符: empty,判断字符串、集合、数组对象是否为null,并且长度是否为0
例:
<%
String str="abc";
request.setAttribute("str",str);
List list= new ArrayList();
request.setAttribute("list",list);
%>
${empty str}<%--判断是否为空、长度是否为0--%>
${not empty str}<%--判断是否不为空、长度大于0--%>
${not empty list}<br><%--判断是否不为空、长度大于0--%>
EL获取域中的数据
1. el表达式只能从域对象中获取值
2. 语法∶
1. ${域名称.键名}:从指定域中获取指定键的值
*域名称∶范围从小到大
1. pageScope--> pageContext
↓
2. requestScope--> request
↓
3. sessionScope--> session
↓
4. applicationScope --> application (ServletContext)
例:
<%
//在域中存储数据
request.setAttribute("name","张三");
session.setAttribute("name","李四");
%>
<h1>el获取值</h1>
${requestScope.name}<br>
${sessionScope.haaa}<br><%--如果不存在,则显示空字符串--%>
2. ${键名}∶
1. 表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
${name}
例:
<%
//在域中存储数据
request.setAttribute("name","张三");
session.setAttribute("name","李四");
%>
<h1>el获取值</h1>
${name}<%--从域中寻找对应的键名,输出结果为张三--%>
EL获取域中对象、List集合、Map集合的值
1. 对象∶${域名称.键名.属性名}
1. 本质上会去调用对象的getter方法,通过的是对象的属性来获取setter和getter方法,去掉set或get, 在将剩余部分,首字母变小写setName-> Name-> name
例:
<%
User user =new User();
user.setName("张三");
user.setAge(23);
user.setBirthday(new Date());
request.setAttribute("u",user);
%>
${requestScope.u.name}<hr>//张三
${u.age}<hr>//23
<%--调用对象的getYear方法--%>
${u.birthday.year}<hr>//121,21年
${u.bitStr}<hr><%--自己定义的格式化日期方法--%>//2021-10-26 15:49:33
2. List集合∶${域名称.键名[索引]}
例:
<%
User user =new User();
user.setName("张三");
user.setAge(23);
user.setBirthday(new Date());
List list= new ArrayList();
list.add("aaa");
list.add("bbb");
list.add(user);
request.setAttribute("list",list);
%>
<h3>El获取list</h3>
${list}<br>\\[aaa, bbb, cn.study.web.domain.User@3d42ebc7]
${list[0]}<br>\\aaa
${list[1]}<br>\\bbb
${list[2].name}<br>\\张三
${list[10]}<br><%--EL处理脚标的异常,显示为空--%>\\空的字符串
<hr>
3. Map集合∶
1. 第一种方法
${域名称.键名.key名称}
2. 第二种方法
${域名称.键名.["key"]}
例:
<%
User user =new User();
user.setName("张三");
user.setAge(23);
user.setBirthday(new Date());
Map map = new HashMap();
map.put("name","李四");
map.put("gender","男");
map.put("user",user);
request.setAttribute("map",map);
%>
<h3>El获取map</h3>
${map.gender}<br><%--写法一--%>\\男
${map["gender"]}<br><%--写法二--%>\\男
${map.user.name}<br>\\张三
<hr>
EL隐式对象
1. el表达式中有11个隐式对象,pageContext:获取取其他8个内置对象
1. 获取request
${pageContext.request}
2. 动态获取虚拟目录
${pageContext.request.contextPath}
总结:自己的学习心得,供以后复习使用