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)

           

   控制标签 (Control Tag)

          

UI标签(UI  Tag)

        

Ajax标签( Ajax  Tag)

      

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

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

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

  3. 在 中添加

  4. 添加标签


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" %>

标签:

              等等

  格式化时间和日期

你可能感兴趣的:(JSP)