引用: |
如果在Action Centric的框架,要避免两个访问点,可以这么定义。 view.do?&templateName=a &objectName=/@Demo&objectEvent=test |
这
种做法就是程序自己处理而不是框架支持了。我说过,工作就是那么多,只是框架做什么和程序作什么的分工而已。说jsplet是page为中心也不太准确,
jsplet是以对象为中心,只是指定了希望使用的视图页面而已。view.jsp放在前面只是jsp实现上的一个问题,
引用: |
Action Centric 确实比较麻烦,必须同时传入角色列表 和 用户列表的 分页信息。 JSPLet对于这个问题是怎么处理的? |
很简单包含两个子页面
list_both.jsp
<jsp:include page="role_list.jsp?objectName=/@RoleManager" />
<jsp:include page="user_list.jsp?objectName=/@UserManager"/>
在
访问的时候通过指定eventTarget参数即可将事件路由到合适的对象,没有响应事件的对象thisObj里的内容不变,因为前台view显示内容也
不变。注意这里role_list.jsp和RoleManager, UserManager对象都是独立开发的。
引用: |
这个时候,role_list.jsp 和 user_list.jsp里面都有一个 thisObj。而且这两个thisObj的scope都是 sesession ? |
注
意所有的对象模型都需要状态保持机制,所以thisObj确实被保持在session中。在webwork2中如果希望在多个action之间协调,则必
须将某个对象保留在session中,否则就是采用无状态模型,所有的状态数据都持久化在数据库中,每次输出的页面都和某个action产生绑定(一种行
为相关),则根本无法实现上述例子中的分解过程,因为在action模型中状态与行为无法抽象到一起并重用!
当页面显示逻辑比较复杂的情况下,页面本身也有一些临时状态需要保持,MVC并不是意味着所有的状态都是需要持久化到数据库中的关键业务数据。在每个层次
上都可能需要保持状态,MVC只是说某些状态变量更加重要,可以驱动其它层次而已。
另外说thisObj的scope是session也是不
准确的。首先注意到jsplet通过对象化实现了将状态和行为抽象到一起,此后程序就拥有了对这个整体的控制权,在jsplet中存在着对象的生命周期控
制,对象的scope是自定义的,对象的生命周期是session的子部分,而不是整个session生命周期范围内都存在。请注意一下这种控制策略带来
的可扩展性。我们拥有了对象生命周期的控制权,依然可以采用无状态设计,但在需要保持状态的时候,可以做到。而在webwork这样的action模型中
是没有这种选择权的。
thisObj只是允许使用session,是否使用session可以自行决定,这是一种使能技术,而没有object支持,结果是无法有效的使用。另外,请仔细看清楚,objectScope是一种非常精细的资源使用控制手段。
另
外不要把设计理念和性能混为一谈。设计体现的是对概念的把握,能够达到合适的抽象,而性能是实际实现过程中的限制。在概念能够支持的情况下,可以采用技术
手段解决性能问题,或者退化到较低的层次,这是一种选择权。而概念无法支持的情况下,就需要各种穿墙打洞的方法来实现。
thisObj重要的是概念,如果需要,它可以把状态序列化到cookie或者dotNet那种参数中,这只是个实现问题。
引用: |
JSPLet Action 必须是 JSP ? |
当然可以是任何java类, JSP Action只是IEventListener接口的一个实现 。在jsplet最初的版本中,action只能写在java文件中。稍后改为可以写在jsp中也可以写在java中
引用: |
WebWork的Action本身就是模型对象 |
这是WebWork弱的地方,它因为是基于action的,没有对象化,所以只有以action作为模型对象的载体,无法捕获多个action之间的状态相关性。
完全无状态的设计正是因为没有合适载体造成的。而jsplet中thisObj可以看作是对session的局域化,是对session的分解。jsplet中的很多概念在webwork这种面向action的框架中都能找到对应,只是加上了很多限制并且变得模糊了。
引用: |
没有model1简易(jstl+javabean) 没有struts的"优雅" 定位模糊. |
jsplet
是以非常精炼的方式实现对象化。再说一次,不要把jsplet的定位向那些开源框架上靠。jsplet的开发时间大概与那些开源框架同时进行的。仔细看看
设计中的可扩展性。xwork的所有特性jsplet都可以实现,而且jsplet多提供的部分就是对象化。
可
以使用
并不意味着必须使用,所有无状态设计都可以一样应用。jsplet是一种事件驱动设计,在这一点上,更像是Tapestry或者JSF。基于
actioin的设计是真正的无能使用session,它不敢应用session的原因是它对session没有控制力。而在jsplet中对
session的使用控制是很自然的:当你需要对象的时候,当你需要这个状态的时候,它才存在。它出现是因为需要它存在。在面向action的框架中,你
仍然需要解决状态问题。只是框架无法提供支撑,自己解决而已。
我想,大概大多数人开发的程序都是CURD的堆砌,所以很难理解一个复杂的应用中的状态管理的必要性。有了对象支持之后,才构成整个框架的概念上的完备性。
分享到:
相关推荐
标题 "php导入msn和一些常用邮箱的通讯录" 涉及到的是使用PHP编程语言来实现从多个流行的电子邮件服务提供商(如Gmail、Yahoo、Sohu、Sina、Tom等)以及MSN(微软的即时通讯服务)导入联系人的功能。这个项目的核心...
然而,对于大型项目或频繁需要导入外部模型时,手动导入OBJ格式的3D模型可能会变得繁琐且效率低下。这时,"merge_批量导入MAX.zip" 提供的3ds Max批量导入OBJ插件就显得非常实用。 标题中的"merge_批量导入MAX.zip...
手册还提供了一些实际的工作案例,帮助用户更好地理解和应用Analyst’s Notebook导入器的功能。这些案例涵盖了不同类型的数据文件和导入规范的使用方法,有助于用户掌握更复杂的操作技巧。 综上所述,Analyst’s ...
ERwin 反向导入工程(从数据库把表导入 ERwin) ERwin 反向导入工程是指从数据库中将表导入到 ERwin 中的过程,在这个过程中,我们可以将数据库中的表结构导入到 ERwin 中,以便进行数据分析和设计。下面是 ERwin ...
标题和描述中提到的文件是关于“信息技术提升2.0作业”,具体聚焦于A5技术支持下的课堂导入在体育教学中的应用。这份文档可能是教师在探讨如何利用信息技术改进体育课堂导入,以提高教学质量和效率。 首先,我们要...
【U8 BOM快速导入脚本】是一种高效的方法,用于将物料清单(Bill of Materials,简称BOM)数据批量导入到用友U8系统中。用友U8是一款广泛应用于企业管理中的ERP(Enterprise Resource Planning)软件,而BOM是产品...
《用友凭证导入工具详解与应用》 在会计信息化领域,用友软件是广泛应用的一款财务管理软件,其中的凭证管理功能是其核心模块之一。为了提高工作效率,减少手动录入凭证的繁琐工作,用友U8系统提供了凭证导入工具,...
同时,使用 pro/E 导入到 ADAMS 也需要注意一些问题,例如零件名(Model Name)的定义、文件格式的选择等。 此外,使用 MECHPRO2005 进行导入,也需要注意一些问题,例如零件和装配体的单位设置、刚体的生成、模型的...
"普元导入导出"是普元信息公司提供的一个功能模块,主要应用于数据的批量导入与导出,尤其适用于与Excel文件的交互。这个功能在数据管理、数据分析以及日常业务处理中十分常见,因为它能够方便地将大量结构化数据在...
但是,在一些老系统中,DBF 文件仍然被广泛使用。因此,将 DBF 文件导入到 Oracle 数据库中成为一个非常重要的工作。本文将详细介绍如何将 DBF 文件通过 PL/SQL 导入到 Oracle 数据库中。 环境准备 在开始将 DBF ...
以下是关于这些主题的详细说明。 1. PHP导入XLS文件: - XLS文件是早期版本的Microsoft Excel(97-2003)使用的文件格式,通常用于存储表格数据。在PHP中处理这种文件,我们通常会用到一些库,如`...
Matlab 导入 Excel 数据教程 Matlab 是一个功能强大的数据分析和处理工具,而 Excel 是一个广泛应用于数据存储和处理的电子表格软件。将 Excel 中的数据导入 Matlab 是一种常见的数据处理需求。以下是 Matlab 导入 ...
Jeecg是一款基于Java...以上就是关于"Jeecg导入Excel"的主要知识点。通过掌握这些内容,开发者可以有效地利用Jeecg框架实现高效、安全的数据导入功能。在实际应用中,还需要结合具体的业务需求进行相应的定制和扩展。
"endnote批量导入enw文件"这个主题就是关于如何高效地将ENW格式的文献资料批量导入到EndNote库中的方法。 ENW文件是EndNote的专用格式,通常包含文献的元数据,如作者、标题、期刊、出版年份等信息。这种格式便于在...
描述中的“ad logo导入脚本.zip”进一步证实了这个压缩包是关于在AD中处理logo导入功能的。这可能包括一个或多个脚本,这些脚本能够简化将自定义图形(如bmp格式的图片文件)转化为可在PCB设计中使用的格式。 标签...
5. **多类型试题**:该系统支持多种题型,如选择题、填空题、判断题、问答题等,可以满足不同学科和知识领域的需求,为用户提供全面的考核手段。 6. **数据库文件**:在提供的压缩包中,"exams.sql"是数据库文件,...
在C#编程中,处理Excel数据的导入是一项常见的任务,特别是在数据处理、数据分析或系统集成等领域。本主题将深入探讨如何在C#中实现对Excel 2003和2007两种不同版本文件的支持,包括数据读取、转换以及可能遇到的...
《用友U8凭证导入工具免费版:提升财务效率的关键》 在当今信息化的时代,财务管理软件已经成为企业运营不可或缺的一部分。用友U8作为国内知名的ERP(Enterprise Resource Planning)系统,以其强大的功能和广泛的...
PLSQL Developer是一款专为Oracle数据库设计的集成开发环境,它提供了一套全面的工具来方便数据库管理员和开发者进行各种操作,包括数据导入。本教程将详细讲解如何使用PLSQL Developer导入Excel表格数据。 首先,...
控制文件包含关于数据文件的格式、表的映射以及数据验证规则等信息。 三、准备CSV文件 CSV文件中的每一行代表数据库表的一条记录,每列由逗号分隔。确保文件编码与数据库字符集匹配,避免导入时出现乱码问题。此外...