EL表达式学习

EL表达式的简介:

JSP2.0后引入了一个新的功能-——表达式语言。表达式语言是一种简化数据的访问方式,使用表达式语言可以方便的获取页面中隐藏的对象和javaBeans组件,在JSP2.0中应该尽量的使用EL表达式从而减少java脚本。注:表达式语言是JSP一种重要的特性。
表达式的语言优势:
1. 提供对存储数据的简洁访问。
如果你要访问一个“作用域的对象”,name ,(先用setAttribute 存储在PageContext , HttpServletRequest,HttpSession , ServletContext) 中,然后通过 ${name},即可获得其值,获取的顺序是PageContext,HttpServletRequest,HttpSession,ServletContext ,在查找的过程中,只要找到一个不为空的 就直接返回,否则继续查找 如果没有,则直接返回null;
2. 通过了对bean属性的简洁访问。
如上面所讲,将 Person类的一个对象 tom 先setAttribute() ,然后通过${tom.name},${tom.age}既可以 获取到tom对象的名字和年龄。
3. 提供对元素集合的简洁访问。
对于 数组,List ,Map 中元素访问,只要使用${variable[indexOrKey].如果indexOrKey合法,这也可以通过bean的点号代替结合中的方括号记法。
4. 能够简洁的访问请求参数,Cookie和其他请求数据。
可以使用预定义的隐试对象来获取。
5. {}总可以插入一些简单的运算符。
6. 条件化输出。
${test?option1:option2}
7. 自动类型的转换
8. 空值替代错误信息。

JSP 表达式语言的语法和使用

语法格式

   ${expressionl}
  其中 expressionl代表合法的EL表达式。其可以和其他的静态文本混合。
  如:${90-70},${90/10}

禁止服务器解析表达式语言

在web.xml中配置 :

 <jsp-config>
 <display-name>
  El-ignored
 </dispaly-name>
 <url-pattern>*.jsp</url-pattern>
 <el-ignored>true</el-ignored>
 </jsp-config>

使用转移符 :

 在$前面加上\
 9=\${90/10}

使用page命令:

  <%@page isELEnabled="false"%>

表达式求值

运算符求值

JSP表达式提供的操作字符大部分是跟java语言的操作字符差不多:
下面是EL表达操作符:

条件求值

语法:${条件表达式?计算表达式1:计算表达式2};
如果条件表达式为true 则求值结果为表达式1的结果,如果条件表达式为false 则求值结果为求值表达式2.

访问作用域变量

如果你要访问一个“作用域的对象”,name ,(先用setAttribute 存储在PageContext , HttpServletRequest,HttpSession , ServletContext 中),然后通过 ${name},即可获得其值,获取的顺序是:PageContext,HttpServletRequest,HttpSession,ServletContext ,在查找的过程中,只要找到一个不为空的 就直接返回,否则继续查找 如果没有,则直接返回null;若HttpResquest 和Pageonetxt中都有一个同名的变量name, 如果只想区HttpResquest 中的,则可以再EL表达式中引入作用域:
${pageScope.name}; 获取的PageContext作用域中的name变量。
${requestScope.name};获取的request作用域中的name变量。

隐含变对象

jsp中共有11个隐含对象 可以分为三类:
1. pageConetxt对象,可以访问JSP中其他8个隐含对象,$(pageContext.session)获取代表页面的会话对象。
2. 用于访问环境信息的对象,共有6个:
1.param
类型 java.util.Map ,${param.name}等价于request.getParameter(name);
2.param Values
3.header
4.headerValues
5.cookie
6.initParam

隐含对象名称对象类型说明
paramjava.util.Map映射请求参数ing到单个字符串参数值,${param.name}等价于request.getParameter(name)
param Valuesjava.util.Map映射请求参数名到字符串参数 表达式${paramValues.name}相当于request.getParameterValues(“name”)
headerjava.util.Map表达式${header.name}相当于request.getHeader(name);
headerValuesjava.util.Map表达式${headerValues.name}相当于request.getHeaderValues(name);
cookiejava.util.Map表达式${cookie.name.value}返回带有特定名称的第一个Cookie值。
initParamjava.util.Map映射上下文初始化参数名称到单个值,(通过调用ServletContext.getInitparameter(String name)获得)

3. 用于访问作用域范围的隐含对象,共4个:

隐含对象名称对象类型说明
pageScopejava.util.Map${pageScope}访问一个JSP页面范围的对象
requestScopejava.util.Map访问一个JSP请求的范围的对象
sessionScopejava.util.Map获取访问回话对象的属性${sessionScope.name}
appilcationScopejava.util.Map将应用程序的变量名映射到其值。对隐藏对象允许访问应用程序范围的对象。

存取运算符

EL 提供了“.”和“[]”两种运算符来存取数据,下面的两句是等效的:
name.property; {name[property]};
[] 主要用来访问数组,列表,和其他集合,另外,一下两种情况也用到了“[]”,
1. 当存取的属性名称包含一些特殊字符,如“.”或“?” 等非字母符号的必须要用[];
2. 当要动态取属性的值时,必须要用[],因为“.”是不能动态的取值的。:${sessionScope.user[data]},其中data是一个变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值