07.EL
07.EL
一、简介
- 全称:Expression Language,表达式语言,用来代替JSP表达式
- 格式:${表达式}
- 作用:主要用来获取域对象中的属性值
- EL表达式的查询规则:
- 默认会进行全域(四个域都查)查找,先从page域中开始查找,找到后直接返回,不在去其他域中查找;如果在page域中找不到,则去request域中查找,找到后直接返回,不再去session域中查找,依次类推…
- 如果最后在application域中也找不到则什么也不输出
- EL给我们提供了四个Scope对象,用来精确获取指定域中的属性值
- pageScope
- 获取page域中的属性值
- requestScope
- 获取request域中的属性值
- sessionScope
- 获取session域中的属性值
- applicationScope
- 获取application域中的属性值
- pageScope
- 当域对象中存放数据时的key比较特殊时,比如使用了减号,则需要通过[]的方式获取域中的属性值
<%Date date = new Date();//将date放到域中pageContext.setAttribute("date",date+"-");request.setAttribute("date",date+"--");session.setAttribute("date",date+"---");application.setAttribute("date",date+"----");//向域中放数据时key比较特殊的情况pageContext.setAttribute("hello-kitty","Tomcat");%>通过JSP表达式输出当前时间:<%=date%>
通过EL表达式获取当前的时间:${date}
通过EL表达式精确获取request域中的时间:${requestScope.date}
通过EL表达式获取page域中key比较特殊的属性值:${pageScope['hello-kitty']}
二、通过EL表达式获取JavaBean的属性值
- Employee类
package com.atguigu.el.beans;public class Employee {private Integer id;private String lastName;private String email;private Department dept;public Employee() {}public Employee(Integer id, String lastName, String email, Department dept) {this.id = id;this.lastName = lastName;this.email = email;this.dept = dept;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getLastName() {System.out.println("getLastName方法被调用");return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Department getDept() {return dept;}public void setDept(Department dept) {this.dept = dept;}@Overridepublic String toString() {return "Employee{" +"id=" + id +", lastName='" + lastName + '\'' +", email='" + email + '\'' +", dept=" + dept +'}';}public int getAge(){return 23;}public boolean isMarried(){return true;}public int sleepingTime(){return 6;}
}
- Department类
package com.atguigu.el.beans;public class Department {private Integer id;private String name;public Department() {}public Department(Integer id, String name) {this.id = id;this.name = name;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Department{" +"id=" + id +", name='" + name + '\'' +'}';}
}
-
1)通过对象.属性名的方式获取JavaBean的属性值
- 调用的是属性对应的get方法
- 如果对象的属性是一个其他JavaBean类型的值,可以通过继续点的方式获取属性的属性值
-
2)通过对象.get方法或is方法单词的首字母小写获取类中方法的返回值
-
3)直接通过对象.方法获取方法的返回值
<%//创建JavaBean对象Employee employee = new Employee(1,"张三","zhangsan@lisi.com",new Department(1001,"小卖部"));//将employee放到page域中pageContext.setAttribute("emp",employee);%>通过EL表达式获取employee对象的lastName属性值:${emp.lastName}
通过EL表达式获取employee对象的dept属性的name属性值:${emp.dept.name}
通过EL表达式获取employee对象中getAge方法的返回值:${emp.age}
通过EL表达式获取employee对象中isMarried方法的返回值:${emp.married}
通过EL表达式获取employee对象中sleepingTime方法的返回值:${emp.sleepingTime()}
三、EL中的11个隐含对象
-
一个我们比较熟悉的
-
pageContext
- 类型:PageContext
- 它既是JSP的隐含对象,也是EL的隐含对象
- pageContext在EL表达式中可以直接使用,如果在EL表达式中要使用JSP中的其他八个隐含对象必须通过pageContext来获取
- 通常我们通过EL表达式使用该对象获取项目的虚拟路径
通过EL表达式获取项目的虚拟路径:${pageContext.request.contextPath}
-
-
四个Scope对象
- pageScope
- 类型:Map
- 作用:获取page域中的属性值
- 类型:Map
- requestScope
- 类型:Map
- 作用:获取request域中的属性值
- 类型:Map
- sessionScope
- 类型:Map
- 作用:获取session域中的属性值
- 类型:Map
- applicationScope
- 类型:Map
- 作用:获取application域中的属性值
- 类型:Map
- pageScope
-
其他6个隐含对象
-
param
- 类型:Map
- 作用:获取请求参数
- 类型:Map
-
paramValues
- 类型:Map
- 作用:获取请求参数中一个key对应多个值的情况
- 类型:Map
-
header
- 类型:Map
- 作用:获取请求头中的信息
- 类型:Map
-
headerValues
- 类型:Map
- 作用:获取请求头中一个key对应多个值的情况
- 类型:Map
-
cookie
- 类型:Map
- 作用:根据Cookie对象的名字获取Cookie对象
- 类型:Map
-
initParam
-
类型:Map
-
作用:获取当前Web应用的初始化参数
- 前提需要先在web.xml文件中配置
<context-param><param-name>encodingparam-name><param-value>UTF-8param-value>context-param>
-
<%--Created by IntelliJ IDEA.User: 韩总Date: 2021/5/22Time: 10:36To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %>11个隐含对象 通过JSP表达式获取项目的虚拟路径:<%=request.getContextPath()%>
通过EL表达式获取项目的虚拟路径:${pageContext.request.contextPath}
通过EL表达式中的隐含对象获取请求参数:${param.username}
通过EL表达式中的隐含对象获取请求头中User-Agent的信息:${header['User-Agent']}
通过EL表达式中的隐含对象获取请求头的Cookie对象的value值:${cookie.JSESSIONID.value}
通过EL表达式中的隐含对象获取当前Web应用的初始化参数:${initParam.encoding}
-
四、empty运算符
-
EL表达式中也支持加、减、乘、除的运算
-
EL表达式中有一个常用的运算符:empty
- 1)判断JavaBean的属性是否为空串或null
- 2)集合是否为空
- 非空的表示方式
- not empty
- !empty
<%--empty运算符--%><%//创建Employee对象Employee employee = new Employee(null,"张三",null,null);//将employee放到page域中pageContext.setAttribute("emp",employee);//创建一个ListListlist = new ArrayList();//将list中添加一个employee对象list.add(employee);//将list放到page域中pageContext.setAttribute("list",list);%>使用empty运算符判断employee对象的id属性是否为null:${empty emp.id}
使用empty运算符判断employee对象的lastName属性是否为空串:${empty emp.lastName}
使用empty运算符判断list是否为空:${empty pageScope.list}
使用empty运算符判断list是否为非空:${not empty pageScope.list}
使用empty运算符判断list是否为非空:${!empty pageScope.list}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
