<!----><!----><!---->
<!---->
从Struts2出来就开始关注,但一直没有全面的去学习和研究过,最近
计划把Struts2的官方
文档好好的看一遍,并会在这里将学习的内容和
遇见的问题进行发布,欢迎大家来指导和讨
论(由于本人英文水平有限,有很多翻译不正确的地方希望大家进行指正,第一次发表这种
学习笔记,也希望得到大家的鼓励
)
好了,废话少说,直接入题...
XWork
提供了通过
OGNL
对
ValueStack
操作的支持,标准
OGNL
要求只对一个
root
操作,
XWork
的
ValueStack
概念要求支持多个
roots
操作。
1)标准
OGNL
使用举例:
假设在
OgnlContext map
中有两个对象:
”foo”->foo and “bar”->bar
并且
foo
对象被配置为单一的
root
对象,下边的例子解释了
OGNL
处理的三种情形:
#foo.blah
//
returns foo.getBlah()
#bar.blah
//
returns bar.getBlah()
blah
// returns foo.getBlah() because foo is the
root
以上说明,OGNL
允许在context
中有多个对象,但是如果你要访问的对象不是root
的话,必须在要访问的对象前边加上一个类似@bar
的命名空间。
2)
XWork
有一个专门的
OGNL
PropertyAccessor,
该属性访问器将从上到下自动查找整个
stack
,直到找到你要找的属性对应的对象。
For example:
假设
stack
中包含有两个对象:
Animal and Person
,这两个对象都有“
name
”属性,
Animal
有一个“
species
”属性,
Person
有一个“
salary
”属性,
Animal
在
stack
的顶部,
Person
在
Animal
的下边,下边的代码片断帮助我们理解其原理:
species
// call
to animal.getSpecies()
salary
// call
to person.getSalary()
name
// call
to animal.getName() because animal is on the top
上面的代码片断中返回的是
animal
的
name,
通常这是我们想得到的效果,但是有时我们想得到下级对象的同样的属性,针对这种情况,
XWork
在
ValueStack
中添加了索引的支持,因此,可使用以下代码片断分别得到
Animal
和
Person
对象的
name
属性:
[0].name
// call
to animal.getName()
[1].name
// call
to person.getName()
With expression
like [0] ... [3] etc. WebWork will cut the stack and still returned back a
CompoundRoot object. To get the top of that particular stack cut, use 0<!----><!---->
<!---->
.top
(水平有限,为免误人子弟,在此直接引用原文由大家自己领会)
ognl expression
|
description
|
[0].top
|
would get the top of the stack cut starting from element 0 in the stack
(similar to top in this case)
|
[1].top
|
would get the top of the stack cut starting from element 1 in the stack
|
3)访问静态属性
OGNL
支持静态属性和静态方法的访问,具体代码片断举例如下:
@some.package.ClassName@FOO_PROPERTY
@some.package.ClassName@someMethod()
当然,
XWork
允许使用
”vs”prefix
避免指定完整的包名访问
Action
类中的静态方法和静态属性,如:
@vs@FOO_PROPERTY
@vs@someMethod()
@vs1@FOO_PROPERTY
@vs1@someMethod()
@vs2@BAR_PROPERTY
@vs2@someOtherMethod()
“vs
”代表“value stack
”.
The important
thing to note here is that if the class name you specify is just
"vs", the class for the object on the top of the stack is used. If
you specify a number after the "vs" string, an object's class deeper
in the stack is used instead.
(大家可对照上面的举例来自行理解该段说明)
4)
Struts2
指定的对象
Struts2
将
request parameters and request, session, and
application attributes
都存放在
OGNL stack
里面,可通过如下方式访问它们:
name
|
value
|
#parameters['foo'] or #parameters.foo
|
request parameter ['foo'] (request.getParameter())
|
#request['foo'] or #request.foo
|
request attribute ['foo']
(request.getAttribute())
|
#session['foo'] or #session.foo
|
session attribute 'foo'
|
#application['foo'] or #application.foo
|
ServletContext attributes 'foo'
|
#attr['foo'] or #attr.foo
|
Access to PageContext if available,
otherwise searches request/session/application respectively
|
FAQ:
1)在
jsp 2.1
中,
#
至今被用作
JSP EL
,在这种情况下就会引起和在应用中使用
OGNL
的
#
操作产生冲突的问题,对于这种情况,可通过在
web.xml
配置文件中添加以下配置片断在
JSP
2.1
容器中禁用
JSP EL
:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>
true
</el-ignored>
</jsp-property-group>
</jsp-config>
分享到:
相关推荐
### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...
本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与ValueStack、Tags以及项目中的关键实践。 **一、Action** Action是Struts2中处理业务逻辑的核心组件,它是实现了`...
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
13. ** strut2四天笔记**:这份学习笔记可能涵盖了以上所有知识点,包括如何创建Action,配置struts.xml,使用OGNL表达式,处理异常,以及实践中的各种技巧和最佳实践。 在四天的学习过程中,你应该通过实践和理解...
### Struts2学习笔记知识点详解 #### 一、准备工作及实例 **1. 解压struts-2.1.6-all.zip** - **Apps目录**:包含struts2自带的例子程序,供用户学习和参考。 - **Docs目录**:提供官方文档,包括API文档、指南等...
Struts2 OGNL语言学习笔记 OGNL(Object-Graph Navigation Language)是 Struts 2 中的一种表达式语言,主要用于简化 JSP 页面中的编码,使页面与后台代码分离。下面是 OGNL 语言的主要特点和用法: 1. 支持对象...
Struts2_OGNL笔记主要关注的是如何在Struts2框架中使用OGNL(Object-Graph Navigation Language)表达式语言。OGNL作为一种强大的表达式语言,常用于Struts2的视图层,允许开发者轻松地访问和操作Java对象的属性。 ...
4. **OGNL(Object-Graph Navigation Language)**:OGNL 是 Struts 2 中用于访问和操作对象属性的表达式语言,它简化了视图层的数据绑定。例如,在 JSP 中,可以直接使用 `${property}` 来访问值栈中的属性。 5. *...
这个"struts2学习笔记.rar"文件很可能包含了关于Struts2框架的详细教程和实践案例,对于学习和理解Struts2的核心概念和技术是非常有帮助的。 首先,Struts2框架的引入是为了克服早期Struts1框架的一些局限性,提供...
本学习笔记将深入探讨Struts2的核心概念、架构以及实际应用。 一、Struts2框架概述 1. 架构:Struts2基于Model-View-Controller(MVC)设计模式,将业务逻辑、数据处理和用户界面分离,提高了代码的可读性和可维护...
本笔记将详细解析Struts2的核心概念、发展历程、使用方法以及实际案例,帮助读者深入理解并掌握这一框架。 1. **Struts2概述** - **为什么使用Struts2**:在Web应用开发中,Struts2提供了结构化的控制层,有助于...
本学习笔记将对Struts1和Struts2进行详细解析。 **Struts1简介** Struts1是早期流行的MVC框架,它的核心是ActionServlet,负责处理HTTP请求,并通过ActionForm对象收集表单数据,然后调用Action类的方法进行业务...
- `ognl-3.0.3.jar`: 对象图导航语言,用于读写对象属性。 - `freemarker-2.3.18.jar`: 用于 UI 标签的模板引擎。 - `commons-logging-1.1.x.jar`: 日志处理库。 - `commons-fileupload-1.2.2.jar`: 文件上传...
### Struts2.1学习笔记 #### Struts2的来源与优点 - **来源**:Struts2是在WebWork2的基础上发展起来的,它继承了WebWork2的优点,并且进行了改进,使其更适合现代Web应用程序的需求。与Struts1相比,Struts2的...