三大框架 之 OGNL表达式
OGNL
什么是OGNL
- OGNL是Object-Graph Navigation Language的缩写,
- 它是一种功能强大的表达式语言,通过它简单一致的表达式语法,
- 可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
OGNL与EL表达式对比
OGNL对象图导航语言,比EL表达式强大很多倍的语言
EL表达式只能从域中获取数据
OGNL可以调用对象的方法,获取struts的值栈的数据。
OGNL是第三方的表达式语言,用它来获取struts中值栈的数据
OGNL功能
- 支持运算符(如+-*/)
- 支持对象方法调用,如xxx.doSomeSpecial();
- 支持类静态的方法调用和值访问
- 支持赋值操作和表达式串联
- 访问OGNL上下文
- 操作集合对象
- 可以直接new一个对象
OGNL使用要素
- 表达式
- 根对象
- Context对象(非根对象)
OGNL入门
OGNL核心OgnlContext,本质就是一个map
java程序使用ognl
获取root中的数据
可以向root当中存放Java对象
不需要加#号

获取context中的数据
取数据时需要加#

获取对象方法

获取对象静态方法

struts2中使用ONGL
- 在jsp当中引入struts的标签库
- 直接在jsp当中使用OGNL

访问静态方法
默认是不让访问静态成员
需要开启一个常量(struts.ognl.allowStaticEmthodAccess)


三大框架 之 OGNL表达式的更多相关文章
- struts2框架之OGNL表达式概述(在代码中使用OGNL表达式)
1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写 * 所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象 * 通 ...
- struts框架中OGNL表达式的使用之jsp页面获取action中的属性值
在jsp页面中获取action中的值: 1.写一个action类OgnlAction类: 需要注意的地方: 如果在aciton中直接使用ognl表达式,将值存储的值栈中,是不能通过跳转将值传到jsp页 ...
- JavaWeb框架SSH_Struts2_(四)----->表达式语言OGNL
1. 表达式语言OGNL OGNL简介 OGNL基本语法 常量 操作符 OGNL表达式 OGNL基础 OGNL上下文 OGNL值栈 OGNL的访问 2. 具体内容 2.1 OGNL简介 OGNL(Ob ...
- struts2框架学习笔记5:OGNL表达式
OGNL取值范围分两部分,root.Context两部分 可以放置任何对象作为ROOT,CONTEXT中必须是Map键值对 示例: 准备工作: public void fun1() throws Ex ...
- 在Struts2框架中使用OGNL表达式(在jsp页面中使用OGNL表达式)
1. Struts2引入了OGNL表达式,主要是在JSP页面中获取值栈中的值 2. 具体在Struts2中怎么使用呢?如下步骤 * 需要先引入Struts2的标签库(在JSP页面的最上面位置) > ...
- struts框架之总结OGNL表达式的特殊的符号
1. # 符号的用法 * 获得contextMap中的数据 > <s:property value="#request.name"/> > <s:pr ...
- 2018.11.28 OGNL表达式与struts2框架结合的体现---在配置文件中体现(补充)
Demo3Action配置 struts.xml 主配置文件配置 地址栏输入 http://localhost:8080/StrutsDay03/Demo3Action 对于主配置的文件参数而言,如果 ...
- JavaWeb框架_Struts2_(四)----->表达式语言OGNL
2. 表达式语言OGNL 2.1 OGNL简介 OGNL(Object-Graph Navigation Language)对象图导航语言的缩写,OGNL是一种表达式语言(Expression L ...
- SSH三大框架笔面试总结
Java工程师(程序员)面题 Struts,Spring,Hibernate三大框架 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建Sess ...
随机推荐
- Java 之 函数式编程
一.Lambda 的延迟执行 有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费.而Lambda表达式是延迟执行的,这正好可以作为解决方案,提升性能 . 性能浪费的日志案例 注意:日志可以帮助 ...
- aapt&adb笔记
aapt 查看安装包信息aapt list apk路径* aapt list xxx/app-debug.apk 查看apk文件信息并保存到本地(> 重定向符) * aapt list xx/a ...
- mysql 登录报错
执行命令:mysql -u root -p 错误:error while loading shared libraries: libncurses.so.5: cannot open shared o ...
- yum源仓库的三种搭建方式
yum源的三种搭建方式 一. 本地yum仓库的搭建 1.1.获取软件包资源 将iso镜像挂载在本地目录中,此次挂载目录为/var/www/html/repo/,此目录本身不存在,需要创建.软件宝资源 ...
- MySQL 空事务
问题描述; 研发同事反应MySQL数据库有锁,检查innodb_trx时,发现有很多长时间未结束的空事务. 这些事务的trx_mysql_thread_id都为0,因此不能通过kill ...
- suse双网卡绑定
这里使用两张网卡eth1.eth2进行 编辑/etc/sysconfig/network/ifcfg-bond0文件(此文件没有需要创建) device='bond0' BOOTPROTO='stat ...
- Java中处理接口返回base64编码的图片数据
在做接口测试的时候,某些接口返回的content是一大段加密文字.这种情况下,有可能是返回的图片加密数据,需要将这些数据转换成图片进行保存查看. 例如: 这里,可以看到Content对应的键值开头有“ ...
- vue 关于props 父组件传值
swiper.vue 子组件 info.vue 父组件 swiper.vue<template> <div class="swiper-wrap" @mouse ...
- 使用navicat创建数据库
1. 打开navicat 2. 选中数据库连接“root”右键->新建数据库 3. 填写数据库名称,注意名称不要以数字开头,不要有中文.空格.特殊字符等 4. 选择“字符集”,常用的为utf ...
- 《你说对就队》第八次团队作业:Alpha冲刺 第二天
<你说对就队>第八次团队作业:Alpha冲刺 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 团队名称 <你说对就队> 作业学习 ...