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表达式的更多相关文章

  1. Struts2的OGNL表达式语言

    一.OGNL的概念 OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者 ...

  2. 初窥struts2(二)OGNL表达式

    Struts2总结 Struts2完整的处理流程: 1  客户端发送请求,交给struts2控制器(StrutsPrepareAndExecuteFilter). 2  Filter控制器进行请求过滤 ...

  3. Struts2之OGNL表达式

    OGNL(Object-Graph Navigation Language的简称),对象图导航语言,它是一门表达式语言,除了用来设置和获取Java对象的属性之外,另外提供诸如集合的投影和过滤以及lam ...

  4. struts2(四) ognl表达式、值栈、actionContext之间的关系

    今天来说说ognl表达式在struts2中的运用. --wh 一.什么是Ognl? 通过百度百科查询到的解释,其中详细的说明了OGNL的作用. 下面我们就对OGNL这5个作用进行讲解 1.存取对象的任 ...

  5. struts2:OGNL表达式,遍历List、Map集合;投影的使用

    OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存 ...

  6. Struts2中OGNL表达式的用法

    今天分享的是Struts2框架中的一种ognl表达式语言,主要分两个目标去学习    1.理解struts2传值的优先级    2.ognl与el的区别 一:ognl表达式语言简介 OGNL的全称是O ...

  7. struts2 与 OGNL 表达式,jsp中 利用ognl 在valuestack中取值

    在Struts2中,一个请求在终于到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是 ...

  8. Struts2之 OGNL表达式和值栈

    技术分析之OGNL表达式概述(了解)        1. OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写        * 所谓对象图,即以任意 ...

  9. struts2:OGNL表达式之#、%、$符号运用

    1. OGNL表达达符号"#" 1.1 #用于访问OGNL上下文和Action上下文,#相当于ActionContext.getContext() 注意:当系统创建了Action实 ...

随机推荐

  1. git 全量同步分支

    当前分支是maser分支,我想将stable分支上的代码完全覆盖brush分支,首先切换到brush分支. git reset --hard origin/stable 执行上面的命令后brush分支 ...

  2. Unity3d客户端与Photon服务器数据通信

    今天先介绍一下Photon服务器是什么,可以做什么,为什么要使用它? Photon:开发多人联网游戏最轻松的方案!可以迅速简单实现多人实时在线网络游戏(pvp). Photon:透过位于各地的Phot ...

  3. CentOS7安装JDK1.8图文教程

    https://blog.csdn.net/weixin_42266606/article/details/80863781 1.下载 jdk 的 tar 包 网址:http://www.oracle ...

  4. Join Reorder优化 - 论文摘要

    Query Simplification: Graceful Degradation for Join-Order Optimization 这篇的related work可以参考,列的比较全面, Q ...

  5. Python3基础 函数 函数名作为参数传给函数

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  6. k8s记录-yum本地仓库部署

    #1.安装插件yum install -y yum-plugin-downloadonly createrepo rsync #2.创建仓库目录mkdir -p /mirrors/centos#3.下 ...

  7. JS字符串数字前面加加号会变成数字类型

    JS中一个字符串中只有数字,如果该字符串前面加了个加号,这个数值就变成了number类型.如本文测试中,用lodop打印二维码,最后一个参数是一个字符串,在前面加了加号和不在前面加加号,通过控制台输出 ...

  8. [LeetCode] 67. Add Binary 二进制数相加

    Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...

  9. [LeetCode] 268. Missing Number 缺失的数字

    Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missin ...

  10. RDB和AOF持久化

    RDB和AOF持久化 https://www.cnblogs.com/Tu9oh0st/p/11229317.html Redis提供了不同的持久化选项: RDB持久化以指定的时间间隔保存那个时间点的 ...