struts2 之 ognl

  1. ognl:object graph navigation language:对象导航图语言。
  2. ognl表达式在struts2中有2个作用:表达式语言,类型转换。

  实例如下:

public class OgnlDemo {
    public static void main(String[] args) throws OgnlException {
        //ognl表达式的思想:把数据分为两类:常用的和不常用的。
        //常用的数据一般都是小数据,不常用的数据一般都是大数据。
        //将不常用的数据放在map中
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("school", "sxt");
        map.put("address", "山东菏泽");
        //常用的数据
        User user = new User();
        user.setAge(23);
        user.setName("张三疯");
        Role role = new Role();
        role.setName("管理员");
        user.setRole(role);
        //第一个参数 是ognl表达式  第二参数是ognl上下文(不常用的数据) 第三个参数是ognl的根(常用的数据)
        //表达式的写法:常用的数据直接获取  不常用的数据加#获取
        Object result = Ognl.getValue("#address", map, user);
        System.out.println(result);

    }
}

3 . 在struts2中使用ognl表达式来完成数据的设置及获取。并且使用ognl来完成类型转换工作。在struts2中ActionContext对象是ognl的上下文对象,ValueStack是ognl的根对象。ValueStack放的是Action对象的属性。

4.在struts2使用ognl表达式来获取值,需要使用struts2的标签库:

实例如下:

<%@taglib prefix="s" uri="/struts-tags"%>
欢迎<s:property value="username"/>进行系统<br>
欢迎<s:property value="#request.username"/>进行系统<br>

<s:iterator value="list" var="bean">
      <tr>
          <td><s:property value="#bean.id"/></td>
          <td><s:property value="#bean.name"/></td>
          <td><s:property value="#bean.age"/></td>
      </tr>
      </s:iterator>

5. 在struts2使用ognl访问数据的方式总结:

6.使用Struts 标签注意事项:

  (a)使用struts 的标签必须要经过核心过滤器。

  (b)Struts2提供的标签库比较全面,但是不灵活,所以使用比较少。

时间: 2024-07-30 03:26:45

struts2 之 ognl的相关文章

Struts2之OGNL表达式

OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.Struts2框架使用OGNL作为默认 的表达式语言. 相对于EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHello(); 支持类静态方法调用和常量值访问,表达式的格式为@[类全名(包括包路径)]@[方法名|值名],例如:@[email protected]('foo%s','bar')或@[email protected]_NAME;

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

在Struts2中,一个请求在最终到达Action的方法之前,Action对象本身会被压入ValueStack(实际上就是放到ValueStack的CompoundRoot中),所以Action对象是CompoundRoot中的一个元素.看下面的代码: public class UserAction { private String username; private Integer age; private boolean valid; //查看用户的详细信息 public String de

Struts2之OGNL

一.OGNL是什么? OGNL(Object-Graph Navigation Language)对象图导航语言,是一种表达式语言,它可以 1.遍历对象的结构图 2.存取对象的属性(实例属性和静态属性) 3.调用对象的方法(实例方法和静态方法) 4.操作集合对象(数组.List.Map) 5.new对象 (自动初始化,需要无参构造器) 6.自动进行类型转换 -- 总的来说这货就是提供一种简便的方式来进行数据转移和类型转换. 1.数据转移数据从前端页面过来,参数拦截器将它们拍到Action对应的属

struts2的OGNL表达式

基本概念: OGNL(Object Graph Navigation Language),是一种表达式语言.使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性.调用Java对象树的方法.同时能够自动实现必要的类型转化.如果我们把表达式看做是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁. OGNL的API看起来就是两个简单的静态方法: public static Object getValue( Object tree, Map

Struts2对Ognl的支持

                                                  Struts2对Ognl的支持 一. 写作背景 由于工作性质的变化,最近一直在研究struts2,从源码到各个技术点的分析,突然之间发现以前对struts2的ognl这一块的知识覆盖的还不是很全面.再加上笔者身处在深圳这个城市,这些天来一直高温不断,人显得特别的烦躁不安,唯有技术(当然个人爱好还是很广泛的,例如溜冰.篮球.气枪打气球等)能让笔者从燥热中平静下来,故花上几个小时整理了这篇博客,若有失

深入分析JavaWeb 48 -- Struts2中OGNL表达式与ValueStack

一.OGNL表达式 1.OGNL表达式介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的表达式语言. OGNL相对其它表达式语言具有下面几大优势: 1.支持对象方法调用,如xxx.doSomeSpecial(): 2.支持类静态的方法调用和值访问,表达式的格式: @[类全名(包括包路径)]@[方法名 | 值名],例如:@[email protected]('foo %s', '

struts2中ognl标签详解

<body> <s:set name="age" value="61" /> <!-- if elseif else 参数test:决定标志里的内容是否显示的表达式,类型boolean 注:else标志没有这个参数 --> <h3>if语句</h3> <s:if test="{age>60}"> 老年人 </s:if> <s:elseif test=&

Struts2的OGNL标签详解

一.Struts2可以将所有标签分成3类: UI标签:主要用于生成HTML元素的标签. 非UI标签:主要用于数据库访问,逻辑控制等标签. Ajax标签:用于Ajax支持的标签. 对于UI标签,则有可以分为两类: 表当标签:表单标签主要用与生成HTML页面的from元素,以及普通表单元素的标签. 非表单标签:非表单标签主要用于生成页面的树.Tab页等. 流程控制标签:主要包含用于实现分页.循环等流程的标签. 数据访问标签:主要包含用于输出ValueStack中的值,完成国际化等功能的标签. Str

【Struts2】Ognl与ValueStack

一.OGNL 1.1 概述 1.2 OGNL 五大类功能 1.3 演示 二.ValueStack 2.1 概述 2.2 ValueStack结构 2.3 结论 2.3 一些问题 三.OGNL表达式常见使用符号 3.1 #号 3.2 %号 3.3 $号 一.OGNL 1.1 概述 OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言.比el表达式功能强大.Struts2将ognl表达式语言,集成当sturts2框架中,做为它的默认表达式语言