`

WebWork深度探索之Session

阅读更多

        昨天上午刚写完WebWork的Pitfall[1],特别提到了文档的问题,结果下午就深受其害了。其实,我想做的功能很简单,就是在页面上判断一下某个字段在Session中是否存在,如果存在则显示内容A,否则就显示内容B。原本以为可以很快的找到这个方面的参考资料,结果是找了一个下午都没有从官方文档中找到相应的说明,最终还是通过Mail-List Archive找到了解答。
        由于WebWork对request,parameter,Session和Application都进行了封装,将这些隐含的对象封装成了相应的Map,如RequestMap,ParameterMap,SessionMap和ApplicationMap,而这些Map就组成了ActionContext,因此我们通常都不再需要与request,session这些底层的对象打交道了,这也是我一开始觉得迷惑的地方,因为我找不到Session了。事实上,对于SessionMap的处理即是对Session的处理了。我们可以通过ActionContext的静态方法getContext返回一个ActionContext的实例,然后再调用其getSession方法获得SessionMap,接着就可以利用put和get方法对session进行读写的操作了。
        而在页面上,我们可以通过以下的方式对session进行操作:

<webwork:property value="#session.name" />

        #session.name表示从SessionMap中取得与"name"这个key对应的对象,实际上是调用了如下的statement:ActionContext.getContext().getSession().get("name"),并且进行了类型的转换。又如:     

<webwork:property value="#session.player.name" />

        则是在SessionMap中获得了Player对象之后,并调用类Player的getter方法:getName()获得name属性。
        简而言之,为了能够降低与部署环境的耦合程度,WebWork将Servlet的隐含对象进行了封装,这在很大程度上简化了开发的工作。而且WebWork也提供了类ServletActionContext,我们通过这个类中的getRequest方法获得原始的HttpServletRequest,然后就可以对request和session这些底层对象进行操作了。但是,一般情况下,利用ActionContext.getSession()可以完成几乎所有的工作了,我们又为什么要去碰那些底层的东西呢?因此我们应该优先考虑使用SessionMap,而不是底层的session。
        另外一个需要注意的问题,就是SessionMap和隐藏对象session的作用域是不同的。也就是说,通过 ActionContext.getContext().getSession().put("name","Fantasy Soft"),往SessionMap中写入了与"name"这个key相对应的内容,但是在页面上通过session.getAttribute("name")得到的将会是null。
        最后,我不得不再次说一下WebWork的文档,由于文档也是开源的,是依靠热心的开发人员去撰写的,因此质量与数量上都与WebWork本身相去甚远。尽管酒香不怕巷子深,但是这是一个注意力经济的时代,信息匮乏造成的受注意程度降低会让自己处于一个不利的位置。
       
        [1] WebWork深度探索之Pitfall

分享到:
评论
1 楼 thebye85 2009-05-09  
引用

另外一个需要注意的问题,就是SessionMap和隐藏对象session的作用域是不同的。也就是说,通过 ActionContext.getContext().getSession().put("name","Fantasy Soft"),往SessionMap中写入了与"name"这个key相对应的内容,但是在页面上通过session.getAttribute("name")得到的将会是null。

这个可以访问的

相关推荐

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    WebWork 是一个基于Java的开源MVC(Model-View-Controller)框架,它主要用于构建企业级的Web应用程序。WebWork1.4是该框架的一个较早版本,它为开发者提供了强大的功能,包括动作映射、数据绑定、异常处理、国际化...

    WEBWORK

    WebWork 是一个基于 Java 的开源 MVC(Model-View-Controller)框架,它在早期的 Web 应用开发中非常流行,尤其是在 Struts 1 之前。WebWork 提供了强大的动作(Action)处理、类型转换、拦截器(Interceptor)机制...

    webwork之HelloWorld篇

    "webwork之HelloWorld篇"是入门WebWork框架的一个基本教程,通常包括创建一个简单的Web应用程序并展示“Hello, World!”的输出。 在Eclipse中创建一个Hello Web工程,首先你需要安装必要的插件,如JSTL和MyEclipse...

    WebWork教程开发资料

    ActionContext是WebWork中传递请求参数、session状态和其他上下文信息的关键对象。它封装了请求和响应对象,为Action提供了一种访问当前请求环境的统一方式。 **ServletActionContext** ServletActionContext是...

    WebWork教程

    WebWork使用ServletDispatcher来处理HTTP请求,它会将请求转化为Action(业务层Action类),并且可以进行session(会话)、application(应用程序)范围的映射以及request请求参数映射。 WebWork的技术特点包括: 1...

    WebWork 教程

    通过OGNL,开发者可以轻松地访问和操作值堆栈(Value Stack)中的对象,值堆栈是WebWork用于存储和传递数据的核心机制之一,它在Action执行过程中保持数据的连续性,使得数据能够在多个Action之间共享。 #### 拦截...

    Webwork教程

    - 学习WebWork可以帮助开发者更好地理解Struts2的工作原理,因为两者在很多方面有相似之处。 - 掌握WebWork不仅可以提升开发者的技术水平,还能帮助他们在实际项目中更加高效地解决问题。 #### 三、WebWork框架的...

    WebWork2.0讲解说明

    WebWork2.0是一款基于Java的企业级Web应用框架,它为开发者提供了强大的MVC(Model-View-Controller)架构支持,旨在简化Web应用程序的开发流程,提高代码的可维护性和可扩展性。本讲解将围绕WebWork2.0的核心概念、...

    WebWork docs 2 -- webWork 详细的说明文档

    WebWork是一个基于Java的轻量级MVC(Model-View-Controller)框架,它为构建高性能、可维护的Web应用程序提供了强大的支持。WebWork docs 2 是一套完整的WebWork框架的详细说明文档,包含了开发者在使用WebWork时...

    webWork

    WebWork是一个基于Java的开源MVC(模型-视图-控制器)框架,它在Web应用程序开发中扮演着重要角色。这个“webWork中文教程”旨在帮助...在实践中,不断探索和积累经验,将有助于提升个人在Java Web开发领域的专业素养。

    webwork教程

    - Action是WebWork中的核心组件之一,用于处理具体的业务逻辑。 - 可以是Field-Driven Action或Model-Driven Action。 - 通过ActionContext访问当前的请求上下文信息。 - **ActionContext**: - 用于存储与当前...

    webwork.pdf

    WebWork 2.0与Spring框架的集成是另一个重要的方面,Spring作为Java领域最流行的依赖注入框架之一,其与WebWork的结合能够进一步增强应用的模块化和灵活性。通过Spring的依赖注入功能,可以更方便地管理和配置...

    webwork

    WebWork 是一个开源的、基于Java的Web应用程序框架,它专为构建动态、交互式的Web应用而设计。这个框架的核心理念是模型-视图-控制器(MVC)架构模式,帮助开发者将业务逻辑、用户界面和数据管理分离开来,从而提高...

    WebWork_开发指南

    ### WebWork 开发指南知识点详解 #### 一、WebWork框架概述 - **WebWork**:WebWork 是一款用于构建企业级 Java Web 应用程序的框架,它以模型-视图-控制器(MVC)架构为基础,为开发者提供了一种更加灵活的方式来...

    webwork_框架文档

    WebWork是一个基于Java的MVC(Model-View-Controller)框架,它在早期的Web开发中扮演了重要的角色,尤其是在Struts之前或作为其替代品出现。WebWork提供了许多先进的特性,如动作拦截器、类型转换、强大的异常处理...

    webwork的jar包

    WebWork 是一个基于Java的MVC(模型-视图-控制器)框架,它在Web应用程序开发中被广泛使用。WebWork 1 和 WebWork 2 都是该框架的不同版本,每个版本都有其特性和改进。 WebWork 1 是早期的版本,提供了基础的MVC...

    webwork2开发指南

    WebWork2是一款基于Java的MVC(Model-View-Controller)框架,用于构建Web应用程序。在Web开发领域,它提供了一种结构化和模块化的开发方式,帮助开发者更高效地组织代码并实现业务逻辑。本指南将深入探讨WebWork2的...

Global site tag (gtag.js) - Google Analytics