`

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类型转换深入总结

    1. **Struts2类型转换的原理** 在Struts2中,类型转换是通过`ValueStack`和`TypeConverter`接口实现的。`ValueStack`负责管理Action对象,而`TypeConverter`接口则定义了如何将字符串转换为特定类型的逻辑。当...

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

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

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

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

    Struts用的ognl和valueStack(vs)实例

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

    Struts2应用开发详解04

    在本教程中,我们将深入探讨Struts2的类型转换机制,了解其工作原理以及如何自定义类型转换。 首先,Struts2的类型转换主要由`ValueStack`和`TypeConverter`接口实现。当用户提交表单时,Struts2会将请求参数与...

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

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

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

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

    struts2枚举值、日期值转换示例

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括数据绑定、类型转换、动作映射等。...在这个“struts2枚举值、日期值...同时,熟悉这些自定义机制也有助于更好地理解和掌握Struts2框架的工作原理。

    第一个struts2

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

    struts2的学习笔记+测试源代码

    这有助于理解Struts2类型转换的工作原理,并在遇到复杂数据类型时能够正确处理。 总之,Struts2的类型转换功能增强了其处理用户输入的能力,确保了数据类型的一致性和正确性。通过理解并实践这些知识点,开发者可以...

    xwork-core-2.2.1-sources

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

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

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

    struts2源码2

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

    xwork-core源码

    - **源码调试**:通过设置断点,实际运行并观察源码执行过程,加深对xwork-core工作原理的理解。 通过学习xwork-core源码,开发者不仅可以掌握Struts2的核心机制,还能提升对Java Web开发的理解,为构建高效、稳定...

    struts2数据类型转换器

    这篇博客“Struts2数据类型转换器”可能深入探讨了这个主题,虽然具体的细节无法在此给出,但我们可以根据Struts2中数据类型转换的工作原理来展开讨论。 在Java Web开发中,用户通过表单提交的数据通常是字符串形式...

    Xwork的源码

    在深入理解Struts2的工作原理时,解析Xwork的源码至关重要。Xwork为Struts2提供了强大的命令模式支持,包括动作调度、类型转换、拦截器链等功能,使得Struts2能够实现灵活且可扩展的MVC架构。 1. **动作调度** ...

    Struts2源代码与源码解析文档

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

Global site tag (gtag.js) - Google Analytics