前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java之struts2之OGNL表达式

java之struts2之OGNL表达式

作者头像
Vincent-yuan
发布2019-09-10 18:22:08
4330
发布2019-09-10 18:22:08
举报
文章被收录于专栏:Vincent-yuanVincent-yuan

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/>

非值栈方式使用

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档