EL表达式

EL表达式

EL表达式就是通过一个简便的方式来取出jsp中四大作用域中的值(注意:EL表达式必须要写在JSP中才可以)。全称叫做Expression Language表达式语言。但是前提是四大表达式中必须要先setAttribute(),也就是数据必须要存进去之后才可以通过EL表达式来进行存储。

语法:${ 变量名 } 其中的变量名就是在域对象进行setAttribute()时,对应的key值。

<%
	request.setAttribute("name", "Tom");
%>

${name}

相应知识点回顾

  • JSP四大域对象,分别是pageContext、request、Session、application四大域对象。注意其中没有Cookie。Cookie和Session同样作为会话机制用来存储信息的方式,但是两者却天差地别。

  • 每一个域对象都有一对存储信息和读取信息的方法:setAttribute(String key, Object value) getAttribute(String key) 但是注意由于如果取数据的话其代码是相当繁琐的,所以为了简化相应的代码,所以采用了EL表达式来进行取值。如果不使用EL表达式的话,相应的取数据代码为:

    <% String name = (String)request.getAttribute("name");%>
    <%=name>
    

关于EL表达式需要注意的事项:

对于四种域对象的查找顺序问题:如果说在四种域对象中存在着重名的键值对,那么查找顺序遵循局部变量优先原则。即pageContext > request > session > application,找到相应的数据之后立刻返回。

四种域对象中都不存在该键值对:返回null值。

指定对应域对象中的值:

  • pageContext中的值:${pageScope.变量名}
  • request中的值:${requestScope.变量名}
  • session中的值:${sessionScope.变量名}
  • application中的值:${applicationScope.变量名}

实际开发过程中使用EL表达式表达JavaBean对象: 变 量 名 . 属 性 或 者 {变量名.属性} 或者 .{变量名[“属性名”]}

  • 其中原理,其实该EL表达式中的语句对应的语句应该是((User)pageContextW.getAttribute(“name”)).getId();
  • 其中变量名所对应的为(User)pageContext.getAttribute(“name”)
    • 如果是直接输出的话,那么其实本质上就是直接打印出该对象的toString()方法,默认未更改的toString方法是其完整包名+@+其对应的哈希值。
  • 其中属性对应的其实就是getId()方法
    • 间接证明,如果想要成功调用的话就必须有setter和getter方法,也就是完整的一个JavaBean,如果没有的话就无法取出数据,会报错。

实际上,EL表达式的本质就是先调用的setter方法再调用的getter方法,所以如果说在EL表达式中如果赋值的话也是可以使用的,但是平时开发的时候我们并不这样用,因为这并不是EL表达式的优势。

EL表达式中的运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u8T1LuMj-1610300943280)(C:\Users\苏木。\AppData\Roaming\Typora\typora-user-images\image-20210111014832829.png)]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值