struts2数据结构

struts2数据结构

ID:39468507

大小:197.50 KB

页数:23页

时间:2019-07-04

struts2数据结构_第1页
struts2数据结构_第2页
struts2数据结构_第3页
struts2数据结构_第4页
struts2数据结构_第5页
资源描述:

《struts2数据结构》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ActionContext为Struts提供数据环境,维护着一个Map结构,ValueStack中的每一个元素都是根对象,Action位于ValueStack的最顶层.ActionContext中封装了servlet对象,从而将Action与Servlet解耦(即Action无需依赖任何ServletAPI).Map结构如图:OGNL——数据运转的催化剂  阅读:5834次  评论:21条  更新时间:2008-12-30    首先让我们花费1分钟的时间来简单思考一个问题,MVC这3者之间,到底是

2、通过什么真正融合起来的?有人说是Controller,因为它是核心控制器,没有Controller,MVC就无从谈起,失去了职责划分的原本初衷。也有人说是View,因为所有的需求都是页面驱动的,没有页面,就没有请求,没有请求,也谈不上控制器和数据模型。个人观点:贯穿MVC模型之间起到粘合剂作用的是数据。数据在View层成为了展示的内容,而在Controller层,成为了操作的载体,所以数据和整个MVC的核心。目录[-]1.流转的数据2.OGNL——完美的催化剂3.深入浅出OGNL流转的数据无论MVC

3、三者之间的粘合剂到底是什么,数据在各个层次之间进行流转是一个不争的事实。而这种流转,也就会面临一些困境,这些困境,是由于数据在不同世界中的表现形式不同而造成的:1.数据在页面上是一个扁平的,不带数据类型的字符串,无论你的数据结构有多复杂,数据类型有多丰富,到了展示的时候,全都一视同仁的成为字符串在页面上展现出来。2.数据在Java世界中可以表现为丰富的数据结构和数据类型,你可以自行定义你喜欢的类,在类与类之间进行继承、嵌套。我们通常会把这种模型称之为复杂的对象树。此时,如果数据在页面和Java世界中

4、互相流转传递,就会显得不匹配。所以也就引出了几个需要解决的问题:1.当数据从View层传递到Controller层时,我们应该保证一个扁平而分散在各处的数据集合能以一定的规则设置到Java世界中的对象树中去。同时,能够聪明的进行由字符串类型到Java中各个类型的转化。2.当数据从Controller层传递到View层时,我们应该保证在View层能够以某些简易的规则对对象树进行访问。同时,在一定程度上控制对象树中的数据的显示格式。如果我们稍微深入一些来思考这个问题,我们就会发现,解决数据由于表现形式的

5、不同而发生流转不匹配的问题对我们来说其实并不陌生。同样的问题会发生在Java世界与数据库世界中,面对这种对象与关系模型的不匹配,我们采用的解决方法是使用ORM框架,例如Hibernate,iBatis等等。那么现在,在Web层同样也发生了不匹配,所以我们也需要使用一些工具来帮助我们解决问题。在这里,我们主要讨论的,是数据从View层传递到Controller层时的解决方案,而数据从Controller层传递到View层的解决方案,我们将在Struts2的Result章节重点讨论。OGNL——完美的催

6、化剂为了解决数据从View层传递到Controller层时的不匹配性,Struts2采纳了XWork的OGNL方案。并且在OGNL的基础上,构建了OGNLValueStack的机制,从而比较完美的解决了数据流转中的不匹配性。OGNL(ObjectGraphNavigationLanguage),是一种表达式语言。使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性、调用Java对象树的方法、同时能够自动实现必要的类型转化。如果我们把表达式看做是一个带有语义的字符串,那么OGN

7、L无疑成为了这个语义字符串与Java对象之间沟通的桥梁。如何使用OGNL让我们先研究一下OGNL的API,他来自于Ognl的静态方法:Java代码1.  2./** 3. * Evaluates the given OGNL expression tree to extract a value from the given root 4. * object. The default context is set for the given context and root via 5. * 

8、E>addDefaultContext(). 6. * 7. * @param tree the OGNL expression tree to evaluate, as returned by parseExpression() 8. * @param context the naming context for the evaluation 9. * @param root the root object for the OGNL expressio

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。