- 浏览: 59889 次
- 性别:
- 来自: 成都
文章分类
OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。
Struts 2框架使用OGNL作为默认的表达式语言。 相对EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHello(); 支持类静态方法调用和值访问,表达式的格式为 [类全名(包括包路径)] 方法名 | 值名], Ognl 有一个上下文(Context)概念,说白了上下文就是一个MAP结构,它实现了java.utils.Map接口,在Struts2中上下文(Context)的实现为ActionContext,下面是上下文(Context)的结构示意图 2.访问上下文(Context)中的对象需要使用#符号标注命名空间,如#application、#session 另外OGNL会设定一个根对象(root对象),在Struts2中根对象就是ValueStack(值栈) 。如果要访问根对象(即ValueStack)中对象的属性,则可以省略#命名空间,直接访问该对象的属性即可。 在struts2中,根对象ValueStack的实现类为OgnlValueStack,该对象不是我们想像的只存放单个值,而是存放一组对象。在OgnlValueStack类里有一个List类型的root变量,就是使用他存放一组对象
|--request
|--application context ------
|--OgnlValueStack root变量[action, OgnlUtil, ... ]
|--session
|--attr
|--parameters
在root变量中处于第一位的对象叫栈顶对象。通常我们在OGNL表达式里直接写上属性的名称即可访问root变量里对象的属性,搜索顺序是从栈顶对象开始寻找,如果栈顶对象不存在该属性,就会从第二个对象寻找,如果没有找到就从第三个对象寻找,依次往下访问,直到找到为止。 大家注意: Struts2中,OGNL表达式需要配合Struts标签才可以使用。如:<s:property value="name"/>
3.由于ValueStack(值栈)是Struts 2中OGNL的根对象,如果用户需要访问值栈中的对象,在JSP页面可以直接通过下面的EL表达式访问ValueStack(值栈)中对象的属性:
${foo} //获得值栈中某个对象的foo属性
如果访问其他Context中的对象,由于他们不是根对象,所以在访问时,需要添加#前缀。
application对象:用于访问ServletContext,例如#application.userName或者#application['userName'],相当于调用ServletContext的getAttribute("username")。
session对象:用来访问HttpSession,例如#session.userName或者#session['userName'],相当于调用session.getAttribute("userName")。
request对象:用来访问HttpServletRequest属性(attribute)的Map,例如#request.userName或者#request['userName'],相当于调用request.getAttribute("userName")。
parameters对象:用于访问HTTP的请求参数,例如#parameters.userName或者#parameters['userName'],相当于调用request.getParameter("username")。
attr对象:用于按page->request->session->application顺序访问其属性。
发表评论
-
Spring源码分析之IOC2
2013-03-16 23:25 861本篇将介绍下ApplicationCo ... -
Spring源码分析之IOC
2013-03-16 21:40 774先看两种方式在IOC容器取得bean 1 beanFactor ... -
一些在工作中遇到的问题汇总
2012-12-10 23:31 0保留一定的小数位数 1 DecimalFormat ... -
Set集合源码初探
2012-12-06 23:07 0[color=green][size=medium] ... -
一些常用的jar包
2012-12-04 22:44 0一些常用的jar 放在网上方便使用 Did your c ... -
java 获取请求ip
2012-11-20 23:11 3277public class IpUtil { publ ... -
mongodb
2012-11-20 22:09 744mongodb文档, -
padingtoolbar 的扩张
2012-10-31 22:01 0在Ext的原有分页控件中,服务器端方法是根据传入的起始数据记录 ... -
extjs的一些组件
2012-10-17 22:34 724<script type="text/java ... -
extjs
2012-10-14 23:09 639extjs的一些文档 -
jquery ui
2012-09-11 22:54 749一个jquery ui 后台 -
重拾java之线程1
2012-09-10 00:17 965[size=medium] 接触java也有一段时间了,以前选 ... -
dom4j 一些使用
2012-07-30 22:40 0dom4j使用 -
一个http请求
2012-07-18 00:04 0ackage com.sxit.phoenix.common; ... -
读书笔记effective之对所有对象通用的方法
2012-03-18 17:22 899读书笔记effective之对所有对象通用的方法 第一条 覆 ... -
读书笔记effective java 之条目
2012-03-18 15:05 843最近看了下effective java 有编程许多经验值得学 ... -
读书笔记effective java 之通用程序设计3
2012-03-15 22:21 900第五条 基本类型优先于装箱基本类型 java有一个类型系 ... -
读书笔记effective java 之通用程序设计2
2012-03-15 20:59 928第三条 了解和使用类库 ... -
effective java 之通用程序设计
2012-03-15 16:15 770第一条 将局部变量的作用域最小化 将局部变量的作用域最小 ... -
http与socket连接区别
2011-11-08 01:11 474相信不少初学手机联网 ...
相关推荐
ogln.jar源文件下载 ogln源文件下载-ogln.jar的愿文件 ogln ogln源文件 ogln源代码 ogln.jar
Login Failed(解决方案).md
webots月球车仿真
内容概要:本文提供了关于2025年美国大学生数学建模竞赛的重要时间点安排以及竞赛的具体细节介绍。文中明确了从报名到最终结果发布的所有时间节点,详细列出了两种不同类型的竞赛题目特点,即传统的连续性和离散性问题和涉及数据科学技术的题目的特点。同时规定了参赛队伍构成形式、论文要求及评审标准,并提及了对工具使用的具体限制条件以及对于学术诚信的要求——强调独立解决问题的重要性。此外还简述了此次赛事所提供的多个层次获奖可能性的情况介绍。 适用人群:对数学应用有兴趣的大四本科生或者研究生;准备参加2025年度数学建模国际大赛的学生。 使用场景及目标:帮助想要参赛的同学提前规划自己的备考周期,在有限的时间内最大化提升自身的竞争力;确保选手了解完整的参赛规则避免不必要的失误导致成绩受损。 其他说明:该竞赛是一项非常具有挑战性的活动,它不仅考验了参赛者的专业知识水平,还需要他们展示出色的跨学科合作能力。因此参与者应该尽早开始准备,充分考虑各个方面的因素,如组建团队、收集资料和练习旧试题等。
2025年最新康复医学概论考试题库与答案.docx
Move Class.html
C标准库源码
2025检验类之临床医学检验技术(士)真题库附答案.pptx
C标准库源码
C标准库源码
Selva Assignment Class tank problem.pptx
C标准库源码
基于二维四值元胞自动机和混沌系统的图像加密算法.pdf
CST闪电间接效应研究.pdf
### 智慧人防解决方案:科技赋能,守护安全 智慧人防解决方案通过整合军队、政府和社会资源,构建了一个集预警报知、指挥控制、防护救援、综合保障于一体的智能化系统。该方案依托物联网、大数据、GIS与BIM等技术,实现了对人防工程、战备物资、设备设施的全面监控与管理。通过智能监测、可视化展示、远程维护等功能,智慧人防不仅提升了人防设施的运行效率,还确保了设备的安全性和可靠性。例如,系统能够实时监测人防工程的给排水、通风、消防等设施,精准定位异常情况,确保设备始终处于最佳状态。这种“智慧化”的管理模式,不仅提高了人防系统的应急响应能力,还为战时和日常的防护救援提供了强有力的技术支撑。 ### 人防宣传教育与应急指挥:沉浸式体验与高效调度 智慧人防解决方案在人防宣传教育方面,突破了传统的展板宣传模式,引入了VR交互、移动App、微信公众号等现代化手段,打造了沉浸式的防空防灾体验平台。通过模拟空袭疏散、核武器袭击、火灾逃生等场景,市民可以在虚拟环境中学习和掌握应急技能,提升自我保护意识。此外,智慧人防还构建了应急指挥调度系统,实现了从预防、启动、处置到分析的全流程管理。系统通过视频监控、广播系统、手持终端等设备,快速获取现场信息,实时上报并指挥调度,确保突发事件能够迅速得到有效处置。这种“一键式”警报推送和逃生指示功能,不仅提高了应急响应的效率,还增强了公众的安全感。 ### 信用体系与协同监管:构建透明、高效的人防生态 智慧人防解决方案还引入了人防行业信用体系,通过公示系统、协同监管平台等工具,实现了对企业、个人和培训机构的全方位信用管理。系统支持企业信息查询、信用修复、联合惩戒等功能,确保人防行业的透明度和规范性。例如,企业可以通过平台公示年报和即时信息,公众可以查询企业的信用记录,政府部门则可以通过协同监管平台进行实时监控和数据分析。这种信用体系的建立,不仅提升了人防行业的整体管理水平,还为社会公众提供了更加安全、可靠的服务保障。通过科技手段与信用管理的结合,智慧人防解决方案为构建高效、透明的人防生态奠定了坚实基础。
【技术分享】Python中URL处理的常见问题及解决方案,值得收藏!.docx
C标准库源码
C标准库源码
康复医学考试题及答案.docx
Python完整程序-Pandas提取指定数据并保存在原Excel工作簿中,含有完整的源码