本人发现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" %>
标签: