EL表达式的隐式对象
el表达式写法

el表达式写法
El表达式是一种用于模板引擎和视图中的动态表达式语言,用于在模板中嵌入动态数据。
以下是一些常见的El表达式的写法:
1. 访问属性:
- `${}`:访问对象`user`的`name`属性。
- `${user.address.city}`:访问嵌套属性。
2. 访问列表和映射:
- `${list[0]}`:访问列表`list`的第一个元素。
- `${map['key']}`:访问映射`map`中键为`key`的值。
3. 调用方法:
- `${user.getName()}`:调用对象`user`的`getName()`方法。
- `${utils.format(date)}`:调用静态方法`utils.format()`。
4. 条件判断:
- `${user.age > 18 ? '成年人' : '未成年人'}`:根据条件返回不同的值。
5. 迭代列表:
- `<c:forEach items="${users}" var="user">`:迭代列表`users`中的每个元素,用变量`user`引用每个元素。
6. 计算表达式:
- `${5 + 3}`:计算表达式的结果。
7. EL隐式对象:
- `${pageContext.request.contextPath}`:访问EL隐式对象中的属性,如访问请求的上下文路径。
这些只是El表达式的一小部分写法,实际使用中还有更多的写法和用法,可以根据需要进一步学习和掌握。
8_EL表达式

EL关系运算符 ==(eq) !=(ne)
<(lt)
>(gt)
<=(le)
>=(ge)
EL关系运算符演示
<body> \${1==1 }=${1==1 }
<br>
\${1 eq 1 }=${1 eq 1 } <br>
\${"1" eq "1" }=${"1" eq "1" }
EL运算符 EL算术运算符 EL关系运算符
逻辑运算符
empty运算符
条件运算符
3元运算符
EL算术运算符 + -
*
/(div)
%(mod)
EL算术运算符演示
<body> \${4+2 }=${4+2 } <br> \${4-2 }=${4-2 } <br> \${4*2 }=${4*2 } <br> \${4/2 }=${4/2 } <br> \${4 div 2 }${4 div 2 } <br> \${5%2 }=${5%2 } <br> \${5 mod 2 }=${5 mod 2 } <br> </body>
EL表达式
主讲:宁恒生
主要内容 EL概述 EL隐式对象
EL运算符
EL概述 EL是Expression Language的缩写 是JSTL为方便存取数据而定义的语言,必须在 JSTL中使用 容器的版本必须为jsp2.0/Servlet2.4才支持EL,并 把EL纳入jsp的规范中 Tomcat必须5.0以上
EL表达式

EL表达式语法:${ EL expression}其中:$表示EL表达式的开始。
EL expression指定表达式。
一、JSP EL表达式可用于如下几种方式。
1 静态文本:包含EL表达式,其值在运行时计算出来。
如: ${8+5}2 标准标签和自定义标签属性:帮助显示网页上的动态内容。
JSP提供一些标准标签,<jsp:useBean>、<jsp:include>等。
自定义标签是由用户使用taglib指令编写的。
EL表达式可以作为一个值传递给上述标签的属性。
表达式在运行时计算,结果值将作为属性值进行传递。
如:<%pageContext.setAttribute("color","#ffccff");%><body bgcolor="${pageScope.color}">7+8=${7+8}</body>3 JavaBean与EL表达式:使用EL表达式可以简洁地读出JavaBean的属性值。
传统的JSP通常使用如下方法访问JavaBean:<jsp:getProperty na me=”myBean” property=”name”/><%=myBean.getName()%>EL表达式则简化为:${}二、启用/禁用EL表达式<%@ page isELIgnored=”true|false” %>为true时,支持EL表达式计算。
为false时,不支持EL表达式计算。
三、变量JSP表达式${product}的计算结果与调用pageContext.findAttribute(“product”)一样,EL表达式中的变量可以引用存储在标准范围(如:page request session application)中的属性。
点运算符(.)和”[]”用于获取变量的值。
el语句基本用法

el语句基本⽤法EL(Expression Language)⼀、EL操作符语法:${EL表达式}11. “.”操作符⽤来访问对象的某个属性,如${}。
2. “[ ]”操作符也可⽤来访问对象的某个属性,如${user[‘name’]}。
“[ ]”操作符其他功能:(1)当属性名中包含特殊字符如“.”或“-”等的情况下,就不能使⽤“.”操作符来访问,这时只能使⽤“[ ]”操作符。
(2)根据索引值访问数组中的元素使⽤“[ ]”操作符,如${arr[1]}。
(3)使⽤变量实现动态访问,如${user[x]},x是⼀个变量,改变x即可。
1.1、算术操作符这⾥只测试了“+”操作符,“-”、“*”、“/”或div、“%”或mod请⾃⾏测试。
<!-- “+”操作符 -->${a1+a2+a3 }<br><!-- 输出:60 -->${1+1 }<br><!-- 输出:2 -->${'1'+1.1 }<br><!-- 输出:2.1 -->${"1"+1 }<br><!-- 输出:2 -->${bbbbbsdcksnvjnds+1 }<br><!-- 输出:1 -->\${"bbbbbsdcksnvjnds"+1 }<!-- 报异常 -->1.2、关系操作符1.3、逻辑操作符1.4、empty操作符<!-- empty操作符 -->${empty s }<br><!-- 输出:true -->${!empty s }<br><!-- 输出:false -->${not empty s }<br><!-- 输出:false -->${!not empty s }<br><!-- 输出:true -->总结:若变量 s为null,或长度为零的String,或size为零的集合,则${ empty s }返回的结果为true,${ not empty s }或${ ! empty s }返回的结果为false。
第06章:EL表达式和JSTL

从最小的属性范围中查 找key属性,如果找到, 则不再继续查找
属性值key=${key};<br>
request范围内的key=${requestScope.key};<br> session范围内的key=${sessionScope.key};<br> session范围内的key1=${key1}; 直接从指定的属性范围 内查找属性名为key的属 性值
set 标签用于给变量 设置值和作用范围
插入使用核心标签的指令
<%@ taglib uri="/jsp/jstl/core" prefix="c"%>
<body> <c:set var= "example" value="${100+1}" scope="session" />
${er[1]} 得到集合中第二位的对象
EL表达式的简单应用
输出姓名显示
<% Map names = new HashMap(); names.put("one","LiYang"); names.put("two","WangHua"); request.setAttribute("names",names); %> 姓名:${names.one}<br/> 姓名:${names["two"] }<br/>
通用标签
<c:set>含有的属性包括value、var、scope、target和property等,这
EL表达式与JSTL标签库(一)

EL表达式与JSTL标签库(⼀)1、JSTL概述JSTL标签库由标签库和EL表达式两个部分组成。
JSTL标准标签库(Java Server Page Standard Tag Library),⽤来解决创建的页⾯的操作问题,包括输⼊输出、条件测试、遍历集合。
2、EL表达式语法EL表达式的主要作⽤:获取数据。
EL表达式主要⽤于替换JSP页⾯中的脚本表达式,从Web作⽤域中获取Java对象,获取数据,包括访问Javabean的属性、List集合、Map集合、数组等。
执⾏运算:利⽤EL表达式可以在JSP页⾯中执⾏⼀些基本的关系运算、逻辑运算和算术运算,以在JSP页⾯完成⼀些简单的逻辑操作。
获取Web开发常⽤对象。
利⽤EL表达式的隐式对象,可以轻松获得Web常⽤对象的引⽤,从⽽获取这些对象中的数据。
EL表达式的格式: ${expression },使⽤${⽂本时需要变为\${[]和.运算符 EL表达式可以返回任意类型的值。
EL取值结果为⼀个带有属性的对象时,使⽤[]或.来访问其属性,实质是通过getter⽅法来访问其属性。
访问形式如下:${object["propertyName"]}${object.propertyName} propertyName不是有效的java变量名时,只能使⽤[]⽅式访问。
如${header["accept-language"]}。
如果访问对象的属性也是⼀个对象,并且也带有属性,此时既可以使⽤[],也可以使⽤.运算符来访问第⼆个对象的属性。
${pageContext.request.contextPath }3、EL表达式的隐式对象 EL表达式中,存在11个隐式对象。
隐式对象描述例⼦pageContext JSP上下⽂对象。
它可访问JSP隐式对象。
${pageContext.request.contextPath }param⼀个包含所有请求参数的Map。
elpress表达式

EL表达式(Expression Language)是一种在JSP页面中用于获取数据、执行运算、调用Java方法的表达式。
它简化了获取数据的操作,使得在JSP页面中获取数据更加方便。
EL表达式的语法格式为:${标识符},其中“标识符”可以是任何有效的Java变量名或方法名。
EL表达式的作用是从Servlet中获取数据,并将数据插入到JSP页面中。
当JSP 页面被请求时,Servlet将处理所有EL表达式并返回结果,然后将结果插入到JSP页面中。
EL表达式有11个隐式对象,可以在表达式中使用这些对象来获取数据。
例如,request 对象可以用于获取请求参数,session对象可以用于获取会话属性等。
除了获取数据之外,EL表达式还可以执行算术运算、逻辑运算和字符串操作等。
例如,${1+2}将返回3,${true||false}将返回true,${"hello"}将返回字符串“hello”。
最后,EL表达式还可以调用Java方法。
例如,${fn:length("hello")}将调用Java中的length()方法来计算字符串“hello”的长度,并返回5。
总之,EL表达式使得在JSP页面中获取数据更加简单、方便和直观。
el

调用函数
<%@ page language="java"%> <%@ taglib uri="WEB-INF/test.tld" prefix="test"%> ${test:showHello()}
总结
了解EL语法 了解EL隐式对: 查找Session范围内的变量名为user的变量。 ${er}
函数
在EL中,可以自己定义和使用函数。 定义函数的方法:
– – –
定义一个公开的静态的方法。 在tld文件中对方法进行声明。 在jsp中调用方法。
定义函数
public class Test { public static String showHello() { return "Hello"; } }
EL
目标
了解EL语法 了解EL隐式对象 了解函数的定义
EL简介
Expression Language 最初是JSTL 1.0为方便存取数据所定义的语言。 只能在JSTL 标签中使用。 JSP 2.0 之后,EL 已经正式纳入成为标准规范 之一。
引入EL 3-1
public class User { private String name; public String getName() { return name; } public void setName(String name) { = name; }
声明函数—test.tld
<function> <name>showHello</name> <function-class>test.Test</function-class> <function-signature> ng.String showHello() </function-signature> </function>
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EL表达式的隐式对象
在使用EL时,其实EL是先看标识符是否是其隐式对象之一,如果不是,才从四个域(page、request、session、application)中顺序搜索(使用pageContext.findAttribute方法)。
EL总共有如下隐式对象:
而这里,EL和JSP一样拥有pageContext对象,通过在EL中使用pageContext对象,能获取JSP中其它几个隐式对象,然后再获得这些对象中的属性。
例如获取当前web工程的名称的经典EL表达式:
${ pageContext.request.contextPath },就是由pageContext先获取request对象(因为在JSP的API中,我们可以看到pageContext有getRequest方法),获取到request对象后,因为request中含有getContextPath方法,因此我们还可以获得request对象中contextPath属性的值。
pageScope、requestScope、sessionScope、applicationScope这四个EL隐式对象分别代表了各自域中的Map对象(每个域以关键字来保存数据或对象,肯定是使用Map集合),这Map对象保存了存在这些域中的键值对。
通过EL表达式和这些隐式对象,我们可以直接从指定的域中获取存储的数据。
例1:
1<%
2User u = new User();
3u.setUsername("fjdingsd");
4session.setAttribute("user", u);
5%>
6
7欢迎您:${ername}
在浏览器中观察:
对于用户登录这样的案例来说,我们检查用户是否登录肯定只需要从session域中查询,这样使用EL表达式的sessionScope隐式对象就足够了。
param隐式对象:表示所有请求参数的Map集合对象。
例如表单提交,那么在请求参数中的数据就以键值对存储在param对象所代表的Map集合中,下面的例子我以get方式来替代post方式来模拟表单请求参数:
例2:
${ername}
在地址栏上添加URL参数,可以看到:
使用param隐式对象同样也能作为数据回显功能,在以前JSP页面提交的表单如果想做出数据回显功能,必须创建一个form的bean对象,当表单校验失败时,重新将这个bean对象通过转发(forward)传回JSP页面再取出。
而使用param 对象,不需要新建form的bean对象,只需要在表单校验失败时转发回表单所在的JSP页面,通过param对象就可以从请求中取出之前的表单数据。
例3:表单验证失败的数据回显demo
在JSP页面beantag.jsp中:
1<form action="${pageContext.request.contextPath}/servlet/FormHandler" method="post">
2用户名<input type="text" name="username" value="${ername}"/>
3<input type="submit" value="提交">
4</form>
在处理表单的Servlet中:
1//省略表单验证过程,验证失败重新转发到表单页面
2request.getRequestDispatcher("/beantag.jsp").forward(request, response);
刚进入表单注册页面:
假设表单验证失败,则转发请求到表单注册页面,并回显数据:
paramValues隐式对象:也是表示一个保存所有的请求参数的Map集合对象,但是paramValues对象和param对
象的区别是,对任何一个参数,paramValues都是以字符串数组(String[])作为保存数据的类型,因此paramValues对象适合在有同名参数的情况下使用。
例4:
${[0]}
浏览器中观察:
例5:
${[1]}
浏览器中观察:
header隐式对象:表示一个保存了该JSP页面发出请求的请求头字段的Map集合对象。
注意:这个对象只能获取请求头字段的信息,不能获取响应头字段的信息。
另外如果头字段中含有小横线的”-”,例如”Accept-Encoding”,则要使用中括号加引号的EL取数据形式,例如${ header[‘accept-encoding’] }。
例6:
${header.connection}
在浏览器中观察:
例7:
${header['accept-encoding']}
在浏览器中观察:
headerValues隐式对象功能类似于header隐式对象,但以字符串数组封装每个保存的请求头字段信息,这点跟paramValues隐式对象是一样的。
cookie隐式对象:表示一个保存了该请求中所有的Cookie的Map集合对象。
假设在请求中有一个cookie,cookie的键值对为:
JSESSIONID=E9546AE9C86FB722BDBD7AF947157379
例8:
${cookie.JSESSIONID}
在浏览器中观察:
可以看到,cookie隐式对象的名称(cookie)是Map集合的名称,而在这个Map集合中,有一个键值对的key命名为
JSESSIONID,而通过${cookie.JSESSIONID}获取到的是一个Cookie对象,那么我们如何获取该Cookie的值呢?
之前说过EL表达式都是通过对象的具有的属性来获取属性值,能被称为属性的都有getXXX方法,而Cookie正是具有getName()方法和getValue()方法,因此在EL表达式中获取了Cookie对象后可以再获取这两个属性:
例9:
1${} <br>
2${cookie.JSESSIONID.value} <br>
在浏览器中观察:
initParam隐式对象:表示一个保存了所有web应用初始化参数(context-param)的Map集合对象。
<context-param>标签用于配置全局性的web参数,在Servlet中可以使用ServletContext.getInitParameter方法获取指定参数的值。
而在JSP页面中,我们可以同EL表达式的initParam方法来获取为web应用配置的全局性参数。
例10:
在web.xml文件中配置:
1<context-param>
2<param-name>username</param-name>
3<param-value>fjdingsd</param-value>
4</context-param>
在JSP页面中:
${ername }
在浏览器中观察:
本文作者:fjdingsd。