1. 概念
Expression Language 表达式语言
2. 作用
替换和简化 jsp 页面中 java 代码的编写
3. 语法
${表达式}
4. 注意
jsp默认支持el表达式的。
忽略**el**表达式:
1. 设置`jsp`中`page`指令中:`isELIgnored="true"` 忽略当前`jsp`页面中所有的`el`表达式1. `\${表达式} `:忽略当前这个`el`表达式
5. 🚩使用
5.1. 运算
1. 算数运算符: `+ - * / %`- 其中 `/ `可用 `div `代替- 其中 `% `可用 `mod `代替2. 比较运算符: `> < >= <= == !=`
3. 逻辑运算符: &&(and) ||(or) !(not)
4. 空运算符: empty
功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
${empty list}:判断字符串、集合、数组对象是否为null或者长度为0
${not empty str}:表示判断字符串、集合、数组对象是否不为null并且 长度>0
<%String name="张三"request.setAttribute("name",name);%>${empty name} //false${not empty name} //true
5.2. 获取值
1. `el` 表达式只能从域对象中获取值
2. 语法:
1. ${域名称.键名}:从指定域中获取指定键的值
域名称:
1. pageScope —> pageContext
2. requestScope —> request
3. sessionScope —> session
4. applicationScope —> application(ServletContext)
举例:在request域中存储了name=张三
获取:**${requestScope.name}**
2. ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
3. 获取对象、List集合、Map集合的值
1. 对象:
${域名称.键名.属性名}
- 本质上会去调用对象的getter方法
/*** class user*///1.定义类public class user{private String name;private int age;private Date Birthday;//...set and get Method}/*** index.jsp*///2.定义对象,并存储<%User user=new User();user.setName("张三");user.setAge(23);user.setBirthday(new Date());request.setAttribute("u",user);%>//3.调用对象${requestScope.u} //输出: @hashcode${u.name} //输出: 张三${u.Birthday.getYear}
2. `List` 集合:<br />** ${域名称.键名[索引]}**
//1.定义List对象,并存储信息<%List list=new ArrayList();list.add("aaa");list.add("bbb");request.setAttribute("list",list);%>//2.调用对象${list} //输出: [aaa,bbb]${list[0]} //输出: aaa${list[1]} //输出: bbb${list[3]} //输出: 越界什么也不输出,也不报错
3. `Map` 集合:
${域名称.键名.key名称}
${域名称.键名[“key名称”]}
//1.定义Map对象,并存储信息<%Map map=new HashMap(); //啥都能存map.put("gender","张三");map.put("user",user); //存刚才的类对象request.setAttribute("map",map);%>//2.调用对象${map.gender} //输出: 张三${map["gender"]} //输出: 张三${map.user.getname} //输出: 张三
5.3. 隐式对象
el表达式中有11个隐式对象
pageContext:
获取jsp其他八个内置对象
${pageContext.request.contextPath}:动态获取虚拟目录
