ognl表达式的小知识点

  今天在做一个登录模块时,想再登录之后的首页上显示登陆者姓名,自然就想到在action里将登陆者姓名传入session中,然后在页面通过ognl提取信息,action代码如下:

1 if(us.getUser_name().equals(username)&&us.getPassword().equals(password))
2             {
3                     ActionContext.getContext().getSession().put("user_login",username);//将登陆信息放入actioncontext中
4                 //ServletActionContext.getRequest().getSession().setAttribute("user_login",username);
5                 return SUCCESS;
6             }

页面显示代码:

1 <div id="huanying"><s:property value="#user_login"/>,欢迎你!

然后,就出问题了……取不到值;

当时我就在想啊,session应该是在valueStack中的context中的,通过ognl的#+属性值的方法应该可以的啊,怎么也想不通。于是用request(用的是转发即默认,不是重定向)和context都试了一下,结果是只有放入context中的值才能被取出来。这就尴尬了,,,,开始,我还怀疑是值没存进session和request中,因此我用el表达式测了一下,完全没问题,所以我就想是不是自己的ognl写错了。结果一度娘,果然出了问题,ognl虽然可以提取所有值域中的值,但是如果是session或者request中的值就必须要加上相关的域名:

1 <s:property value="#session.user_login"/>//取存在sessiong中的值
2 <s:property value="#request.user_login"/>//取存在request中的值(前提是转发而不是非定向)

ognl默认是直接从context中取值,所以才出了问题。EL表达式是从四大作用域按从小到大的顺序取值。

  哎……还是学艺不精啊。。。。。。不过问题虽然小,但也算是一种积累啦……

时间: 2024-10-10 17:09:35

ognl表达式的小知识点的相关文章

Struts2之OGNL表达式

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

struts2学习笔记(7)------------ognl表达式

OGNL表达式(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言. Struts2自行维护一个特定范围的"银行",Action将数据放入其中,而JSP页面可从中取数据,表面上似乎看起来像是jsp可以直接访问Action数据.. 当Action属性不再是简单的值,而是某个对象,数组,集合时,就需要使用ognl表达式来访问这些对象,数组,集合内的数据了. 1)ognl的stack Conte

Struts2学习记录-Value Stack(值栈)和OGNL表达式

只是学习记录,把我知道的都说出来 一,值栈的作用 记录处理当前请求的action的数据. 二,小例子 有两个action:Action1和Action2 Action1有两个属性:name和passwd Action2有两个属性:name2和passwd2 请求从Action1进入,chain方法导向Action2 Struts.xml配置信息: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE st

关于Struts2中的值栈与OGNL表达式

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

OGNL表达式语言网上转来的

1.概念:OGNL是ObjectGraphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts 2框架使用OGNL作为默认的表达式语言. 2.功能: (1)支持对象方法调用,如xxx.sayHello(): (2)支持类静态方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@[email protected]('foo%s', 'bar')或@[email protected]_NAME: (3)操作集合对象

ognl表达式应用

struts.xml <!--OGNL表达式  --> <package name="Ognl" extends="struts-default">     <action name="getOgnl" class="com.cb.Ognl" method="TestOgnl"> <result name="list">/WEB-INF/p

20160502-struts2入门--ognl表达式

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

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

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

私人定制javascript中函数小知识点

函数的定义 首先在javascript中,函数就是对象,程序可以随意操控它们.比如,可以给它们设置属性,甚至调用它们的方法.函数使用function关键字来定义.它既可以用在函数定义表达式,也可以用在函数声明语句中.函数声明function后面必须要更上函数名称也就是所谓的函数名称标识符.如果是函数表达式函数名称标识符可有可无.这段重点是函数是对象,所以函数表现出来的种种行为你想想成对象,那么很多疑惑可能就恍如昨日初见. 函数调用 4种方式来调用javascript函数: 1.作为函数 就是函数