`
isiqi
  • 浏览: 16485698 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

valuestack的工作原理

阅读更多

今天在为同事解决问题的时候,发现了自己以前对valuestack的理解有点偏差,通过问题的解决,也体验了一把温故而知新

废话少说,步入正题

当访问一个action的时候,此时struts2会把整个action压入valuestack的顶部,此时valuestack就一个action对象

我们通常会写stack.set(key1,value1) 或者statck.setvalue(key2,value2) 这两个是有区别的,前者会在valuestack压入一个hashmap,并将key1,value1植入该hashmap 那么此时valuestack会有两个对象,顶部是hashmap,底部是action 后者 会 将key2,value2直接植入到顶部的对象,通常是action,如果action没有相应的set方法,那么执行这个方法等于白搭,你如果此时执行valuestack.findvalue就会为空

我们通常会在多个拦截器传递数据,正如前面所说,你必须得再action中写入set方法,否则无效,如果你不想写,那么请用valuestack.set,这样就不用改写action. 但又存在一个隐患,如果拦截器1中你写了valuestack.set,然后你在拦截器2中同findvalue获取了该值,这没有问题,假设你突然想在拦截器2中传一个值给action ,问题就暴露了,你会在拦截器2中像平常一样写statck.setvalue,然后在action 中加上 set,满以为可以传递过去,其实不行,因为此时栈顶是一个map,而非action,你此时是将值植入到map,而非action,所以传值失败。

valuestack作为拦截器、action,甚至页面传递数据的一个数据结构,特别是当栈中存在多个对象的时候,必须注意栈中对象的顺序以免产生一些恼人的问题。

分享到:
评论

相关推荐

    学习OGNL在Struts2中工作原理

    ### 学习OGNL在Struts2中的工作原理 #### OGNL简介 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。它是Struts2框架的一个核心特性之一,被广泛应用于框架的...

    struts2的工作原理

    ### Struts2的工作原理 #### 一、Struts2与Struts1的区别 在深入了解Struts2的工作原理之前,我们有必要先明确它与Struts1的主要区别。虽然名字相似,但两者之间并没有直接的血缘关系。Struts2并非简单的Struts1...

    struts工作原理

    工作原理: 1. **请求接收**:当用户在浏览器中提交一个HTTP请求时,该请求会被Web服务器(如Tomcat)接收到。如果请求的URL映射到一个Struts配置文件中的Action,那么Struts会接管这个请求的处理。 2. **配置文件...

    struts2中OGNL的一些概念及原理说明

    ### Struts2中OGNL的概念及原理说明 #### 一、OGNL表达式的基本用法与特点 **OGNL**,即**Object Graphic Navigation Language**(对象图导航语言),是Struts2框架中用于处理对象及其属性的强大工具之一。通过...

    Struts用的ognl和valueStack(vs)实例

    在Struts中,OGNL(Object-Graph Navigation Language)和Value Stack(VS)是两个核心概念,它们对于理解Struts的工作原理至关重要。 **OGNL:对象图导航语言** OGNL是一种强大的表达式语言,它允许在对象图中进行...

    Struts2深入学习----OGNL表达式原理

    在实际开发中,理解OGNL的工作原理对于调试和优化Struts2应用至关重要。例如,当出现“无法找到属性”的异常时,可能是OGNL表达式错误或对象图中缺少相应属性。熟练掌握OGNL可以帮助我们快速定位问题并修复。 总的...

    Struts2 技术内幕——深入解析Struts2架构设计与实现原理.zip

    《Struts2技术内幕——深入解析Struts2架构设计与实现原理》这本书深入讲解了这些内容,包括但不限于Action的设计模式、Interceptor的实现原理、ValueStack的工作流程、以及Struts2与其他框架的整合策略,对于想要...

    Struts2 技术内幕——深入解析Struts2架构设计与实现原理

    在Java Web开发领域,Struts2 是一个应用广泛的框架,它作为 Apache 基金会下的一个项目,是继 Struts 1 ...通过深入理解Struts2 的架构和工作原理,开发者可以更好地利用这个框架来构建稳定、安全、高效的企业级应用。

    第一个struts2

    5. **理解ValueStack的工作原理**:了解如何通过ValueStack将Action类的属性暴露给视图,以及如何使用OGNL表达式来访问复杂的属性路径。 6. **运行和测试**:启动服务器,访问应用,提交表单,观察Struts2如何处理...

    struts源码,更好的理解框架实现原理

    3. 拦截器的工作原理与自定义拦截器的编写。 4. 结果(Result)的种类和配置。 5. ValueStack和OGNL表达式的使用。 6. Struts2标签库的应用。 通过对上述知识点的深入学习和实践,你将能够更加熟练地运用Struts框架...

    struts2源码2

    4. ValueStack的工作原理:如何存储和访问数据。 5. 结果映射:Result的类型和如何根据Action的结果跳转。 通过对Struts2源码的深入学习,开发者不仅可以提升自己的技术水平,还能更好地解决实际开发中遇到的问题,...

    Struts2源代码与源码解析文档

    这部分源码解析会介绍ValueStack的工作原理,以及如何使用OGNL进行数据绑定和表达式解析。 6. **配置管理**:Struts2允许通过XML或注解进行配置,源码分析会揭示配置加载、解析的过程,以及如何自定义配置加载器。 ...

    struts2.2.1-xwork

    4. ValueStack的实现原理,以及如何与OGNL结合使用。 5. 如何扩展Struts2的功能,如自定义拦截器、Action和Result。 深入学习这些内容,不仅可以提升对Struts2的理解,还能帮助开发者更好地优化和调试Web应用程序,...

    xwork-core-2.2.1-sources

    源代码的阅读可以帮助我们理解它们的工作原理,比如ActionInvocation的执行流程、Interceptor如何注册和执行,以及ValueStack如何管理对象等。 ActionInvocation是Action执行的核心,它负责调用Interceptor链并最终...

    Struts2访问request,session,application的四种方式

    了解了这些基本方法后,我们可以通过阅读Struts2的源码来深入理解其工作原理。例如,研究`ActionSupport`类如何与ActionContext交互,或者查看`ValueStack`如何管理栈中的对象。此外,开发工具如IDE的调试功能,可以...

    传智168期JavaEE struts2杜宏 day32~day33笔记

    ### 传智168期JavaEE Struts2杜宏 Day32~Day33 笔记 #### OGNL介绍与简单使用 ##### OGNL概述 ...通过深入理解OGNL的工作原理及其在Struts2中的应用方式,可以帮助开发者更好地利用这一工具提高开发效率。

    Struts+spring+hibernate学习笔记! - Struts原理与实践 - JavaEye知识库.files

    下面将详细介绍这三个框架的基本概念、工作原理以及它们如何协同工作。 首先,Struts 是 Apache 软件基金会的一个项目,它的主要目的是提供一种结构化的、可扩展的方式来构建基于 Java 的 Web 应用。Struts 通过 ...

    struts2源码解析.pdf

    深入理解Struts2的源码,可以帮助开发者更好地掌握其工作原理,提高代码质量和性能,同时也便于自定义扩展和调试。对于大型企业级应用,熟悉这些核心组件的工作方式是至关重要的。通过分析源码,我们可以发现Struts2...

    xwork-2.0.7jar

    xwork-2.0.7-sources.jar包含了框架的源代码,这对于开发者深入理解框架的工作原理至关重要。通过阅读源码,我们可以了解到Action、Interceptor和ValueStack的具体实现,以及它们之间的交互机制。这有助于我们更有效...

    struts2的源码

    它的源码提供了深入了解其工作原理的机会,对于开发者来说是学习和优化应用的关键资源。以下是一些从Struts2源码中可以学习到的重要知识点: 1. **Action Mapping**:在Struts2中,Action类是处理用户请求的核心...

Global site tag (gtag.js) - Google Analytics