一.EL简介
表达式语言(Expression Language,EL)。使用表达式语言,可以方便地访问标志位
(pageContext、request、session、application)中的属性内容,这样可以避免出
现更多的Script代码,其语法如下:
${属性名称}
使用EL最大的特点就是:如果输出内容是null,则会自动使用空字符串("")表示:
<body>
<h3>内置对象:<%=request.getAttribute("CaMnter")%></h3>
<h3>EL:${CaMnter }</h3>
</body>
简单输出:
<body>
<%
request.setAttribute("CaMnter", "Save you from anything 07");
%>
<h3>${CaMnter }</h3>
</body>
二.EL的内置对象
EL内置对象 | 描述 |
pageContext | javax.servlet.jsp.PageContext对象 |
pageScope | 从page属性范围查找输出属性 |
requestScope | 从request属性范围查找输出属性 |
sessionScope | 从session属性范围查找输出属性 |
applicationScope | 从application属性范围查找输出属性 |
param | 接收传递到本页的一个参数 |
paramValues | 接收传递到本页的一组参数 |
header | 取得一个头信息 |
headerValues | 取得一组头信息 |
cookie | 取得cookie中的数据 |
initParam | 取得初始化参数 |
访问4种属性:
<body>
<%
pageContext.setAttribute("CaMnter", "page_Save you from anything 07") ;
request.setAttribute("CaMnter", "request_Save you from anything 07");
session.setAttribute("CaMnter", "session_Save you from anything 07");
application.setAttribute("CaMnter", "application_Save you from anything 07");
%>
<h3>page:${pageScope.CaMnter }</h3>
<h3>request:${requestScope.CaMnter }</h3>
<h3>session:${sessionScope.CaMnter }</h3>
<h3>application:${applicationScope.CaMnter }</h3>
</body>
调用内置对象操作:
使用pageContext可以取得request、session、application的实例。
<body>
<h3>IP:${pageContext.request.remoteAddr }</h3>
<h3>Session ID:${pageContext.session.id }</h3>
</body>
接收请求一个参数:
<body>
<h3>request.getParameter():<%=request.getParameter("CaMnter")%></h3>
<h3>EL:${param.CaMnter}</h3>
</body>
地址栏重写即可:
接收请求一组参数:
el_1.html:
<!DOCTYPE html>
<html>
<head>
<title>el_1.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<form action="../jsp/el_5.jsp" method="post">
<input type="checkbox" name="inst" value="red">红
<input type="checkbox" name="inst" value="green">绿
<input type="checkbox" name="inst" value="blue">蓝
<input type="submit" value="提交">
</form>
</body>
</html>
el_5.jsp:
<body>
<%
request.setCharacterEncoding("UTF-8") ;
%>
<h3>第一个:${paramValues.inst[0]}</h3>
<h3>第二个:${paramValues.inst[1]}</h3>
<h3>第三个:${paramValues.inst[2]}</h3>
</body>
三.EL的集合操作
List:
<body>
<%
List list = new ArrayList() ;
list.add("CaMnter") ;
list.add("Save you from anything 07") ;
request.setAttribute("info", list) ;
%>
<h3>第一个:${requestScope.info[0]}</h3>
<h3>第二个:${requestScope.info[1]}</h3>
</body>
Map:
<body>
<%
Map map = new HashMap() ;
map.put("name", "CaMnter") ;
map.put("age", 18) ;
request.setAttribute("info", map) ;
%>
<h3>第一个:${requestScope.info["name"]}</h3>
<h3>第一个:${requestScope.info.name}</h3>
<h3>第二个:${requestScope.info["age"]}</h3>
</body>
由Map例子,可以看出 ${requestScope.info["name"]} == ${requestScope.info.name}
这说明了在EL中,出了可以采用“.”的形式访问之外,还可以采用“[]”的形式访问。