`
m635674608
  • 浏览: 5029076 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

EL(Expression Language)表达式概述

    博客分类:
  • java
 
阅读更多

1) EL概述
-a-EL表达式用${ }表示,可用在所有的HTML和JSP标签中,作用是代替JSP页面中复杂的JAVA代码.
-b-EL表达式可操作常量、变量和隐式对象。
最常用的隐式对象有${param}和${paramValues}.
${param}表示返回请求参数中单个字符串的值.
${paramValues}表示返回请求参数的一组值.
pageScope表示页面范围的变量.
requestScope表示请求对象的变量.
sessionScope表示会话范围内的变量.
applicationScope表示应用范围的变量.
-c-<%@ page isELIgnored="true"%>表示是否禁用EL语言。
TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认(FALSE)的启用EL语言.
-d-EL语言可显示逻辑表达式如${true and false}结果是false ;
关系表达式如${5>6} 结果是false ;算术表达式如 ${5+5} 结果是10
-e-EL中的变量搜索范围是: page 、request、 session、 application 。  
点运算符" . "和"[ ]"都是表示获取变量的值。. 区别是 [ ] 可以显示非词类的变量

2) 语法结构
${expression} :必须以“ ${ ”开始,以“ } ”结束,expression就是具体表达式的内容。
注意:EL表达式可以作为元素属性的值,也可以在自定义或者标准动作元素的内容中使用,但是不可以在脚本元素中使用。EL表达式可适用于所有的HTML和JSP标签

3)[ ] 与 . 运算符
-a-EL 提供 . 和 [ ] 两种运算符来存取数据。
-b-当要存取的属性名称中包含一些特殊字符,如. 或 ? 等并非字母或数字的符号, 就一定要使用 [].
例如: ${user.My-Name}应当改为${user["My-Name"] }
-c-如果要动态取值时,就可以用[ ]来做,而.无法做到动态取值
例如: ${sessionScope.user[data]}中data 是一个变量
-------------------------------------------------------------------------------------------------------------
${}是一个JSP2.0中设计的计算引擎,expression中以“" "”包裹的部分不计算
expression中的主体可以是Map和Bean,隐式对象中只有pageContext是Bean,具备方法

--------------------------------------------------------------------------------------------------------------

4)变量
-a-EL存取变量数据的方法很简单。
例 如:${username} 它的意思是取出某一范围中名称为username的变量 因为我们并没有指定哪一个范围的username 所以它会依序从Page、Request、Session、Application范围查找。假如途中找到username,就直接回传,不再继续找下 去,但是假如全部的范围都没有找到时,就回传null。
-b-属性范围在EL中的名称
       Page               PageScope
Request           RequestScope
Session            SessionScope
Application       ApplicationScope

5)EL隐含对象(共有11个)
-a-与范围有关的隐含对象(4个)
与范围有关的EL 隐含对象包含以下四个:
pageScope、requestScope、sessionScope 和applicationScope;
它们基本上就和JSP的pageContext、request、session和application一样;在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。

例如:我们要取得session中储存的一个属性username的值,可以利用下列方法:
session.getAttribute("username") 取得username的值,
在EL中则使用下列方法 :${sessionScope.username}

-b-与输入有关的隐含对象(2个)
与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。
例如:我们要取得用户的请求参数时,可以利用下列方法:
request.getParameter(String name)
request.getParameterValues(String name)
在EL中则可以使用param和paramValues两者来取得数据。
${param.name}
${paramValues.name}
-c-其他隐含对象
1)cookie
JSTL并没有提供设定cookie的动作,
例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookie.userCountry}来取得它。
2)header和headerValues
header 储存用户浏览器和服务端用来沟通的数据
例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值
3)initParam
initParam取得设定web站点的环境参数(Context)
例:一般的方法String userid = (String)application.getInitParameter("userid");
可以使用 ${initParam.userid}来取得名称为userid
4) pageContext 这个是唯一一个bean引用,不是Map,可以获得其他引用
pageContext取得其他有关用户要求或页面的详细信息。
${pageContext.request.queryString}            取得请求的参数字符串
${pageContext.request.requestURL}          取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath}           服务的web application 的名称
${pageContext.request.method}                  取得HTTP 的方法(GET、POST)
${pageContext.request.protocol}               取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser}           取得用户名称
${pageContext.request.remoteAddr }        取得用户的IP 地址
${pageContext.session.new}                       判断session 是否为新的
${pageContext.session.id}                         取得session 的ID
${pageContext.servletContext.serverInfo}   取得主机端的服务信息

 

EL隐藏对象
pageContext PageContext 实例对应于当前页面的处理
pageScope 与页面作用域属性的名称和值相关联的Map类
requestScope 与请求作用域属性的名称和值相关联的Map类
sessionScope 与会话作用域属性的名称和值相关联的Map类
applicationScope 与应用程序作用域属性的名称和值相关联的Map类
param 按名称存储请求参数的主要值的 Map 类
paramValues 将请求参数的所有值作为 String 数组存储的 Map 类
Header 按名称存储请求头主要值的 Map 类
headerValues 将请求头的所有值作为 String 数组存储的 Map 类
cookie 按名称存储请求附带的 cookie 的 Map 类
initParam 按名称存储 Web 应用程序上下文初始化参数的Map类

 

6)禁用EL
在JSP2 .0以后,默认是启用EL表达式的,如果需要禁用表达式的话,使用JSP的page指令的isELIgnored属性来指定,语法:
<%@ page isELIgnored = “true | false” %>
True :表示忽略对EL表达式进行计算。
False(默认) :表示计算EL表达式

7)操作符
-a-算术运算符(5个):
+、- 、* 、/ 或div(除法)、% 或mod(取模)
-b-关系运算符(6个):
==或eq 、!=或ne 、<或lt 、> 或gt 、<= 或le、>= 或ge
-c-逻辑运算符(3个) :
&& 或and :与,符号两边均为true , 则返回 true , 否则返回 false 。
||或or :或,符号两边任何一边为true , 则返回true , 否则返回 false 。
! 或not :非,运算结果为true的时候,则返回false , 否则返回true 。
-d-其它运算符(3个):empty运算符 、条件运算符? 、()运算符
验证运算符(empty):empty作为前缀,用来检索一个值是否为null或empty
例:${empty user.name}用来判断user对象中的name的值是否为null 。
()运算符:$(A*(B+C)
      条件运算符( ?) :
格式: ${ 条件?truevalue:falsevalue} 如果条件为真,则表达式的值为truevalue , 否则为 falsevalue .

8)EL函数(functions)
语法:ns : function ( arg1, arg2, arg3 …. argN )
其中ns为前置名称(prefix),它必须和taglib 指令的前置名称一置

9)发现一个el表达式在JSP2.0中不起作用的问题。
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
2.4版本默认启用el表达式,如果使用2.5版本,默认el表达式是关闭的
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
那么对应2.5的web.xml -->  jsp页面里应该增加<%@ page isELIgnored="false"%>

发现原因:一句话,凡是部署描述文件遵循Servlet2.4规范的WEB应用,EL表达式的计算默认是启用的,而未遵循的,则EL表达式的计算默认是禁用的。解决方法:

1.设置整个项目使用el表达式,需要在web.xml中加上 (控制一个项目)
< jsp-config >
< jsp-property-group >
< el-ignored >false < / el-ignored >
< /jsp-property-group >
< / jsp-config >

2.设置某个jsp页面使用el表达式,需要在jsp页面加上(控制单个页面)
<%@ page isELIgnored="false"%>

 

 

假若您所用的Container 只支持Servlet 2.3/JSP 1.2,如:Tomcat 4.1.29,您就不能在
JSP 网页中直接使用EL,必须安装支持Servlet 2.4 / JSP 2.0 的Container。
 
 
 
分享到:
评论

相关推荐

    EL(Expression Language)表达式(详解)

    EL 表达式是用于替代 JSP 页面中复杂的 scriptlet 代码的,以美元符号 "$" 开头(JSP 2.1 之后也可以使用 "#" 开头),类似 ${expression} 这样的代码行。EL 表达式在 JSP 的静态文本中使用时相当于 scriptlet ...

    EL(Expression Language)表达式

    EL(Expression Language)表达式是JavaServer Pages (JSP)技术中的一个重要组成部分,它用于简化JSP页面中的数据访问和处理。EL表达式通常用`${ }`括起来,旨在替代复杂的Java脚本,使得HTML和JSP标签的交互更加...

    el表达式EL表达式言语和JSTL

    EL(Expression Language)表达式是Java服务器页面(JSP)2.0及更高版本中引入的一种轻量级、强大的脚本语言,主要用于简化Java Web应用程序中的数据访问。它允许开发者在JSP页面中直接访问JavaBean属性、集合、方法...

    el表达式用法部分解说

    EL(Expression Language)表达式在Java Web开发中扮演着重要的角色,尤其是在JSP(Java Server Pages)技术中。本文将详细解释EL表达式的使用方法及其应用场景,帮助开发者更好地理解和掌握这一技术。 #### EL...

    EL表达式练习 EL表达式练习

    EL(Expression Language,表达式语言)是JavaServer Pages(JSP)2.0及更高版本中的一个重要组成部分,它提供了一种简洁、强大的方式来访问JavaBean属性和表达式求值。EL表达式主要用于简化JSP页面中的代码,提高...

    EL,正则表达式,java中常用的验证语言

    在IT行业中,EL(Expression Language)正则表达式和Java中的正则验证是开发者必备的技能之一。这些技术广泛应用于数据验证、文本处理、输入检查等场景,为保证程序的安全性和准确性提供了强大的支持。 首先,EL,...

    EL表达式包括字符串处理,时间日期的格式化,数字处理

    EL(Expression Language),即表达式语言,是JavaServer Pages (JSP) 2.0标准的一部分,用于简化JSP页面中对数据访问的操作。它允许开发者通过简单的语法在JSP页面中访问后端数据,无需编写复杂的Java代码。 #####...

    EL(Expression Language).doc

    EL全名Expression Language EL 语法结构: ${ session.user.sex};所有EL都是以${为起始以}为结尾的; 上述语句等同于User user = (User)session.getAttribute(“user”);String sex=user.getSex(); 即在session中...

    JSTL自定义EL表达式

    EL(Expression Language)是JSP 2.0引入的一种轻量级的脚本语言,用于在JSP页面中访问JavaBean属性、集合以及其他数据源。本资源主要讲解了如何在JSTL中定义和使用自定义的EL表达式,这对于提高JSP页面的可读性和可...

    EL -- 表达式的详细解析

    EL(Expression Language,表达式语言)是Java EE中用于在JSP、JSF等Web开发技术中进行数据访问和操作的重要工具。它提供了一种简洁的语法,使得开发者可以方便地从请求、会话、应用范围等上下文中获取数据,进行...

    el函数,el,el表达式,el函数,fn

    EL(Expression Language)表达式是Java Web开发中常用的一种简洁的脚本语言,主要用于在JSP页面中获取对象的值或调用方法。它简化了JavaBean属性的访问方式,提高了代码的可读性和维护性。EL表达式的功能可以通过...

    EL表达式全解语法中文技术文档

    EL(Expression Language,表达式语言)是JavaServer Pages(JSP)2.0及更高版本中引入的一种强大的脚本语言,用于简化页面中的数据访问。EL表达式在JSP中扮演着重要角色,它提供了一种简洁的方式来获取和操作...

    el表达式介绍 el表达式使用帮助文档

    **EL(Expression Language)表达式**是JavaServer Pages (JSP) 2.0及更高版本中的一个核心组件,用于简化动态内容的生成。它提供了一种简洁的方式来访问JavaBean属性、集合、上下文作用域中的对象以及进行基本运算...

    JSTL,EL表达式语法简介

    JSTL的核心是与Java Expression Language(EL)紧密集成,EL则是一个用于在JSP页面中获取和操作数据的简洁表达式语言。 **EL(Expression Language)**是Java Servlet 2.4及更高版本中引入的一种轻量级脚本语言。它...

    JSTL以及EL表达式所需jar包

    为了增强JSP页面的功能性和简化代码,我们通常会使用两种技术:EL(Expression Language)表达式和JSTL(JavaServer Pages Standard Tag Library)标签库。这两个工具都是Java EE生态系统的一部分,极大地提高了开发...

    EL、JSTL表达式案例精讲

    ### EL(Expression Language)与JSTL(JavaServer Pages Standard Tag Library)表达式案例精讲 #### EL在JSP中的应用 EL,即Expression Language,是JSP技术中用于简化数据访问的一种强大工具。它允许开发者在...

    jsp中的EL表达式简介

    EL(Expression Language)是JavaServer Pages(JSP)中的一种简洁的表达式语言,设计的初衷是为了简化JSP页面的编写。EL受到ECMAScript和XPath表达式语言的启发,提供了更高效的方式来访问和操作JSP页面上的数据。 ...

    el表达式教程,教你学会使用el表达式

    EL(Expression Language)是一种简洁的语言,用于在 JSP 中访问和操作数据。EL 表达式提供了简洁的语法来访问和操作数据,使得开发者可以更方便地在 JSP 中进行数据处理。 基本语法 EL 表达式的基本语法结构为 `$...

    el和标记表达式.zip_el 表达式

    EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。

    jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法

    在JSP页面开发过程中,EL(Expression Language)表达式是一种用于简化数据访问的语法,通过它可以方便地访问Java EE环境中JSP页面的隐含对象和JavaBeans组件。当EL表达式被错误地当作字符串处理而不是被解析时,会...

Global site tag (gtag.js) - Google Analytics