java之struts2之OGNL表达式
struts2推荐使用ognl表达式
ognl: object graph navigation language 对象导航图语言
如:school.teacher.address="北京"
1. ognl的使用
public class OgnlTest {
public static void main(String[] args) throws OgnlException {
//ognl将数据分为两类;常用的和不常用 大的和小的
//把常用的数据放在 获取方便的地方 把不常用的数据放在获取麻烦一点的地方。
//在ognl中 把常用的数据放在 根对象(root) 不常用的数据放在context(上下文)---是一个map; Ognl.getValue("取值", map(map对象), user(根对象)),取值如果直接如”user”怎取根对象,如果“#address”取map中的对象
Map<String,Object> map = new HashMap<String,Object>();
map.put("address", "北京昌平");
map.put("user", new User("张三","1111"));
User user = new User("siggy","2222");
//ognl表达式获取根对象的数据 直接获取即可
System.out.println(Ognl.getValue("name", map, user));
//ognl表达式获取上下文对象 需要加#获取
System.out.println(Ognl.getValue("#address", map, user));
System.out.println(Ognl.getValue("#user.name", map, user));
}
}
在struts2中可以通过ognl表达式获取数据,在strut2将ActionContext对象作为ognl的上下文对象,ValueStack作为ognl的根对象。
ValueStack是一个栈接口,称为值栈。在一个请求来时会创建一个ValueStack,将Action的属性值放入值栈中。创建Action处理类后将值栈中的属性值设置到处理类中上。Action中的属性值会放入到ValueStack。在请求结束时ValueStack消亡。
2.在struts2中使用ognl表达式获取值,需要添加strut2的标签库,并且需要使用特定的标签来获取值。
导入标签库
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
使用标签获取
欢迎<s:property value="user.name"/>使用系统---从值栈中获取<br/>
欢迎<s:property value="#session.currentUser.name"/>使用系统---从ActionContext--session中获取<br/>
欢迎<s:property value="#attr.currentUser.name"/>使用系统---从ActionContext--attr中获取<br/>
欢迎<s:property value="#parameters['user.name']"/>使用系统---从ActionContext--parameter中获取<br/>
欢迎${sessionScope.currentUser.name }使用系统---从ActionContext中获取<br/>
非值栈方式使用

java之struts2之OGNL表达式的更多相关文章
- Struts2的OGNL表达式语言
一.OGNL的概念 OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者 ...
- 初窥struts2(二)OGNL表达式
Struts2总结 Struts2完整的处理流程: 1 客户端发送请求,交给struts2控制器(StrutsPrepareAndExecuteFilter). 2 Filter控制器进行请求过滤 ...
- Struts2之OGNL表达式
OGNL(Object-Graph Navigation Language的简称),对象图导航语言,它是一门表达式语言,除了用来设置和获取Java对象的属性之外,另外提供诸如集合的投影和过滤以及lam ...
- struts2(四) ognl表达式、值栈、actionContext之间的关系
今天来说说ognl表达式在struts2中的运用. --wh 一.什么是Ognl? 通过百度百科查询到的解释,其中详细的说明了OGNL的作用. 下面我们就对OGNL这5个作用进行讲解 1.存取对象的任 ...
- struts2:OGNL表达式,遍历List、Map集合;投影的使用
OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存 ...
- Struts2中OGNL表达式的用法
今天分享的是Struts2框架中的一种ognl表达式语言,主要分两个目标去学习 1.理解struts2传值的优先级 2.ognl与el的区别 一:ognl表达式语言简介 OGNL的全称是O ...
- struts2 与 OGNL 表达式,jsp中 利用ognl 在valuestack中取值
在Struts2中,一个请求在终于到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是 ...
- Struts2之 OGNL表达式和值栈
技术分析之OGNL表达式概述(了解) 1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写 * 所谓对象图,即以任意 ...
- struts2:OGNL表达式之#、%、$符号运用
1. OGNL表达达符号"#" 1.1 #用于访问OGNL上下文和Action上下文,#相当于ActionContext.getContext() 注意:当系统创建了Action实 ...
随机推荐
- 腾讯云手动搭建nginx+php-fpm并自启动
自己一点小爱好,搭建了一个小网站植物大战僵尸百科, 使用的是腾讯云,市场里的镜像不好用,所以自己手动搭建一波. centos 7 编译安装 php-7.2.11的步骤 在官网下载php-7.2.11的 ...
- SpringBoot定时任务@Scheduled
SpringBoot定时任务主要由两个注解完成. @Scheduled加在方法上面. @EnableScheduling加在类上面.可以是Application类,也可以是@Component类,还可 ...
- Hadoop运行原理总结(详细)
本编随笔是小编个人参照个人的笔记.官方文档以及网上的资料等后对HDFS的概念以及运行原理进行系统性地归纳,说起来真的惭愧呀,自学了很长一段时间也没有对Hadoop知识点进行归纳,有时候在实战中或者与别 ...
- html苹方字体
苹方提供了六个字重,font-family 定义如下: 苹方-简 常规体 font-family: PingFangSC-Regular, sans-serif; 苹方-简 极细体 font-fami ...
- ABS函数 去掉金额字段值为负数问题
)) from OrderDetail
- R3 x64枚举进程句柄
转载:https://blog.csdn.net/zhuhuibeishadiao/article/details/51292608 需要注意的是:在R3使用ZwQueryObject很容易锁死,需要 ...
- Qt编写控件属性设计器11-导入xml
一.前言 上一篇文章负责把设计好的控件数据导出到了xml文件,本偏文章负责把导出的xml数据文件导入,然后在画布上自动生成对应的控件,Qt内置的xml数据解析功能,非常强大,都封装在QtXml组件中, ...
- Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数
在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一: . ./subscript.sh 方法二: source ./subscript.sh 注意: 1.两个点之 ...
- Java语言和JVM的使用说明书
Java Language and Virtual Machine Specifications 详细介绍了Java语言各个版本的功能/JVM的工作原理 建议详读/深度 各个版本,在线看或者pdf下载
- 【Tools】HP/惠普v285w 量产工具
前段时间朋友说自己u盘坏了,让帮忙看看.看下图是这个u盘. 坏的问题:往里面复制东西,提示:请去掉写保护或使用另一张磁盘.但是能正常从里面读取出来数据. 无论更换电脑,还是使用网上的修改注册表等方式皆 ...