Ognl 和 EL 和jstl区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ognl 和 EL 和jstl区别相关的知识,希望对你有一定的参考价值。

E L(Expression Language) 目的:为了使JSP写起来更加简单。
ognl表达式一般用于struts中,也是el的一种
JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库
参考技术A ognl表达式一般用于struts中
el要比jstl好用
虽然书写上很像

OGNL和EL表达式对比 Struts2标签和JSTL对比

本人发现Struts2中的标签和OGNL表达式,和Hibernate中用到的EL表达式和JSTL有一定的相似之处,对比学习会更加清晰,所以加以对比,以加深记忆。

OGNL(Object-Graph Navigation Language)对象图导航语言

OGNL表达式访问值栈:

  1. 值栈(Value Stack),可以理解为一个 存储数据的Map,主要存储了当前action 的 实例。所以就可以使用OGNL访问值栈中的内容,也就是action的属性 

  2.OGNL表达式通过getter方法 来访问action中的属性,所以,action中的属性一定都要添加getter/setter方法。

   例:< s: property value = "house . street . streetName"/>   //< s: property>用来在jsp页面中显示OGNL表达式的值,OGNL表达式写在value属性中。

  3.  其实,值栈是被存储在request当中的,不过由于action中保存的值使用频率很高,所以OGNL提供了直接 访问值栈的方式,以简化编程。

OGNL表达式访问Stack Context:

 action以外的数据都存储在Stack Context中,如request , session , application等。访问Stack Context中的 内容,需要加上“#” 符号

   如:< s: property value = "#session.userName"/>     //访问session中 的userName

EL(Expression Language)表达式

EL表达式用来访问各种作用域中的数据,并显示在JSP页面中。

语法:${  EL表达式  }  //  "$" 和“{}” 缺一不可

要点

1. 使用EL表达式之前,必须将操作的对象保存到作用域中 。JSP提供了4种作用域: page ,request , session , application.

2. “作用域名称.” 方式即可实现 使用作用域 访问对象 读取属性值,如:

   ${ requestScope.news["title"]}  //读取新闻标题

3. 当使用EL表达式访问某个属性值是,应当指定 查找的范围 。如果程序不指定查找的范围,那么 系统会自动按照( page -》request -》 session -》 application)的 顺序进行查 找所以,以上例子也可以写成:${ news["title"]}

4. EL表达式访问对象的属性,有两种方法: “.”操作符和 "[ ]" 操作符

    ${news.title} 或者 ${ news["title"]}

5. EL表达式访问变量和 集合

   ${ userName} 访问变量   ${ list[0] } 访问集合

 

Struts2标签

使用Struts2标签之前需要在 JSP页面上 添加taglib指令:<%@ tagib uri = "/struts-tags"  profix = " s" %>

分类:

通用标签(Generic Tag)

   数据标签(Data Tag)

            <s:property> <s:url> <s:a> <s:param> <s:include> <s:debug> <s:date> <s:set>

   控制标签 (Control Tag)

           <s:if> <s:elseif> <s:else> <s:iterator>

UI标签(UI  Tag)

         <s:form> <s:textfield> <s:textarea> <s:submit> <s:select> <s:doubleselect>

Ajax标签( Ajax  Tag)

       <sx:datetimepicker>

      使用datetimepicker日历控件,需要以下步骤:

  1.在项目中引入struts2-dojo-plugin-2.1.8.jar 。

  2. 导入<%@ tagib uri = "/struts2-dojo-tags"  profix = " sx" %> 。

  3. 在<head> 中添加 <sx:head parseContent = "true"/>。

  4. 添加标签 <sx:datetimepicker name = "timer" label= "发表时间"/>。

 

JSTL(Java Page Standard Tag Library, JSP标准标签库)

JSTL主要用来实现逻辑控制。完成以下两个步骤才可以再JSP中使用JSTL:

1.下载JATL所需的jstl,jar 和 standard.jar,并将其添加到项目中 。

2.在JSP页面中添加标签指令:<%@ tagib uri = "http://java.sun.com/jsp/jstl/core"  profix = " c" %>

<c:out/>  <c:set/>  <c:remove/>  <c:forEach/ >  <c:if/>  <c:url/ >  <c:param/>  <c:import/>等等

<fmt:format/>  <fmt:formatNumber/>格式化时间和日期 

客观面试题--26.Struts2的标签和jstl的标签有什么优缺点?

jstl:JSTL(Java Page Standard Tag Library, JSP标准标签库)优点:1、 在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移...

以上是关于Ognl 和 EL 和jstl区别的主要内容,如果未能解决你的问题,请参考以下文章

Struts标签Ognl表达式el表达式jstl标签库这四者之间的关系和各自作用

Struts标签Ognl表达式el表达式jstl标签库这四者之间的关系和各自作用

OGNL和EL表达式对比 Struts2标签和JSTL对比

JSP中的JSTL与EL表达式用法及区别

js/jstl/el的区别

JSTL与EL的区别