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}:动态获取虚拟目录