一、引入
EL 全名为Expression Language,EL表达式主要有两个作用:
1. 获取数据
从各种类型的Web域中检索Java对象、获取数据(获取某个Web域中的对象、访问JavaBean的属性、访问list集合、访问map集合、访问数组)
2. 执行运算
EL表达式可以执行一些基本的关系运算、算数运算、逻辑运算
二、基本格式
${标识符}
注意
1、EL表达式检索Web域时,如果未指定域,则按照域的作用范围从小到大依次检索,即:pageContext->request->session->application
2、如果所检索的属性名不存在则返回空字符串
三、EL常用对象
对象名称 | 描述 |
---|---|
pageScope | 代表page域中用来保存属性的Map对象 |
requestScope | 代表request域中用来保存属性的Map对象 |
sessionScope | 代表session域中用来保存属性的Map对象 |
applicationScope | 代表application域中用来保存属性的application对象 |
pageContext | JSP页面中的pageContext对象 |
param | 表示一个保存了所有请求参数的Map对象 |
paramValues | 表示一个保存了所有请求参数的Map对象,对于每个请求参数返回的是一个String[] |
header | 表示一个保存了所有http请求头的Map对象 |
headerValues | 同上,对于每一个请求头返回的是一个String[] |
cookie | 表示一个保存了所有cookie的Map对象 |
initParam | 表示一个保存了Web应用所有初始化参数的Map对象 |
代码示例:
<%@page import="jspdemo2.Book"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--为方便测试,添加的一些数据 --%>
<%
Book[] books = new Book[]{new Book("book1",10.0),new Book("book2",20.0)};
pageContext.setAttribute("books",books,PageContext.PAGE_SCOPE);
pageContext.setAttribute("name","request_jingxin",PageContext.REQUEST_SCOPE);
pageContext.setAttribute("name","session_jingxin",PageContext.SESSION_SCOPE);
pageContext.setAttribute("name","application_jingxin",PageContext.APPLICATION_SCOPE);
request.setCharacterEncoding("utf-8");
%>
<%--获取page域的属性及获取数组中的数据 和javaBean中的属性--%>
${pageScope.books[0].title } <br/>
${pageScope.books[1].price } <br/>
<%--获取其他域的属性 --%>
${requestScope.name } <br/>
${sessionScope.name } <br/>
${applicationScope.name } <br/>
<%--利用pageContext获取其他域对象 --%>
${pageContext.request.characterEncoding } <br/>
${pageContext.session.id } <br/>
${pageContext.servletContext.serverInfo } <br/>
<%--获取请求参数 --%>
<%--没有同名的参数 --%>
${param.username } <br/>
<%--存在同名的参数 --%>
${paramValues.names } <br/>
<%--获取请求头数据 --%>
${header.host } <br/>
<%--与上一个等价 --%>
${header["host"] } <br/>
<%--属性名中有-字符的,应该使用下面的格式 --%>
${header["accept-language"] } <br/>
<%--获取Cookie --%>
${cookie.JSESSIONID.value } <br/>
<%--获取初始化参数 --%>
${initParam.user } <br/><br/>
<%--运算符的使用 --%>
${ 5/2 } <br/>
${ 5%2 } <br/>
${ 5>2 } <br/>
${ 5<=2 } <br/>
${ (5>2)&&(6>2) } <br/>
<%--检查对象是否为空 --%>
${empty initParam.user } <br/>
${initParam.user!=null?initParam.user:"hello" } <br/>
</body>
</html>