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

OGNL表达式语言浅谈

阅读更多
OGNL(Object Graphic Navigation Language,对象图导航语言)是一种功能强大的EL(Expression Language,表达式语言,JSP2.0规范),Struts2的核心表达式语言,OGNL是一个开源JAVA项目,但因为使用Struts2,我们完全不需要知道OGNL到底里面是什么东东,只需要按照Struts2的规则知道如何使用就OK了!第二章已经说过(请参看第二章的OGNL结构图),Struts2将Action中的实例压入值栈(ValueStack,值栈,Struts2的根对象,可以把它简单的理解为List,只不过它遵循堆栈的特点,先进后出!),session等放入Context Map中,然后使用OGNL遍历对象结构图进行操作。

在JSP中,session、request、application、attr(如果可以就从pageContext查找,否则就依次到request、session、application中查找)、parameters(用于取URL上的参数,同名的变量可以使用索引)等对象取值时要使用前缀 # 告诉Struts2不要到值栈中查找,例如:(1.)#session.infomation,#session[‘student-information’],OGNL中使用 . 或者[‘’]访问对象的属性,两者的区别是当属性中有“-”等特殊字符时,我们需要使用[‘’];
(2.)URL为http://locaohost:9999/struts01/HelloWorld.ok?name=gold&&password=jsmart,如果我想取name的值,需要这样写#parameters.name,取password的值就是#parameters.password;如果是http://localhost:9999/struts01/HelloWorld.ok?password=gold&&password=jsmart,#parameters.password[0]取的就是gold,#parameters.password[1]=jsmart;
(3.)%{A}所有基于这种形式的内容,都会被解析并到值栈中求值,也就是会到Value Stack中查找A所代表的值;如果你想A被当作字符串原样传递,那么可以这样表示%{‘A’},当然你直接使用A有的时候也是可以的,但为了通用性,建议使用%{‘A’},以免产生不必要的麻烦。
(4.)OGNL操作集合,例如值栈中存在map,我们可以这样访问map[‘a’],表示访问Map中key值为a的value值是多少,map.size访问大小等等。
(5.)OGNL访问类中的静态变量和静态方法:@完整类名@属性名,@完整类名@方法名,例如:
Package net.ilkj.ognl
Public Class A{
Public static final String a=”1”;

Public static String findA()
{
Return “2”;
}
,我们就可以在页面上使用<:sproperty value=”@net.ilkj.ognl.A@a”/>尽心输出!

从上面可以看出,在Struts2中使用OGNL,可以简单看作就是对象.属性。


文章来源:wiki
分享到:
评论

相关推荐

    OGNL表达式语言浅谈.pdf

    OGNL(Object-Graph Navigation Language,对象图导航语言)是一种强大的表达式语言,常用于Java应用,特别是Struts2框架中。它允许开发者通过简洁的语法来访问和操作对象图,包括属性、方法调用以及集合操作。在...

    浅谈struts2安全

    3. **类型转换漏洞**:Struts2的OGNL(Object-Graph Navigation Language)表达式语言允许动态类型转换,这可能导致类型转换攻击。如果不正确地处理用户输入,攻击者可能利用此特性执行非法操作或获取敏感信息。 4....

    浅析webwork

    WebWork的类型安全的表达式语言(Ognl)也是其独特之处,它允许开发者在视图层直接访问Action的属性和方法,增强了模板语言的灵活性。 然而,随着Spring MVC和Struts2等框架的崛起,WebWork逐渐失去了市场份额。...

    基于MATLAB的电动汽车削峰填谷多目标充放电优化调度策略研究

    内容概要:本文探讨了利用电动汽车参与电网削峰填谷的多目标优化调度策略。通过MATLAB平台,使用YALMIP工具箱和CPLEX求解器构建了一个精确的数学模型,旨在同时降低用户的综合成本、减少电网峰谷差并稳定负荷波动。文中详细介绍了目标函数的设计思路,包括各子目标的权重分配方法及其背后的考量因素;电池退化成本的计算方式;关键约束条件如SOC连续性和峰谷限制的具体实现;以及最终优化结果带来的显著效益。此外,还分享了一些实用技巧,比如如何选择合理的初始值以提高求解效率。 适合人群:电力系统研究人员、智能电网工程师、从事电动汽车相关工作的技术人员。 使用场景及目标:适用于需要解决电网负荷不均衡问题的研究机构或企业,特别是在推广新能源汽车过程中面临较大挑战的城市和地区。本研究的目标在于提供一种有效的解决方案,既能够保障车主利益最大化,又可以促进能源的有效利用和社会可持续发展。 其他说明:文中提供的完整代码和详细的说明文档有助于读者快速理解和应用该优化策略。未来还可以进一步探索加入更多变量(如天气预报、光伏发电量)的可能性,使模型更加完善。

    实训商业源码-游戏扫码登录多功能工具箱集合微信小程序源码-毕业设计.zip

    实训商业源码-游戏扫码登录多功能工具箱集合微信小程序源码-毕业设计.zip

    COMSOL激光烧蚀技术:脉冲激光打孔包与动网格固体传热模块的应用解析

    内容概要:本文详细介绍了COMSOL激光烧蚀脉冲激光打孔包及其在工业生产中的应用。首先阐述了激光打孔技术的优势,随后重点讲解了两个核心模块——动网格模块和固体传热模块的功能和作用。动网格模块用于模拟激光束在材料中的传播路径、烧蚀区域的形成及材料表面的热交换过程;固体传热模块则专注于模拟材料在激光烧蚀过程中的热传导特性,帮助优化工艺参数并提高加工效率。文中还列举了具体的案例分析,展示了该技术在金属材料加工中的广泛应用。最后讨论了技术的优势与面临的挑战,并对未来的发展进行了展望。 适合人群:从事材料加工、激光技术研究的专业人士,以及希望深入了解COMSOL软件应用的研究人员和工程师。 使用场景及目标:适用于需要进行高精度、高效率金属材料加工的企业和个人。通过学习和应用COMSOL激光烧蚀脉冲激光打孔包,可以优化工艺流程,提升产品质量和生产效率。 其他说明:尽管COMSOL提供了强大的建模和分析功能,但在实际操作中还需注意模型复杂度的控制和仿真结果的准确性验证等问题。

    yudao ruoyi-pro 开源项目 crm 客户管理模块初始化sql

    yudao ruoyi-pro 的 CRM 客户管理模块初始化 SQL 包含客户全生命周期管理核心表结构及基础数据,支持客户信息、商机、联系人及合同管理。资源涵盖客户表(crm_customer)、商机表(crm_business)、联系人表(crm_contact)、合同表(crm_contract),集成客户分群、跟进记录、公海池回收规则、合同审批流程等数据模型。内置示例客户数据、测试商机线索及合同模板,通过 crm_ 前缀表实现模块解耦。适配 Ruoyi 权限体系,提供角色-客户权限绑定、菜单路由初始化,支持客户分配流转、跟进时间线、销售漏斗分析及业绩统计功能,适用于企业销售管理、客户资源维护及跨部门协作场景快速搭建。

    cJSON.c开源文件

    cJSON.c开源文件

    【计算机网络】学习资料、题目合集与实验项目整合:涵盖网络协议分析、工具使用及综合设计题解析整理了计算机网络

    内容概要:本文档为计算机网络学习提供全面的资源整合指南,涵盖学习资料推荐、题目合集与考点解析、实验项目指导以及工具使用教程。学习资料包括核心教材与课件、题库与解析、慕课资源,重点讲解网络分层模型、IP分段与重组、路由算法等知识点。题目合集部分针对选择题和综合设计题提供了典型题目及其答案参考来源,帮助学生掌握网络拓扑结构、IP地址划分、传输层协议等内容。实验项目指导则详细介绍了验证性实验和设计性实验的操作步骤,如IP地址配置与连通性测试、ARP协议解析、TCP连接分析等。工具使用教程包括Wireshark抓包过滤器语法和高级功能,以及Cisco Packet Tracer的基础操作和进阶应用。最后,文档还给出了从入门到深化阶段的学习路径建议。; 适合人群:计算机网络初学者、有一定基础的学生或技术人员。; 使用场景及目标:①作为计算机网络课程的辅助学习材料;②用于备考相关认证考试;③为实际网络工程设计和故障排查提供实践指导。; 阅读建议:建议按学习路径逐步深入,先掌握基础知识和基本命令,再进行实验操作,最后利用工具深入分析协议和网络行为。

    012204124_王韵淇_仿真报告.docx

    012204124_王韵淇_仿真报告.docx

    三相PWM逆变器电压电流双闭环控制的Matlab/Simulink仿真及其抗扰性测试

    内容概要:本文详细介绍了基于Matlab/Simulink 2021b的三相PWM逆变器电压电流双闭环控制系统的设计与仿真。主要内容涵盖主电路设计(采用IGBT)、坐标变换(Clarke变换和Park变换)、电压电流双环PI控制器以及SVPWM控制。特别关注了在0.2秒时突加负载情况下系统的抗扰性能,展示了系统在突加载情况下的快速恢复能力和稳定性。文中还分享了一些调试经验和优化技巧,如在Park变换后加入低通滤波器以减少高频噪声干扰,调整仿真步长以提高仿真的精度和效率。 适合人群:电力电子工程师、自动化控制领域的研究人员和技术人员,尤其是对逆变器控制和仿真感兴趣的读者。 使用场景及目标:适用于需要深入了解三相PWM逆变器控制原理和仿真实现的研究人员和技术人员。目标是掌握电压电流双闭环控制的具体实现方法,了解SVPWM的工作机制,并能进行有效的抗扰性测试。 其他说明:本文不仅提供了详细的理论背景,还包含了具体的实现步骤和调试经验,有助于读者更好地理解和应用相关技术。

    电网技术前沿:基于IEEE73节点的三区输电网暂态仿真与调频调压研究

    内容概要:本文详细介绍了利用IEEE73节点三区输电网进行暂态仿真和调频调压的研究方法。首先,通过Python加载IEEE73节点的数据并解析关键节点信息,特别是第15号节点作为区域间联络枢纽的作用。接着,通过PSCAD设置故障条件,如三相短路故障,来模拟暂态过程,并分析发电机转速波动情况。对于调压部分,采用Python进行灵敏度分析,识别对系统电压最敏感的机组。最后,使用MATLAB计算系统的动态响应,探讨不同区域之间的耦合效应及其对频率恢复的影响。文中还强调了模型校验的重要性以及参数设置的精确性。 适合人群:电力系统研究人员、电网工程师、高校相关专业师生。 使用场景及目标:适用于需要深入了解输电网暂态特性和调频调压机制的研究人员和技术人员。目标是掌握如何通过仿真工具分析复杂电网行为,优化电网运行性能。 其他说明:建议初学者从简单的单机无穷大系统入手,逐步深入到完整的三区输电网模型,确保理解和应用的准确性。

    OneView - RAW和YUV看图工具,支持Tiny ISP处理和格式转换

    OneView - RAW和YUV看图工具,支持Tiny ISP处理和格式转换

    【智能汽车竞赛】基于飞思卡尔MK60DN512VLQ10的智能车系统设计:特技动作实现与硬件集成

    内容概要:文章详细介绍了渤海大学首胜队参加第九届“飞思卡尔”杯全国大学生智能汽车竞赛的情况。该竞赛涵盖控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科,旨在推动汽车智能化技术的发展。文中首先阐述了智能汽车的研究背景及其重要性,强调智能化是未来汽车发展的趋势。接着介绍了基于MK60DN512VLQ10微处理器的智能车设计方案,包括机械设计(悬挂、轮胎、舵机等)、电路设计(电源管理、电机驱动、红外检测、摄像头、编码器等)和动作设计(腾空飞跃、漂移过弯、走双边桥、过转盘、侧边行车、漂移入位)。文章还展示了系统框图,详细列出了各模块的功能和连接方式。最后总结了团队在整个项目中的收获,包括遇到的问题、解决方案以及团队协作的经验。 适合人群:对智能汽车竞赛感兴趣的学生和技术爱好者,尤其是参与类似竞赛或研究项目的人员。 使用场景及目标:①帮助读者了解智能汽车竞赛的具体流程和技术要求;②为准备参加此类竞赛的团队提供参考案例和技术支持;③展示如何将多学科知识融合应用于实际工程项目中。 其他说明:本文不仅提供了详细的硬件设计和软件编程指导,还分享了团队在比赛过程中积累的经验教训,强调了团队合作的重要性。此外,文章附有详细的参考文献列表,方便读者进一步查阅相关资料。

    基于SpringBoot+Vue前后端分离的Java快速开发框架

    基于SpringBoot+Vue前后端分离的Java快速开发框架。移动端采用Vue、Uniapp、Uview。PC端采用Vue、Element UI。后端采用Spring Boot、Mybatis、Spring Security、Redis & Jwt。推荐使用Camunda实现工作流。推荐使用Websocket实现即时通讯。推荐使用OSS、COS实现对象存储。推荐使用Luckysheet实现Excel拖拽赋值的Web数据录入。推荐使用Vxe-table实现单行编辑,即时保存效果。推荐使用ECharts,UCharts实现数据可视化图表。推荐使用DataV展示可视化大屏数据。推荐使用IReport实现复杂报表导出Pdf、Execl,Word。推荐使用UReport实现自定义报表设计。推荐使用Hiprint实现自定义报表打印设计。推荐使用kkFileView实现在线预览,支持doc,docx,Excel,pdf,txt,zip,rar,图片等。使用OAuth2实现三方应用授权。支持多种登录方式(微信扫码登录,微信授权登录,验证码登录,密码登录)。支持微信、支付宝等第三方支付。支持加载动态权限菜单,控制菜单权限,按钮权限,数据权限。高效率开发,使用代码生成器可以一键生成前后端代码。

    实训商业源码-青苹果-毕业设计.zip

    实训商业源码-青苹果-毕业设计.zip

    实训商业源码-漫画小程序-毕业设计.zip

    实训商业源码-漫画小程序-毕业设计.zip

    直流无刷电机控制器硬件方案:智能调速、多重保护与简易调试

    内容概要:本文详细介绍了全新的直流无刷电机控制器硬件设计方案,涵盖智能调速、正反转控制、多级保护(如限流、启动力矩设置、电压保护、电流保护、温度保护)以及简易调试等功能。硬件设计采用模块化的H桥驱动和信号调理,选用耐用的MOSFET IRFS7530和DRV8301驱动芯片,确保高精度控制和稳定性。调速算法采用分段式PID,启动阶段使用模糊控制,高速阶段则使用经典PID,确保启动平稳和运行稳定。保护机制方面,采用了快速响应的电流采样和温度预测算法,能够在极端情况下迅速切断输出,保障安全。此外,提供了详细的调试手册,帮助用户轻松完成调试。 适用人群:适用于从事电机控制系统设计的技术人员、电子工程师及相关领域的研究人员。 使用场景及目标:本方案旨在提供一种高性能、易调试的直流无刷电机控制器解决方案,适用于需要精确控制和多重保护的应用场景,如工业自动化设备、机器人等领域。 其他说明:调试手册配有生动的RAP口诀,便于初学者快速掌握调试技巧,使整个调试过程更加直观和高效。

    实训商业源码-可乐个人发卡源码2.0v修复版-毕业设计.zip

    实训商业源码-可乐个人发卡源码2.0v修复版-毕业设计.zip

Global site tag (gtag.js) - Google Analytics