struts2—OGNL

1.OGNL表达式

  1.ONGL是对象视图导航语言 ${user.name}这种写法就是对象视图导航

  2.OGNL的jar包是包含在Struts2基础包中

  3.OGNL的存储方式

    

  4.OGNL表达式使用方式

public void ognlBasc() throws OgnlException {
        OgnlContext oc = new OgnlContext();
        User user = new User("zjj","123456");
        oc.setRoot(user);
        Map<String , User> map = new HashMap<>();
        map.put("user1", new User("xjh","123456"));
        map.put("user2", new User("tjl","3216465"));
        oc.setValues(map);
        //获得root里的内容
        String result1 = (String) Ognl.getValue("name", oc, oc.getRoot());
        //获得map里的内容 用#标识是获得是map集合的内容咯不能
        String result2 = (String) Ognl.getValue("#user1.name", oc, oc.getRoot());
        //调用方法获取字符串长度
        Integer result3 = (Integer) Ognl.getValue("#user1.name.length()", oc, oc.getRoot());
        //为属性赋值
        String result4 = (String) Ognl.getValue("#user1.name=‘xjh-zjj‘,#user1.name", oc, oc.getRoot());
        //调用静态方法/@全类名@方法名
         Double result5 = (Double) Ognl.getValue("@@pow(2,3)", oc, oc.getRoot());
         Double result6 = (Double) Ognl.getValue("@@PI", oc, oc.getRoot());
         //ognl创建对象-list|map
         //1.创建list对象
          String result7 =(String) Ognl.getValue("{‘zjj‘,‘xjh‘}[0]", oc, oc.getRoot());
         //2.创建map集合
          String result8 =(String)Ognl.getValue("#{‘user‘:‘123‘,‘age‘:‘123‘},#user",oc,oc.getRoot());
        System.out.println(result7);
    }

2.OGNL与Struts2的结合

OGNL中的OGNLContext------------>valueStack值栈

  值栈(valueStack)由两部分构成

  一部分叫做Root,放置的是一个栈

  一个部分叫做Context

栈是先进后出的

3.OGNL标签

<!-- 取map的两种方式 -->
<s:property value="#map[‘user1‘].password"/><br/>
<s:property value="#map.user1.name"/><br>
<hr>
<!-- 循环过滤功能 -->
<s:iterator value="#map.{?#this.name.length()==3}">
    <s:property value="name"/><br/>
</s:iterator>
<hr>

原文地址:https://www.cnblogs.com/FlyBlueSky/p/9164702.html

时间: 2024-12-20 21:56:44

struts2—OGNL的相关文章

Struts2 OGNL

OGNL(Object-Graph Navigation Language)的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能. 1.OGNL表达式的计算是围绕OGNL上下文进行的. OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示.它里面可以存放很多个Ja

Struts2 OGNL概述

OGNL概述 1.之前web阶段,学习过EL表达式,EL表达式在jsp中获取域对象里面的值 2.OGNL是一种表达式,这个表达式功能更加强大 (1)在struts2里面操作值栈数据 (2)一般把ognl在struts操作:和struts2标签一起使用操作值栈 3.OGNL不是struts2的一部分,单独的项目,经常和struts2一起使用 (1)使用ognl时候首先导入jar包,struts2提供包 OGNL入门案例 1.使用ognl+struts2标签实现计算字符串长度 支持对象方法调用.例如

struts2 OGNL配和通用标签和其它标签的使用

三.OGNL配合通用标签的其他使用 1.iterator标签(很重要) 动作类 1 package com.itheima.web.action; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import com.itheima.domain.Student; 7 import com.opensymphony.xwork2.ActionSupport; 8 /** 9 * s:iterator标签的使用 10 * @

struts2 OGNL表达式

五.OGNL简介(非常重要) 1.什么是OGNL OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个单独的开源项目. Struts2框架使用OGNL作为默认的表达式语言. 2.OGNL的功能 前提:OGNL是struts2整合的一个开源项目,所以在struts2中,要想使用OGNL表达式,必须使用Struts2标签库 2.1.支持普通方法的调用 1 <%@ page language="java" import=&qu

Struts2——OGNL(一)

二十.OGNL 1.直接访问值栈中的action属性 <s:property value="v"/> 2.访问值栈中对象普通属性(set/get方法) 在OGNL中访问对象的属性时,必须传入属性才会初始化一个Domain Model对象,但是要保持Domain Model中有默认的构造方法 http://localhost:8080/OGNL/ognl?username=u&password=p&user.age=25 User的name属性为25 http

struts2 ognl表达式访问值栈

1:简单的说,值栈是对应每一个请求对象的轻量级的数据存储中心,在这里统一管理着数据,供Action.Result.Interceptor等Struts2的其他部分使用,这样数据被集中管理起来而不凌乱. 简单的说,值栈能够线程安全的为每个请求提供公共的数据存取服务. 当有请求的时候,Struts2会为每个请求创建一个新的值栈,也就是说,栈和请求是一一对应的,不同的请求,值栈也不一样,而值栈封装了一次请求所有需要操作的相关的数据. 正是因为值栈和请求的对应关系,因此值栈能保证线程安全的为每个请求提供

Struts2 OGNL案例

先定义两个实体类User和Address User package cn.entity; public class User { private String name; private int age; private Address address; public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public

Struts2 OGNL使用详解(转)

OGNL OGNL ( Object Graph Navigation Language ),对象图导航语言.这是一种强大的表达式语言,通过它可以非常方便的来操作对象属性. 在 Struts2 中,OGNL 需要和 Struts2 标签库配套来使用. OGNL context |                                | -- application                                |                            

struts2 ognl存放数据

ongl存放数据可以存放在对象栈(root),也可以存放在map中 一.存放在map中 1.存放在map中可以分为存放在request.session.application public String testPutDataToValueStack(){ /* * 1.往request,session,application域中存放数据 * 2.观察内存结构 */ ServletActionContext.getRequest().setAttribute("request_username&