Struts2使用标准的Context来进行OGNL表达式语言求值,OGNL的顶级对象是一个Context,这个Context对象就是一个Map类型实例,其根对象就是
ValueStack,如果需要访问ValueStack里的属性,直接通过如下方式即可:
    //取得ValueStack中bar属性
    ${bar}
除此之外,Struts2还提供了一些命名对象,但是这些命名对象都不是Stack Context的跟对象,它们只是存在于StackValue中。所以访问这些对象时需要使用“#”前缀来指明。
    parameters对象:用于访问HTTP请求参数。例如#parameters['foo']或#parameters.foo,用于返回调用HttpServletRequest的getParameters("foo")方法的返回值。
    request对象:用于访问HttpServletRequest的属性。例如#request['foo']或#request.foo,用于返回调用HttpServletRequest的getAttribute("foo")方法的返回值。
    session对象:用于访问HttpSession的属性。例如#session['foo']或#session.foo,用于返回调用HttpSession的getAttribute("foo")方法的返回值。
    application对象:用于访问ServletContext的属性。例如#application['foo']或#application.foo,用于返回调用ServletContext的getAttribute("foo")方法的返回值。
    att对象:该对象将依次搜素如下对象:PageContext,HttpServletRequest,HttpSession,ServletContext中的属性。
    
总结:
    OGNL的Stack Context是整个OGNL计算,求值的Context,而ValueStack只是StackContext内的“根”对象而已。OGNL的Stack Context里除了ValueStack这个根对象外,还包括parameters,request,session,application,attr等命名对象,但这些命名对象都不是根对象。Stack Context中的“根”对象和其他普通对象的区别在于:
    访问Stack Context里的普通命名对象需要在对象前加前缀“#”
    当访问OGNL的Stack Context里的“根”对象的属性时,可以省略对象名

最新文章

  1. js通过继承实现私有函数
  2. Hibernate注解使用以及Spring整合
  3. Asp.net MVC应用在IIS7上部署后403错误解决方案
  4. 关于volatile和synchronized
  5. Spring注解@Scheduled定时任务
  6. Android LogCat使用详解
  7. C#的配置文件App.config使用总结 - 转
  8. (转载)关于gcd的8题
  9. 漫谈MySQL primaryKey
  10. android——ObjectAnimator动画
  11. 静态页面调试JS出现跨域问题
  12. (转)每天一个linux命令(27):linux chmod命令
  13. OpenGL与CUDA互操作方式总结
  14. linux磁盘及分区详解
  15. Qtree3题解(树链剖分(伪)+线段树+set)
  16. WPF自学入门(五)WPF依赖属性
  17. python查询修改配置文件功能
  18. 【机器学习】--xgboost从初识到应用
  19. [Swift]LeetCode685. 冗余连接 II | Redundant Connection II
  20. Ocelot简易教程(一)之Ocelot是什么

热门文章

  1. 安装memcached扩展
  2. iClap的名字是怎么来的,clap是有什么特殊的意义么?
  3. Eclipse jvm启动参数在哪设置
  4. python3_configparser模块详解
  5. PHP联接MySQL
  6. [转]eclipse 配置黑色主题 Luna 方式三
  7. Object的各种方法
  8. 如何用纯 CSS 创作一只徘徊的果冻怪兽
  9. 20144303 《Java程序设计》第八周学习总结
  10. C++求矩阵的鞍点