javaee-el,jstl,ognl是个些什么东东

本文详细介绍了EL(Expression Language)、JSTL(JSP Standard Tag Library)及OGNL(Object Graphic Navigation Language)的基本概念、语法结构及其应用场景。EL简化了JSP中的表达式书写;JSTL则通过标签库替代传统Java片段,实现页面显示逻辑;OGNL作为Struts2的默认表达式语言,便于访问和操作对象属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. EL是什么

EL是(Expression Language)的简称,是一种表示式语言。它提供了在 JSP 中简化表达式的方法。

  a、语法结构:${expression}

  b、[ ]与.运算符

  EL 提供“.“和“[ ]“两种运算符来存取数据。当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用“[ ]“。例如:${ user. My-Name}应当改为${user["My-Name"]}如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:${sessionScope.user[data]}中data 是一个变量

  c、变量

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

  1. JSTL是什么?

  JSTL ( JSP Standard Tag Library ),也就是JSP标准标签库。其实到现在我才觉得自己理解了。要想理解JSTL,要先理解什么是标签库。当然要写标签库也可以写一篇博客。我之前写过一篇自定义标签库(自定义jsp标签),可参考。简单讲,当页面显示后台数据比较复杂时,比如,要循环显示后台list中的值绑定到前台table中。那我们就封装一个通用的标签,这个标签的命名可以随意,但是要参照<HTML>里面的格式,<> ,那我们可以命名为<s:iterator>  <c:forEach> 等等,< c:forEach>这个c也是我们自主加入的前缀,用来做区分。只有这些肯定玩不转的。没有后台代码支持,怎么可以?我们必须封装JAVA代码,把你的逻辑写入,或许也可以加入一些HTML元素。把需要的变量设置到tld文件中做个整合。然后在前台引入tld文件。如<%@ taglib uri="/WEB-INF/tld/aofsoft.tld" prefix="c"%>. 就可以使用了。其实我描述得这些就是自定义标签的一个过程。不理解得要参照我前面的一篇博客。

在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现。鉴于此,出现了 JSTL 。大家应该明白了JSTL是个什么了吧。有了它,我们就不用在JSP页面中写入JAVA代码了。我们可以把它封装成标签,封装好的话,还可以复用。

  知识都是相通的,我们还可以联系到struts2的那一套标签,<s:textfield>,<s:property>,<s:if><s:elseif><s:else>,<s:iterator>,<s:select>等等。这是不是也没有什么新鲜的。我们知道原理后,掌握它如何使用即可。

我们可以将<%=user.getUserName() %>改为el表达式为${user.userName} 可以。这只是简单介绍。

 

3. OGNL是什么?

  OGNL是Struts 2默认的表达式语言。是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象。它可以用于JSP的标签库中,以便能够方便的访问各种对象的属性;它用于界面将参数传递到Action(并进行类型转换)中;它还可以用于struts2的配置文件中。

  说到这,你可以联想到可以跟OGNL对比的是什么?EL。EL也是表达式语言。可以说EL是基础。OGNL是Struts 2默认的表达式语言,但是这并不能说明struts2不能使用其他表达式语言。其实往往我们都是混着用的。什么好用用什么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值