EL简介 Expression Language,即表达式语言。el 是 jsp 内置的表达式语言。用以访问页面的上下文 (ServletContext)以及不同作用域 中的对象。可以取得对象的属性,或执行简单的运算或者判断操作。 el 在得到某个数据时,会自动进行数据类型转换。即 el 只能获取作用域中或者上下文中的值。下面示例是获取不到的。
1 2 3 4 5 <body > <% int i =1; %> el: ${ i } jsp: <%=i %> </body >
EL 作用 用于替代 JSP 表达式 (<%= %>) 在页面中做输出操作
EL特点
EL 只能读取数据,不能对数据进行修改
在得到一个数据时,会自动进行类型转换
如果数据为 null 则什么也不输出,有则输出
EL 与 JSP 表达式的区别
如果数据为 null,那么 jsp 显示为 null。el 则什么也不显示
el 显示的数据必须存放在域对象或上下文对象中
el 可以数据类型自动转换,jsp 则不行
El 中的域对象
JSP 域对象
EL 域对象
名称
application
applicationScope
application 域
session
sessionScope
session 域
request
requestScope
request 域
pageContext
pageScope
page 域
EL 使用 el 中如果没有指定变量的取值范围,那么默认的变量取值顺序是从小到大,即 page,request,session,application。获取语法为 ${xx}
创建一个 Student 对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 package com.itguigu.bean;public class Student { private String name; private String age; public String getName () { return name; } public void setName (String name) { this .name = name; } public String getAge () { return age; } public void setAge (String age) { this .age = age; } @Override public String toString () { return "Student [name=" + name + ", age=" + age + "]" ; } public Student (String name, String age) { super (); this .name = name; this .age = age; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <%@page import ="com.itguigu.bean.Student" %> <%@ page language ="java" contentType ="text/html; charset=UTF-8" pageEncoding ="UTF-8" %> <!DOCTYPE html> <html > <head > <meta charset ="UTF-8" > <title > Insert title here</title > </head > <body > <% Student student = new Student ("zhangsan ", "20 "); /* 放入 request 域中 */ request.setAttribute ("student ", student ); %> ${student} ${requestScope.student} ${applicationScope.student} ${sessionScope.student} ${pageScope.student} ${requestScope.student.name} ${requestScope.student.age} </body > </html >
EL 的11个隐含对象
pageContext,与 jsp 中的 pageContext 作用一样
applicationScope
sessionScope
requestScope
pageScope
param,主要用于获取 get 或者 post 中的请求参数。相当于在 jsp 中使用 request.getParameter() 方法
paramValues
header,获取请求头中的信息
headerValues
initParam,获取 servlet 初始化参数
cookie
(前 5 个和 6,8,11 使用较多)
EL 运算符 el 的运算符和 java 相比,除了具有 java 的运算符外,还有一个 empty 运算符。使用 empty,如果为空则返回 true,否则返回 false。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <% String s = "" ; request.setAttribute ("s ", s ); String s1 = null; request.setAttribute ("s1 ", s1 ); List<String> s2 = new ArrayList<String>(); request.setAttribute("s2", s2); %> ${empty s} ${empty s1} ${empty s2} ${!empty s2} ${not empty s2}