知识大全 对Struts2 OGNL的分析与简介

Posted 属性

篇首语:成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 对Struts2 OGNL的分析与简介相关的知识,希望对你有一定的参考价值。

对Struts2 OGNL的分析与简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Struts OGNL基础上的增强

  1 值栈(ValueStack)

  Struts OGNL上下文设置为Struts 中的ActionContext(内部使用的仍然是OgnlContext) 并将值栈设为Struts OGNL的根对象

  我们知道 Struts OGNL上下文中的根对象可以直接访问 不需要使用任何特殊的 标记 而引用上下文中的其他对象则需要使用 # 来标记 由于值栈是上下文中的根对象 因此可以直接访问 那么对于值栈中的对象该如何访问呢?Struts 提供了一个特殊的OGNLPropertyAccessor 它可以自动查找栈内的所有对象(从栈顶到栈底) 直接找到一个具有你所查找的属性的对象 也就是说 对于值栈中的任何对象都可以直接访问 而不需要使用 #

  假设值栈中有两个对象 student和employee 两个对象都有name属性 student有学号属性number 而employee有薪水属性salary employee先入栈 student后入栈 位于栈顶 那么对于表达式name 访问的就是student的name属性 因为student对象位于栈顶 表达式salary 访问的就是employee的salary属性 正如你所见 访问值栈中的对象属性或方法 无须指明对象 也不用 # 就好像值栈中的对象都是OGNL上下文中的根对象一样 这就是Struts 在OGNL基础上做出的改进

   [N]语法

  如上所述 如果想要访问employee的name属性 应该如何写表达式呢?我们可以使用[N] xxx(N是从 开始的整数)这样的语法来指定从哪一个位置开始向下查找对象的属性 表达式[ ] name访问的就是employee对象的name属性

  在使用[N] xxx语法时 要注意位置序号的含义 它并不是表示 获取栈中索引为N的对象 而是截取从位置N开始的部分栈

   top关键字

  top用于获取栈顶的对象 结合[N] xxx语法 我们就可以获取栈中任意位置的对象

  如 [ ] top [ ] top等

   访问静态成员

  除了使用标准的OGNL表达式访问静态字段和静态方法外 Struts 还允许你不指定完整的类名 而是通过 vs 前缀来调用保存在栈中的静态字段和静态方法

  

  @vs@FOO_PROPERTY@vs@someMethod()@vs @someMethod()

  vs表示ValueStack 如果只有vs 那么将使用栈顶对象的类 如果在vs后面跟上一个数字 那么将使用栈中指定位置处的对象类

  标准方法:@类全限定名@静态属性或方法名

  

  < ?xml:namespace prefix = s />< s:property value= @action SystemInfo@WEB_CONTEXT >< /s:property>

   值栈中的Action实例

  Struts 框架总是把Action实例放在栈顶 因为Action在值栈中 而值栈又是OGNL中的根 所以引用Action的属性可以省略 # 标记 这也是为什么我们在结果页面中可以直接访问Action的属性的原因

   Struts 中的命名对象

  Struts 还提供了一些命名对象 这些对象没有保存在值栈中 而是保存在ActionContext中 因此访问这些对象需要使用 # 标记 这些命名对象都是Map类型

  parameters

  用于访问请求参数 如 #parameters[ id ]或#parameters id 相当于调用了HttpServletRequest对象的getParameter()方法

  注意 parameters本质上是一个使用HttpServletRequest对象中的请求参数构造的Map对象 一量对象被创建(在调用Action实例之前就已经创建好了) 它和HttpServletRequest对象就没有了任何关系

  request

  用于访问请求属性 如 #request[ user ]或#request user 相当于调用了HttpServletRequest对象的getAttribute()方法

  session

  用于访问session属性 如 #session[ user ]或#session user 相当于调用了HttpSession对象的getAttribute()方法

  application

  用于访问application属性 如 #application[ user ]或#application user 相当于调用了ServletContext的getAttribute()方法

  attr

  如果PageContext可用 则访问PageContext 否则依次搜索request session和application对象

cha138/Article/program/Java/ky/201311/28342

相关参考

知识大全 Struts2简介

Struts2简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一什么是Struts?  虽然

知识大全 Struts2 框架使用实例分析

Struts2框架使用实例分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下面我们通过实例来

知识大全 Struts2请求处理流程及源码分析

Struts2请求处理流程及源码分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts

知识大全 Struts2与Struts1的对比

Struts2与Struts1的对比  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Action

知识大全 浅析Struts2与Webwork2的区别

浅析Struts2与Webwork2的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 浅谈Struts2分页的实现与代码实例

浅谈Struts2分页的实现与代码实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  关于Str

知识大全 小解一下Struts2与Webwork2的区别

小解一下Struts2与Webwork2的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

反渗透系统故障分析与建议

1.概要如有很多原因会造成反渗透设备不能正常运行。如同医生诊病一样,在你对问题作进一步分析之前,你必须可能地收集各种征状。2.简介本篇的主题是如何排除RO设备的故障,我们假定设备设计有相应的仪表和取样

反渗透系统故障分析与建议

1.概要如有很多原因会造成反渗透设备不能正常运行。如同医生诊病一样,在你对问题作进一步分析之前,你必须可能地收集各种征状。2.简介本篇的主题是如何排除RO设备的故障,我们假定设备设计有相应的仪表和取样

反渗透系统故障分析与建议

1.概要如有很多原因会造成反渗透设备不能正常运行。如同医生诊病一样,在你对问题作进一步分析之前,你必须可能地收集各种征状。2.简介本篇的主题是如何排除RO设备的故障,我们假定设备设计有相应的仪表和取样