码迷,mamicode.com
首页 > 其他好文 > 详细

关于Struts2的值栈和OGNL的简单理解

时间:2017-09-17 19:32:36      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:app   数据   线程安全   pack   extends   efault   name   ica   img   

1、值栈是什么?

  值栈是对应每一个请求对象的内存数据中心。每次请求一个action生成一个狭义上的值栈(ValueStack)。这个值栈存储了我们定义在action中的每个属性的值,这些属性必须有get和set方法,以致于我们可以在jsp页面中使用EL表达式。

2、值栈的作用:

  值栈能够在线程安全的情况下提供公共的数据存取服务。当有请求到达时,struts会为每个请求创建一个新的值栈。值栈封装了一次请求所有需要操作的相关的数据。

3、值栈的内容:

  在struts中是有广义和狭义值栈之分的。狭义值栈一般指的是实现com.opensymphony.xwork2.util.ValueStack接口。主要支持EL表达式来存取数据。

  广义值栈指的是ActionContext对象。在ActionContext对象中可以存放参数和值

例如:session、request、application等。

4、值栈的基本使用:

  一般来讲都是先获取ActionContext对象。

ActionContext actionContext=ActionContext.getContext();

  通过ActionContext对象来获取狭义上的值栈。

ValueStack value=actionContext.getValueStack();

  通过set方法设值。

value.set("name", "fangchao(value)");
        value.set("age", 21);

  在前台Hello.jsp中获取值。

获取狭义上的值栈数据:<s:property value="name"/><s:property value="age"/><br>

  当然也需要在struts.xml中设置

<package name="hello" namespace="/" extends="struts-default">
        <action name="hello" class="com.fangchao.action.HelloAction">
            <result name="success">success.jsp</result>
        </action>
    </package>

  也可以在jsp中使用session等,后台代码如下:

技术分享
Map<String, Object> session=actionContext.getSession();
        session.put("name", "fangchao2(value)");
        session.put("age",23);
        
        
        Map<String, Object> application=actionContext.getApplication();
        application.put("name", "fangchao3");
        application.put("age", 25);
技术分享

  前台代码:

技术分享
请求参数:<s:property value="#parameters.name"/><s:property value="#parameters.age"/><br>
    
    request:<s:property value="#request.name"/><s:property value="#request.age"/><br>
    session:<s:property value="#session.name"/><s:property value="#session.age"/><br>
    application:<s:property value="#application.name"/><s:property value="#application.age"/><br>
    attr:<s:property value="#attr.name"/><s:property value="#attr.age"/><br>
技术分享

关于Struts2的值栈和OGNL的简单理解

标签:app   数据   线程安全   pack   extends   efault   name   ica   img   

原文地址:http://www.cnblogs.com/zhuchuanliang/p/7536677.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!