JavaEE——05.表达式语言

1.理解表达式语言

1.EL语言概述

  • EL并不是一种编程语言,它仅仅是一种数据访问语言
  • 作为一种数据访问语言,EL具有自己的运算符,语法和保留字

2.调用

${expression}
例如:客户名:${customer.custName},Email地址:${customer.email}<jsp:include page = "${expression1}" /><c:out value = "${expression2}" />

3.主要功能

  • 提供了一组简单的运算符
  • 对作用域变量的方便访问
  • 对JavaBeans对象访问的简单表示
  • 对集合元素的简单访问
  • 对请求参数,Cookie和其它请求数据的简单访问
  • 提供了在EL中使用Java函数的功能

2.使用EL运算符

1.算数运算符

算数运算符

注意,如果你想要输出的是一个算式例如${2+5},那么需要在$前加上转义字符\,否则会输出表达式的值7。

2.关系与逻辑运算符

关系运算符

逻辑运算符

3.条件运算符

条件运算符

例如:${(5*5)==25?1:0}的结果为1,${("14" eq 14.0) && (14 le 16)}?"Yes":"No"的结果为Yes

4.empty运算符

empty运算符

5.属性与集合元素访问运算符

属性与集合元素访问运算符

1.点号(.)运算符
点号运算符用来访问Map对象一个键的值或者bean对象的属性值,例如:${customer.custName}
2.方括号([])运算符
方括号运算符除了可以访问Map对象一个键的值或者bean对象的属性值之外,还可以访问List对象和数组对象的元素,例如:${param ["username"]}

3.使用EL访问数据

1.访问作用域变量

在JSP页面中,可以使用JSP表达式访问作用域变量。

  • 在Servlet中使用setAttribute()将一个变量存储到某个作用域对象上,如HttpServletRequestHttpSessionServletContext等。
  • 使用EL就可以更方便地访问这些作用域变量。
String name = "Curry";
request.setAttribute("name",name);
${name}

2.访问JavaBeans属性

使用点号运算符或者方括号运算符,例如:${customer.custName},使用表达式语言,如果没有找到指定的属性值不会抛出异常,而是返回空字符串。另外,表达式语言还允许嵌套属性,例如${employee.address.zipCode}

3.访问元素集合

在EL中可以访问各种集合对象的元素,可以是数组,List对象,Map对象,需要用到[],例如:假设有一个上述类型的对象attributeName${attributeName[entryName]},当对象是数组或者List列表时也可以用下标来访问,[0]或者["0"]。当对象时Map对象时,可以用变量["键"]来获取对应键的值。

4.访问EL的隐含变量

JSP有9个隐含对象,而EL有11个隐含对象。如下表所示:

EL的隐含变量

1.pageContext变量
pageContextPageContext类型的变量,PageContextrequestresponsesessionoutservletContext属性,因此通过pageContext变量可以访问这些属性(requestresponsesessionoutservletContext)的属性。
例如:${pageContext.request.method}获得请求的方法,${pageContext.request.remoteAddr}获得请求的IP地址,${pageContext.request.contextPath}获得请求的上下文路径。
2.param和paramValues变量
param和paramValues变量是用来从ServletRequest中检索请求参数值。param变量相当于是调用给定参数名的getParameter(String name)的结果,格式为${param.name}。类似地,paramValues是使用getParameterValues(String name)返回给定名称的参数值的数组,要访问参数值数组的第一个元素,可以用${paramValues.name[0]}。param和paramValues变量适用于在表单输入参数信息后提交再显示出来。
3.header和headerValues变量
header和headerValues变量是从HTTP请求头中检索值,它们的运行机制和param和paramValues变量类似。例如:${header['host']}这里得到HTTP连接头部的host,${header['accept']}这里获得HTTP头部的accept值,${header['user-agent']}这里获得HTTP头部的user-agent值。当一个请求头名称对应多个值时,使用headerValues。
4.cookie变量
使用EL的cookie隐含变量得到客户向服务器发回的Cookie数组,即调用request对象的getCookies()的返回结果。
cookie变量

如上图,cookie.un.name可以获取到键名cookie.un.value可以获取到该键的值
5.initParam变量
initParam变量存储了Servlet上下文的参数名和参数值。例如,假设在web.xml中定义了如下初始化参数:

<context-param>
<param-name>email</param-name>
<param-value>hacker@163.com</param-value>
</context-param>

如果需要访问参数名,可以使用<%=application.getInitParameter("email")%>,用EL表达式的话只需要${initParam.email}
6.pageScope,requestScope,sessionScope和applicationScope变量
这几个变量用来访问对应作用域上的属性。例如:<%session.setAttribute ("totalprice",1000)%>可以使用${sessionScope.totalprice}来访问获取。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容