Struts2的标签

Struts2的标签

ID:41077034

大小:919.51 KB

页数:80页

时间:2019-08-15

Struts2的标签_第1页
Struts2的标签_第2页
Struts2的标签_第3页
Struts2的标签_第4页
Struts2的标签_第5页
资源描述:

《Struts2的标签》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第3章Struts2的标签库3.1Struts2的OGNL3.2Struts2的标签库3.1Struts2的OGNL1.OGNL表达式基础OGNL是ObjectGraphicNavigationLanguage(对象图导航语言)的缩写,它是一个开源项目。OGNL是一种功能强大的EL(ExpressionLanguage,表达式语言),可以通过简单的表达式来访问Java对象中的属性。它先在WebWork项目中得到应用,后成为Struts2框架视图默认的表达式语言。可以说,OGNL表达式是Struts2

2、框架的特点之一。标准的OGNL会设定一个根对象(root对象)。假设使用标准OGNL表达式来求值(不是Struts2OGNL),如果OGNL上下文有两个对象:foo对象和bar对象,同时foo对象被设置为根对象(root),则利用下面的OGNL表达式求值。#foo.blah//返回foo.getBlah()#bar.blah//返回bar.getBlah()blah//返回foo.getBlah(),因为foo为根对象3.1Struts2的OGNL在Struts2框架中,值栈(ValueStack)

3、就是OGNL的根对象。假设值栈中存在两个对象实例:Man和Animal,这两个对象实例都有一个name属性,Animal有一个species属性,Man有一个salary属性。假设Animal在值栈的顶部,Man在Animal后面,如图3.1所示。下面的代码片段能更好地理解OGNL表达式。图3.1一个包含了Animal和Man的值栈3.1Struts2的OGNL下面的代码片段能更好地理解OGNL表达式。species//调用animal.getSpecies()salary//调用man.getSa

4、lary()name//调用animal.getName(),因为Animal位于值栈的顶部最后一行代码中,返回的是animal.getName()返回值,即返回了Animal的name属性,因为Animal是值栈的顶部元素,OGNL将从顶部元素搜索,所以会返回Animal的name属性值。如果要获得Man的name值,则需要如下代码:man.name3.1Struts2的OGNLStruts2允许在值栈中使用索引,实例代码如下:[0].name//调用animal.getName()[1].nam

5、e//调用man.getName()Struts2中的OGNLContext是ActionContext,如图3.2所示。图3.2Struts2的OGNLContext结构示意图3.1Struts2的OGNL由于值栈是Struts2中OGNL的根对象,如果用户需要访问值栈中的对象,则可以通过如下代码访问值栈中的属性:${foo}//获得值栈中的foo属性如果访问其他Context中的对象,由于不是根对象,在访问时,需要加#前缀。application对象:用于访问ServletContext,例如#

6、application.userName或者#application["username"],相当于调用Servlet的getAttribute("username")。session对象:用来访问HttpSession,例如#session.userName或者#session["userName"],相当于调用session.getAttribute("userName")。request对象:用来访问HttpServletRequest属性的Map,例如#request.userName或者#

7、request["userName"],相当于调用request.getAttribute("userName")。parameters对象:用来访问HTTP请求的参数的Map,例如#parameters.name或者#parameters["name"],相当于调用request.getParameter("name")。attr对象:包含前面4种作用域的所有属性。例如#attr.userName。3.1Struts2的OGNL2.OGNL的集合操作如果需要一个集合元素(例如List对象或者Map

8、对象),可以使用OGNL中与集合相关的表达式。可以使用如下代码直接生成一个List对象:{e1,e2,e3,…}该OGNL表达式中,直接生成了一个List对象,该List对象中包含3个元素:e1,e2和e3。如果需要更多的元素,可以按照这样的格式定义多个元素,多个元素之间使用逗号隔开。下面的代码可以直接生成一个Map对象:#{key:value1,key2:value2,…}Map类型的集合对象,使用key-value格式定义,每个key-value元素使用冒号表示,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。