`
zhy584520
  • 浏览: 183835 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

struts2 (# % $)井号,百分号,美圆号的含义和使用举例

    博客分类:
  • j2ee
阅读更多

struts2 OGNL,struts2 表达式语言,OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言。

本文提要:

(1)Struts2 #,表达式语言的好处;

(2)Struts2 (# % $)井号,百分号,美圆号的各个用法。


一、表达式语言主要有以下几大好处

      1. 避免(MyType) request.getAttribute()和myBean.getMyProperty()之类的语句,使页面更简洁;
      2. 支持运算符(如+-*/),比普通的标志具有更高的自由度和更强的功能;

      3. 简单明了地表达代码逻辑,使用代码更可读与便于维护。

二、Struts2 (# % $)井号,百分号,美圆号的各个用法

      (1)“# ”主要有三种用途:

1. 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:
名称 作用 例子
parameters 包含当前HTTP请求参数的Map #parameters.id[0]作用相当于request.getParameter(“id”)
request 包含当前HttpServletRequest的属性(attribute)的Map #request.userName相当于request.getAttribute(“userName”)
session 包含当前HttpSession的属性(attribute)的Map #session.userName相当于session.getAttribute(“userName”)
application 包含当前应用的ServletContext的属性(attribute)的Map #application.userName相当于application.getAttribute(“userName”)
attr 用于按request > session > application顺序访问其属性(attribute) #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止
2. 用于过滤和投影(projecting)集合,如books.{?#this.price<100};
3. 构造Map,如#{‘foo1′:’bar1′, ‘foo2′:’bar2′}。
      (2)“% ”的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。

例如在Ognl.jsp中加入以下代码:
<hr />
<h3>%的用途</h3>
<p><s:url value=”#foobar['foo1']” /></p>
<p><s:url value=”%{#foobar['foo1']}” /></p>

      (3)“$ ”有两个主要的用途 :
1. 用于在国际化资源文件中,引用OGNL表达式,例子请参考《在Struts 2.0中国际化(i18n)您的应用程序》
2. 在Struts 2配置文件中,引用OGNL表达式,如
<action name=”AddPhoto”>
<interceptor-ref name=”fileUploadStack” />
<result type=”redirect”>ListPhotos.action?albumId=${albumId}</result>
</action>

###############2010-01-14日更新################

struts2中的OGNL上下文
struts2对OGNL上下文的概念又做了进一步扩充,在struts2中,OGNL上下文通常如下所示:

|–request
|
|–application
|
context map—|–OgnlValueStack(root) [ user, action, OgnlUtil, ... ]
|
|–session
|
|–attr
|
|–parameters

我们可以使用”#requet”访问HttpServletRequest对象, “#session”访问HttpSession对象,但请注意”根对象”是什么?是ValueStack!
那么ValueStack是什么?值栈。也就是一组对象的堆栈。也就是说,在struts2中,根对象不是我们通常的一个对象,而是一组对象。我们可以 push新的对象到值栈中,也可以弹出值栈的栈顶对象。如上图所示,假设我们将user对象push到值栈中,那么如下的表达式将与之前我们见过的表达式 一样,具有相同的结果:
Java代码

name // 取用户的姓名
age // 取用户年龄
birthday // 取用户生日
customer.name // 取用户所属客户的名称
#request.parameters // 取请求参数

也就是说,我们使用name这个表达式的时候,ONGL会取”根对象”的name属性,但现在根对象是ValueStack!那么访问 ValueStack的name属性意味着什么呢?这意味着: ValueStack会先查看栈顶元素是否有name属性,如果有就返回该属性值,否则取出栈顶下的元素,继续查看,直到栈底为止。

以上就是OGNL表达式的核心概念,你理解了吗?下一步,你需要了进一步了解OGNL的语法,以发掘其更强大的功能!

分享到:
评论

相关推荐

    行业文档-设计装置-一种儿童进行圆号练习时使用的托架.zip

    标题中的“设计装置”指的是为特定目的而创造的机械设备或结构,此处特指“一种儿童进行圆号练习时使用的托架”。这个装置是专为帮助儿童在吹奏圆号时保持正确姿势和减轻疲劳而设计的。圆号,又称法国号,是一种铜管...

    2016人音版音乐四年级下册第4课《彼得与狼》课件

    ### 四、西方乐器分类及举例 #### 1. 弓弦乐器 - 大提琴、中提琴、小提琴等。 - 这些乐器通过弓弦摩擦发声,音色温暖、富有表现力。 #### 2. 木管乐器 - 长笛、单簧管、双簧管、大管等。 - 这类乐器通过吹气进入...

    人音版一年级《法国号》教案.doc

    二是认识法国号的外形,理解它被称为圆号,熟悉其独特的音色;三是通过歌曲演唱和声势练习,掌握三拍子的强弱规律。 教学内容涵盖学唱《法国号》、学习简单的三拍子舞蹈律动、听乐器音响并改编歌曲,以及了解法国号...

    《西洋铜管乐器》教学设计.pdf

    2. 乐器分类与结构:详述每种铜管乐器的构造,包括吹嘴、号身、按键等部分的功能。 3. 音色与表现力:分析各种铜管乐器的音色特点,如小号的明亮、长号的深沉、圆号的柔和、大号的浑厚等。 4. 演奏技巧:演示吹气、...

    湘教版音乐七上《青少年管弦乐队指南》ppt课件2

    2. **科学性**:遵循乐器特性和音乐表现的需求,合理安排乐器配置。 3. **合理性与适用性**:根据实际演奏需求和条件进行灵活调整。 ##### 舞台分布: 按照乐器组别进行排列,通常从观众视角来看,左侧为弦乐器组...

    Scratch少儿编程项目音效音乐素材-【乐器】音效-号.zip

    在这个压缩包里,“号”的音效可能包含各种类型的号角声,如小号、大号、圆号等,每种都有可能有不同的音色和情感表达。在Scratch中,可以使用“播放声音”积木来调用这些音效,让编程项目中的角色在特定时刻发出...

    西洋乐器多媒体课件最终.pptx

    铜管类乐器以其明亮的音色和宏大的音量著称,如小号、圆号和大号等。小号的音色高亢激昂,常用于宣告或表现英雄主义;长号和大号则具有深厚的低音,适合演奏庄重的旋律。法国号的音色柔和且丰满,能与其他乐器和谐共...

    四年级监测音乐复习提纲.doc

    5. **拍子**:复习了常见的拍子类型,如2/4、3/4、4/4拍,并介绍了它们的读法、含义和强弱规律。 6. **唱名与音名**:唱名(do、re、mi、fa、sol、la、si、do1)和音名(C、D、E、F、G、A、B、C)是音乐中的音阶...

    各种乐器的英文名称.doc

    竖笛(Recorder)也有高音、中音、次中音和低音之分,以及风笛bagpipes和巴赛管Basset Horn。 其次,“Brass”(铜管乐器)部分,铜管乐器以其明亮的音色和强大的表现力闻名。包括短号cornet、小号trumpet、圆号...

    我是小音乐家 (2).ppt

    【我是小音乐家 (2).ppt】这个文件可能是一个关于音乐教育或儿童音乐才能展示的演示文稿,其中提到了几种乐器以及与音乐家相关的地理信息。以下是对这些内容的详细解析: 1. **乐器介绍**: - **鼓**:鼓是最古老...

    《惊愕交响曲》课件 (2).ppt

    例如,小提琴、长笛、双簧管、圆号和定音鼓的组合在主题部分营造出宁静的氛围,随后的变奏逐步增加强度,定音鼓的加入使音乐更具冲击力,再现了“惊愕”瞬间。 变奏1保持了主题的基本结构,但节奏更加活泼,仿佛在...

    白金 扩展音色表.wps

    UP DN — 提琴上、下分弓 SLOW — 慢的 SHORT(SHRT)— 短促的 EXP — 有表现力的 STAC — 管乐断奏 LEG — 提琴的连弓 RIPS — 圆号撕裂奏法 SORD — 柔美 SLIDE — 圆号滑音奏法 AACCENT — 重音 ...

    人音版四年级(下册)音乐教(学)案.doc

    - 随后介绍西洋铜管乐器,如小号、长号、圆号和大号,包括它们的音色、形状和演奏方式。 - 通过巩固练习和欣赏环节,让学生实践识别乐器和理解音乐。 9. **教学评价**: - 学生通过听音乐片段判断主奏乐器,以...

    人音版小学音乐四年级下册.docx

    2. 舞曲风格:学生需要感受舞曲的基本风格,通过动作、节奏或舞蹈来表达音乐的情绪和特点,例如《舞曲第二号》。 3. 乐曲结构分析:学习如何听出乐曲的主题重复变化,以及根据主题变化区分乐曲的结构,这是音乐欣赏...

    溜冰圆舞曲_课件 (2).ppt

    - **第一圆舞曲**:序奏部分主要由圆号演奏,圆号的深沉音色让人联想到冰场的宽广和冬季的宁静。第一主题宽广流畅,如同溜冰者的优雅舞姿;第二主题则更显轻快,表现出溜冰时的灵动与活力。 - **第二圆舞曲**:...

    人教版音乐七年级上册-第六单元 管弦和鸣.ppt

    铜管乐器组包括长号、小号、圆号和大号等,它们的声音洪亮有力,经常在乐队中担任重要的主题陈述和和声支撑角色。每种铜管乐器都有其特定的音色和表现力,如小号的激昂、长号的庄重、圆号的温暖以及大号的深厚。 本...

    Symphonic Poem No.2, Op.65钢琴曲谱双手数字简谱钢琴曲谱.pdf

    对不起,根据您的要求,我理解您需要关于"Symphonic Poem No.2, Op.65"的钢琴曲谱及其相关音乐知识的详细解释。然而,提供的内容实际上是乐谱的一部分,包括不同乐器的部分,如短笛、长笛、双簧管、单簧管、大管、...

    任意形状按钮

    对于更复杂的形状,如圆号形状的窗口,可以使用`ExtCreateRegion`函数或MFC的`CRgn::CreateFromData`方法。这种方法涉及从位图生成矩形数组,再由这些矩形创建区域。具体步骤包括读取位图数据、分析像素并构建矩形...

    行进管乐队训练计划.pdf

    每个乐器类别都有特定数量的成员,如小号20人,长号6人,圆号8人,中音号6人,次中音4人,低音号2人,太阳号2人,以及16人的打击乐团队。 2. 长远目标:在接下来的三年里,乐队将通过持续的训练和实践,提升基本功...

    八年级上册音乐知识点汇总.doc

    音乐是人类文化的重要组成部分,它不仅能够带来美的享受,还能通过不同的元素传达情感和故事。在八年级上册的音乐课程中,学生们将接触到一系列关键的音乐知识点,这些知识点涵盖了音乐理论的基础,如拍号、力度、...

Global site tag (gtag.js) - Google Analytics