EL表达式语言1
EL表达式语言1
EL 全名为Expression Language。EL主要作用:
1.获取数据
•EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
2.执行运算
•利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
3.获取web开发常用对象
•EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
4.调用Java方法
•EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
一、获取数据-普通变量/JavaBean/List/Set/Map
使用EL表达式获取数据语法:${标识符}
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,
找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
示例:${user}
EL表达式也可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据,例如:
•${user.address.city}
•${user.likes[0]}:访问有序集合某个位置的元素
•${map['key']} : 获得map集合中指定key的值
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%-- 1.普通变量--%>
<c:set var="username" value="小胜" scope="page" />
用户名:${username}<br/>
<hr />
<%-- 2.JavaBean --%>
<jsp:useBean id="user" class="cn.zengfansheng.el.User" scope="page" />
<c:set target="${user }" property="username" value="hacket"/>
<c:set target="${user }" property="password" value="123456"/>
用户名:${user.username}<br/>
密码:${user.password}
<hr />
<!-- 3.List,Set -->
<%
List<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");
request.setAttribute("LIST",list);
%>
集合中第一个元素:${LIST[0]}
集合中第二个元素:${LIST[1]}
<hr />
<!-- 4.Map -->
<jsp:useBean id="map" class="java.util.LinkedHashMap" scope="page"/>
<c:set target="${map}" property="key" value="1"/>
<c:set target="${map}" property="value" value="hacket"/>
Map的key:${map.key }
Map的value:${map.value }
<hr />
<!-- 5.数组 -->
<%
int[] intArray = {10,20,30};
pageContext.setAttribute("intArray",intArray);
%>
数组中的第二个元素为:${intArray[1]}
<hr/>
找不到时,返回:${map}
</body>
</html>
二、执行计算
语法:${运算表达式},EL表达式支持如下运算符:

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
10+3=${10+3}<br/>
10-3=${10-3}<br/>
10*3=${10*3}<br/>
10/3=${10/3}<br/>
<hr/>
10>3=${10>3}<br/>
10>=3=${10>=3}<br/>
10<3=${10<=3}<br/>
10<=3=${10<=3}<br/>
10==3=${10==3}<br/>
10!=3=${10!=3}<br/>
<hr/>
true&&false=${true && false}<br/>
true&&true=${true && true}<br/>
false&&false=${false && false}<br/>
<hr/>
true||false=${true || false}<br/>
true||true=${true || true}<br/>
false||false=${false || false}<br/>
<hr/>
!false=${!false}<br/>
!true=${!true}<br/>
<hr/>
<c:set var="username" value="杰克" scope="session"/>
<c:remove var="username" scope="session"/>
<%--
session.invalidate();
--%>
欢迎${!empty username?username:'游客'}光临
Web应用名:<%=request.getContextPath()%>
<hr/>
Web应用名:${pageContext.request.contextPath}
<form action="/day17"></form>
</body>
</html>
三、获取web常用对象-el中11个隐式对象
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
语法:${隐式对象名称} :获得对象的引用


pageContext:
获取Web应用名:${pageContext.request.contextPath}
pageScope/requestScope/sessionScope/applicationScope
<c:set var="username" value="hacket" scope="page" />
<c:set var="username" value="xiaosheng" scope="request" />
默认:${username}<br/>
page:${pageScope.username }<br/>
request:${requestScope.username }<br/>
param/paramValues(数组)
<a href="${pageContext.request.contextPath}/result.jsp?name=berry&pass=123&like=sing&like=dance&like=read">
单击
</a>
result.jsp
用户名:${param.name}<br/>
密码:${param.pass}<br/>
${paramValues.like}<br/>
爱好A:${paramValues.like[0]}<br/>
爱好B:${paramValues.like[1]}<br/>
爱好C:${paramValues.like[2]}<br/>
initParam--原本的ServletContext
<!-- Web初始化参数 --> <context-param> <param-name>webName</param-name> <param-value>day17</param-value> </context-param> <context-param> <param-name>webAuthor</param-name> <param-value>赵君</param-value> </context-param>
WebName:${initParam.WebName }<br/>
WebAuthor:${initParam.WebAuthor }<br/>
header,headerValues(数组)
浏览器相关信息:${header["User-Agent"]}<br/>
字符编码:${headerValues['Accept-Encoding'][0]}
cookie
<%
Cookie cookie = new Cookie("username","hacket");
cookie.setMaxAge(5*60);
response.addCookie(cookie);
%>
Cookie的名:${cookie.username.name }<br/>
Cookie的值:${cookie.username.value }<br/>
注意事项
•测试headerValues时,如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
•测试cookie时,例${cookie.key}取的是cookie对象,如访问cookie的名称和值,须${cookie.username.name}或${cookie.username.value}
•new Cookie(“username”,”jack”);
by hacket

浙公网安备 33010602011771号