ValueStack内部结构
ValueStack内部数据结构
一、获取ValueStatck的两种方式
1、通过SerlvetActionContext获得
ValueStack valueStack = (ValueStack) ServletActionContext.getRequest().getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);
SerlvetActionContext中有个常量
public static final String STRUTS_VALUESTACK_KEY = "struts.valueStack";
由此可见ValueStack是保存在reqeust中的,所以ValueStack的生命周期就是reqeust的生命周期
2、通过ActionContext获得
ValueStack valueStack = ActionContext.getContext().getValueStack();
二、向ValueStack中存取数据
向ValueStack中设置数据
public class OGNLAction1 extends ActionSupport { @Override public String execute() throws Exception { // ValueStack valueStack = (ValueStack) ServletActionContext.getRequest().getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY); ValueStack valueStack = ActionContext.getContext().getValueStack(); //创建map参数,将数据保存在map中,数据保存在root的索引1位置, valueStack.set("key", "value"); //将数据保存在root的索引0位置 valueStack.push("Hello ValueStatck"); ActionContext context = ActionContext.getContext(); context.put("reqscope", "requestinfo"); return SUCCESS; } }
在JSP中想ValueStack获取数据
<%@ taglib uri="/struts-tags" prefix="s"%> <a href="${pageContext.request.contextPath }/demo03/ognl1.action?name=Struts2">访问action</a> <s:debug></s:debug> <h1>访问root中的第一元素</h1> <s:property value="[0].top" /> <h1>访问key,通过key值在root中自上而下查找</h1> <s:property value="key" /> <br /> <s:property value="[1].top" /> <br /> <s:property value="[1].top.key" /> <h1>访问request中的数据</h1> <s:property value="#request.reqscope" /> <h1>访问请求参数</h1> <s:property value="#parameters.name" />
相关推荐
这篇博客“Struts2 part6:数据校验”可能详细介绍了如何在Struts2中实现对用户提交的数据进行验证。 Struts2的数据校验分为两个主要部分:客户端校验和服务器端校验。客户端校验通常使用JavaScript或者HTML5的表单...
在"struts2 apps part2"这个主题中,我们将会深入探讨Struts2框架的更多特性和应用,以及如何利用它来开发更复杂的web应用程序。 1. **Struts2框架概述**: Struts2是基于MVC(Model-View-Controller)设计模式的...
"Struts2-part01"可能包含的是该系列学习的第一部分内容,可能涵盖了Struts2的基础概念、环境搭建、Action的创建和执行、OGNL的基本使用等内容。通过学习这部分代码,开发者能够初步掌握Struts2的基本操作和工作原理...
这个"Struts2视频学习代码part2"着重讲解了Struts2的核心组件和实际应用,包括Action、Results以及OGNL(Object-Graph Navigation Language)表达式,并提供了一个具体的BBS论坛的应用示例。 1. **Action**:在...
在“轻量级应用Java EE企业实战”系列中,"struts2.part2"这部分可能涉及了更深入的Struts2使用技巧,如自定义拦截器的实现、Action的分层设计、动态结果集的配置以及与Ajax的集成等内容。学习这部分内容将有助于...
Struts2是一个强大的Java web应用程序框架,它基于MVC...文件列表中的"struts2[1][1].part1.rar"、"struts2[1][1].part2.rar"和"struts2.rar"可能是教程的分卷压缩包,需要全部下载并解压后才能查看完整的PDF教程。
4. **OGNL(Object-Graph Navigation Language)**:作为Struts2的数据绑定语言,OGNL用于在Action对象和JSP视图之间传递数据。它允许开发者直接访问对象的属性,甚至可以执行复杂的表达式。 5. **插件(Plugins)*...
5. **OGNL表达式语言**:Struts2默认使用Object-Graph Navigation Language (OGNL)来处理对象的属性访问和表达式计算。这使得视图层能够方便地获取和设置模型数据。 6. **插件体系**:Struts2有一个丰富的插件库,...
8. ** strut2-dojo-plugin**:Struts2与Dojo JavaScript库的集成,提供丰富的客户端控件和动画效果。 通过学习和实践这个"struts-2.3.8-all-part2"压缩包中的内容,开发者可以深入了解Struts2框架,提升Web应用开发...
Struts2还引入了OGNL(Object-Graph Navigation Language)作为表达式语言,增强了视图层的数据绑定能力。 Struts2与Struts1在API上的主要差异体现在以下几个方面: 1. **Action接口**:Struts1中的Action类需要...
- **上传原理**:Struts2利用MultipartResolver实现文件上传功能。 - **配置与实现**: - 在`struts.xml`中配置上传相关的参数。 - 实现Action类中文件上传的具体逻辑。 **5.2 文件下载** - **下载原理**:Struts...
Struts 2是一个依赖于其他许多库的框架,如OGNL(Object-Graph Navigation Language)用于表达式语言,Freemarker或JSP作为视图层模板技术,以及Servlet API等。理解这些依赖关系有助于你在自己的项目中正确配置和...
在压缩包的"lib"目录下,你会发现所有必需的依赖库,这些都是Struts 2运行所依赖的第三方组件,如OGNL(Object-Graph Navigation Language)用于表达式语言,Freemarker或Velocity用于视图渲染,还有其他的一些日志...
5. **表达式语言(EL)**:Struts2支持使用OGNL(Object-Graph Navigation Language)作为其默认的表达式语言,允许在视图层方便地访问模型数据。 6. **插件系统**:Struts2拥有丰富的插件库,如Freemarker和Velocity...
5. **OGNL(Object-Graph Navigation Language)**:介绍OGNL表达式语言,它是Struts2中用于数据绑定和表达式计算的强大工具。 6. **拦截器**:深入解析拦截器的工作原理,以及如何自定义拦截器实现特定的功能,如...
书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...
org.apache.struts2.dispatcher Classes for action dispatching in Struts (the Controller part of MVC). org.apache.struts2.dispatcher.mapper org.apache.struts2.dispatcher.multipart Classes to help ...
OGNL(Object-Graph Navigation Language)是Struts2.0中的一种强大且灵活的表达式语言,它用于访问和操作对象图。通过OGNL,开发者可以方便地获取对象属性,执行方法调用,以及进行条件判断等,大大增强了页面脚本...