- 概念:expression Language 表达式页面
- 作用:替换和简化jsp页面中的java代码的编写
- 语法:${表达式}
- jsp默认支持EL表达式,如果要忽略EL表达式:
- 设置jsp中page指令中:isELIgnored="true" 忽略当前jsp页面中所有的EL表达式
- ${表达式}:忽略当前这个EL表达式
运算符:
- 算数运算符:+ - * /(div) %(mod)
- 比较运算符:> < >= <= == !=
- 逻辑运算符:&&(and) ||(or) !(not)
- 空运算符:empty
- 功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
- ${empty list}:判断字符集、集合、数组对象是否为null或者长度是否为0
- ${not empty str}:判断字符串、集合、数组对象是否不为null并且长度>0
算数运算符
${3 + 4}
${3 / 4}
${3 div 4}
${3 % 4}
${3 mod 4}
输出:
-
EL表达式只能从域对象中获取值
-
语法:
- ${域名称.键名}:从指定域中获取指定键的值
- 域名称:
- pageContext -->pageContext
- requestScope -->request
- sessionScope -->session
- appliactionScope -->application(ServletContext)
- 域名称:
- ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止
<%@ page contentType="text/html;charset=UTF-8" language="java" %>Title <% request.setAttribute("name","超"); session.setAttribute("age",19); session.setAttribute("name",19); %> ${requestScope.name} <%--超--%> ${requestScope.nasd} <%--无输出--%> ${sessionScope.age} <%--19--%> ${name} <%--超--%> ${age} <%--19--%>- 获取对象、List集合、Map集合的值
- 对象:${域名称.键名.属性名}(本质上是调用对象的getter方法)
- List集合:${域名称.键名.[索引]}
- Map集合:
- ${域名称.键名.key名称}
- ${域名称.键名.["key名称"]}
- ${域名称.键名}:从指定域中获取指定键的值
实例1:
User.java:
package cn.chao.web;
import java.text.SimpleDateFormat;
import java.util.Date;
public class User {
private String name;
private int age;
private Date birthday;
public String getBirstr() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd号 hh:mm:ss");
return sdf.format(birthday);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
elDemo3.jsp:
<%@ page import="cn.chao.web.User" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
<%
User user = new User();
user.setName("超");
user.setAge(19);
user.setBirthday(new Date());
request.setAttribute("user", user);
%>
<%--
通过的是对象的属性来获取
setterhuogetter方法,去掉set或get,再将剩余部分首字母小写
setName-->name
--%>
${requestScope.user}
${user}
${user.name}
${user.birthday}
${user.birthday.month}
${user.birstr}
输出:
cn.chao.web.User@60df5852 cn.chao.web.User@60df5852 超 Sun Oct 10 10:18:02 CST 2021 9 2021年10月10号 10:18:02
实例2:
<%@ page import="cn.chao.web.User" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
<%
User user = new User();
user.setName("超");
user.setAge(19);
user.setBirthday(new Date());
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add(user);
request.setAttribute("list", list);
Map map = new HashMap();
map.put("mname", "张三");
map.put("sex", "男");
map.put("user", user);
request.setAttribute("map", map);
%>
${list}
${list[0]}
${list[1]}
${list[2].name}
${map.mname}
${map["sex"]}
${map.user.name}
输出:
[aaa, bbb, cn.chao.web.User@741782a8] aaa bbb 超 张三 男 超
- 隐式对象:
- EL表达式中有11个隐式对象
- pageContext:获取其他八个内置对象
- ${pageContext.request.contextPath}:动态获取虚拟目录



