EL表达式

EL表达式

EL表达式是Expression Language的简称(表达式语言),他是JSP2.0中引入的一种计算和输出Java对象的语言。只要安装的WEB服务器支持Servlet2.4/JSP2.0,就可以在JSP中直接使用EL表达式。


1.禁用EL表达式的三种方式

因为在JSP2.0之前并不支持EL表达式,为了兼容之前版本,所以特意提供了禁用EL表达式的功能。

(1)使用“\

(2)使用page指令

<%@page isELIgnored=”true”%>这样在整个网页中都不会解析EL表达式。

//该方法将禁用整个页面的EL表达式。

(3)在web.xml文件中配置<el-ignored>标签

<jsp-config>

<jsp-property-group>

<url-pattern>*.jsp</url-pattern>

<el-ignored>true</el-ignored>//该方法将禁用整个页面的EL表达式。

</jsp-property-group>

</jsp-config>


2.EL表达式的基本语法

EL表达式的语法很简单,${}{}中间为合法的表达式。

EL表达式中输出一个字符串:${“这是一个字符串”}


3.EL表达式的使用

(1)EL表达式可获得PageContext对象,用它可以获得页面中的其他所有内置对象。

Eg${PagContext.session.username}//获得session对象中的变量username

(2)EL表达式不仅可以访问一般变量,而且可以访问JavaBean中的属性以及嵌套属性和集合对象。

(3)EL表达式中可以执行关系运算,逻辑运算和算术运算等。


4.EL表达式的存取范围

EL表达式中没有指定范围时,系统默认从page范围中查找,然后依次在requestsessionapplication范围内查找。如果找到则返回指定变量,否则返回null。而且EL表达式还提供了指定存取范围的方法,如果从指定范围找,在该范围没找到的话,直接返回null

范围

前缀

案例

page

pageScope

${pageScope.username}

request

requestScope

${requestScope.username}

session

sessionScope

${sessionScope.username}

application

applicationScope

${applcationScope.username}

 

5.EL表达式的运算符

EL表达式提供了存取数据运算符,算术运算符,关系运算符,逻辑运算符,条件运算符以及empty运算符

5.1存取运算符“[]”和“.

EL表达式可以使用“[]”和“.”来取得对象的属性。如:${user.username或者${user[username]},在有些情况只能使用[]。例如对于user中的属性user-name,就只可以用${user.[user-name]}

[ ]运算符还可以用来读取数组,ListMap或者其他容器中的数据

<%

Map map=new HashMap();

Map.put(“1”,”a”)

Map.put(“2”,”b”)

Map.put(“3”,”c”);

session.setAttrubute(“demo”,map);

%>

${sessionScop.demo[“1”]}//输出集合中“1”所对应的值。注意,这里不是下标,是属性名

如果是数组或者是List,则可以用下标获取元素。

5.2算术运算符

+-*/(div)%(mod)。用法都统Java,使用范围必须${}{}中。Eg:${23.5*6}

注意:EL表达式不支持Java那样利用+连接两个字符串。但是可以采用${“he”}${“llo”}的形式。

5.3关系运算符

EL表达式提供了很多对于两个表达式(字符串/整数/浮点数)进行比较的关系运算符,返回值为true或者false

运算符

功能

举例

==eq

等于

${10==10},${“A”==”a”}

!=ne

不等于

${10!=10},${“A”!=”a”}

<lt

小于

${10<10},${“A”<”a”}

>gt

大于

${10>10},${“A”>”a”}

<=le

小于等于

${10<=10},${“A”<=”a”}

>=ge

大于等于

${10>=10},${“A”>=”a”}

注意:

EL表达式的运算符只能用在{}中,例如:${param.name}==${pap.name}是错误的。

${param.name==pap.name}才是正确的。

5.4逻辑运算符

&&或者and表示”与”,||或者or表示”或”,!或者not表示”非”。

注意:与和或表达式只要可以确定值,就会停止执行。

5.5empy运算符

empty运算符位于操作数前方,用来确定一个对象或者变量是否为空或者null

Eg: ${empty expression}。 expression为需要判断的变量或对象。

注意:null和空不是一回事,null是表示该变量没有指向任何对象。而空则表示该变量已经分配了内存,但是该变量中存储的内容为空,例如空字符串等。 empty也经常和not一起使用,判断一个对象或者变量是否为空,例如:${not empty sessionScop.user}

5.6条件运算符

${表达式?表达式1:表达式2}

用法同Java,如果表达式为真,则执行表达式1,如果为假,则执行表达式2

6.EL表达式中的隐含对象

EL中定义了11个隐含的对象(包括头信息,参数,全局初始化信息,pageContext,数据域对象,cookie)

 

 

隐含对象

介绍

页面上下文对象

pageContext

用于访问JSP的其他内置对象

访问作用域范围内数据的隐含对象

pageScope

用于获取page(页面)范围的属性值的集合

requestScope

用于获取requestScope(请求)范围的属性值的集合

sessionScope

用于获取page(会话)范围的属性值的集合

applicationScope

用于获取page(应用)范围的属性值的集合

访问环境信息的隐含对象

param

包含页面所有参数的名称和相应值的集合

paramValues

包含页面所有参数的名称和相应多个值的集合

header

包含每个header名和值的集合

headerValues

包含每个header名和可能存在的多个值的集合

cookie

包含每个cookie的名和值的集合

initParam

包含servlet上下文初始参数名和相应值得集合

说明:除了pageContext对象外,其余对象都是java.util.Map类型。

6.1 pageContext对象

该对象用于方位JSP中的内置对象,例如:${pageContext.session.user}

6.2访问作用域范围的对象

  ${XXXscope.user}

6.3 paramparamValues对象

param对象用于获得请求参数的值,返回类型为字符串,如果想获得一个参数名对应的多个参数值,返回类型为数组。

例如: <input type=”text” name=”username”>

username值得获取:${param.username}

如果是<input  type=”checkbox”  name=”user” value=”zhangsan”>

          <input  type=”checkbox”  name=”user” value=”lisi”>

user值的获取:${paramValues.user[0]}----获得zhangsan

  ${paramValues.user[0]}----获得lisi

注意:对于获得的参数不存在时,返回的是空字符串而非null

6.4headerheaderValues

用于获得HTTP请求的头信息。header用于获得某一个,headerValues用于获得一个header值对应的多个值。

例如:${header.host},${header.[“host”]}

6.5cookie对象

cookie对象用于获取请求携带的cookie。如果请求中携带了某个cookie(这里假设其中的一个cookie名为user,值为cocoliu),则可以使用${cookie.user}获取相应名的cookie。如想获取相应cookie的值,则需要${cookie.user.value}

6.6intParam对象

用于获取web应用全局初始化参数的值。

<context-param>

<param-name>password</param-name>

<param-value>123456</param-value>

<context-param>

获取value值得方法:${initParam.password}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值