JSP中的EL表达式

EL全名是Expression Language,主要是用于:

  • 获取数据
  • 执行运算
  • 获取Web开发中的隐含对象
  • 调用Java方法

语法:

${Expression}

这里的Expression其实就是setAttribute里面的name,这样就获取到对应的值

EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符Expression为关键字,分别从pageScope、requestScope、sessionScope、applicationScope四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” 空串(注意,不是null,而是空字符串)。

例如:

        <%
		request.setAttribute("name", "hello");
	%>
	
	--${name }--<br>
	--${pageScope.name }--<br>
	--${requestScope.name }--

得到的结果如下:

--hello--
----
--hello--

因此,如果不指定查找域的话,就会按顺序在各个域中找,如果指定了域,就只在该域中找

获取数据:

类型示例对应的调用方法
JavaBeans${ user.username }user.getUsername()
 ${ user[“username”] } 
 ${ user[ ‘username’] } 
数组${ sport[1] }sport[1]
 ${ sport[‘1’] } 
 ${ sport[“1”] } 
List${ address[2] }address.get(2)
 ${ address[‘2’] } 
 ${ address[‘2’] } 
Map${ phone[“home”] }phone.get(“home”)
 ${ phone[‘home’] } 
 ${ phone.home } 

注意:如果通过setAttribute存储的是map类型的数据,则通过el表达式获取数据的时候,先获取的是Entry。比如:

        <%
                Map<String,Customer> map1 = new HashMap<String,Customer>();
               map1.put("m1", customer1);
		map1.put("m2", customer2);
		request.setAttribute("map", map1);
	%>
        ${map["m1"].name}/${map["m2"].age}

Map类型对象map1传入了两个键值对,到调用${map}的时候会返回两个Entry,如果想要获取entry中的值,就需要传入键才能得到值,然后得到customer对象。

而这里的map["m1"].name就是调用customer的getName方法,由此可以看出这里使用了反射机制.

执行运算:

 empty运算符:${empty expression},会调用findAttribute方法去找,如果有这个属性的对象就返回false,如果没找到或者说它是一个数组对象,但是却没有数据,就返回true

获取web开发中的隐含对象

(待续)


总结:

el表达式主要是方便获取,无论是数据还是对象,而且里面都使用了反射机制。

如果是要获取数据,就先setAttribute

如果是要获取隐含对象,直接调用${隐含对象名称},例如:${param.name},就是获取了一个map对象,里面有请求参数的数据,然后调用getAttribute,将name作为参数传入,获取该参数对应的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值