【VC++开源代码栏目提醒】:网学会员VC++开源代码为您提供WebWork框架关键技术的研究与应用 - 会议论文参考,解决您在WebWork框架关键技术的研究与应用 - 会议论文学习中工作中的难题,参考学习。
第36卷第8期专刊
计算机科学 V01.36 No.8专刊 2009年8月 Computer Science Aug 2009 WebWork框架关键技术的研究与应用 何婧1石少岩2 (云南大学软件学院 昆明650091)1(-2南大学
网络智能计算实验室 昆明650091)2 摘要web删框架技术在Java web开发领域得到广泛应用,但大部分框架存在开发难度高、
代码编写量大、 功能模块难以测试等问题。
WebWork框架的出现很好地解决了这些问题。
本文主要分析了Webwork框架的工 作原理、架构构成和组件实现机制,最后给出了一个基于WebWork框袈的Web应用实例。
关键词Web应用,框架,MVC,WebWork Research and Application on the Key Technology of the WebWork Framework HE Jin91 SHI Shao-yan2 (School of Software,Yunnan University,Kunming 650091,China)1 (Laboratory of Network Intelligent Computing,Yunnan University,Kunming 650091,China)2 Abstract The technology of Web MVC framework has been wildly used in Java Web application devdopment area. But most of the frameworks exist following issues,such as difficult to develop,large amount of code。
and difficult to test function modules.The WebWork framework proposes a good solution for these problems.This paper analyzed the work principle。
architecture and component implementation mechanism of We删%rk framework,and gave a sim- pie Web application instance which iS hased OFt Webwork frameworL Keywords Web application,Framework,M〔vC,WebWork 求到最终用户视图展现这一MVC过程的阐述,深1 引言 入分析WebWork的初始化工作和Interceptor、Ac- 为适应Web应用系统规模不断扩大,复杂性急 tion等核心组件运行机制。
最后,基于WebWork剧增加的发展趋势,Web开发领域普遍采用三层体 框架,设计并实现了一个简单的Web应用实例。
系结构与面向对象技术相结合的
软件开发模式。
在 2 WebWork工作原理Java Web领域涌现出了众多基于MVC(ModelView Controller)的设计框架,例如:Struts,JSF, 当前的WebWork框架由Xwork和Web—Tapestry等〔1〕。
其中,Struts凭借其有力的技术支 Work2两个项目组成‘s|,如图1所示。
持得到了广泛应用〔2〕,但是,由于Struts是基于JSP/Servlet架构发展起来的,其业务逻辑控制器内充满了大量的Servlet API,使得功能模块难以测试,并且由于其
代码严重依赖于Struts API,属于侵入式
设计,一旦
系统需要重构时,导致
代码重用性降低。
因此,Struts大大增加了前期开发的难度和开 图1 WebWork框架构成 发成本。
为解决这一系列
问题,OpenSymphony组织开 其中,Xwork是一个标准的命令模式框架,与 发出了WebWork
开源架构。
Webwork能够提高 Web层完全脱离。
WebWork2建立在Xwork之 开发者的生产效率,简化
代码的编写与维护,加强组 上,处理HTTP的请求和响应。
件开发并提高
代码的重用性。
WebWork的官方网站上提供了~个完整的 本文主要介绍WebWork的架构、工作原理及 webwork架构图。
它描述了从客户端的一次请求 组件运行机制。
通过对webwork从最初URL请 到最后服务器端响应的具体执行过程,如图2所 本文受国家自然科学基金项目《基于语义Web的灵活
工作流机制研究》(项目编号60763008)资助。
· 126 · 求封装成为符合WebWork处理要求的Action— Mapping;最后.通过Xwork的AcitonProxy完成对 该ActionMapping的相应操作,从而达到赴理HT 二二二j壅兰亘E二:工二二工 曼巫王二〕〕 二j亟蔓画三二=〕〕 TP请求的目的. 其中,WebWork环境的初始化工作轻为直观, 我们重点研究FilterDispatcher对UP,L的过滤与封 。
‰i 卜“血目E四I盘| 装。
当一次H竹P请求到达WebWork的前端控 h一———I~…I }匝疆虽亘互銎L一一。
4目两萄£:卫广葡一。
1 }盛≈~biⅢJ 制器,FiiterI)ispatcher首先会根据请求的URI,解 析出对应的Action名,然后去咨询ActionMapper :“q—±!L——j1… }h删· t j@&i目::}w~“ ,, , 该Action是否可以被执行。
如果是.前端控制器就 把工作委派给ActionProxy,并咨诲Xwork的配置 j厦缸i藁0113一一 {Ⅱni自目=0 管理器,读取在xwork.xml文件中定义的配置信 息。
具体实现流程如图3所示。
L等爿函蠹州霪 L——J 7——ii—、 L鬻。
’_二^r,‘=“:E”t …:女&m一一 ~: 圈2 WebWork架柯圈 F2—2==——r~ 圉中,A、B、c、D、E五十部分表示的含义是: r———J———〕L——————J ! A:表示客户端的一次HTTP请求t以盈服务 l薹鎏峰,f占 宦薷M亘噩}一器端处理结束之后的一次响应. B:表示一次HTTP请求所要经过的Filter过 用篙≤涯滤器。
图中最后一个过滤器FilterDispatcher是WebWork的前端控制器,也是WehWork的核心控箭器。
囱 C:是WebWork框架的核心部分。
描述了APtion被执行前后的组建运行机制。
D:表示拦截器。
当WebWork截获Action请 匕剁求时,在Action执行之前或之后调用拦截器方法。
朗3 Fdle曲spatch目对请求的过滤与封装通过这样的方式,WebWork实现了用插拔的方式 其圊,Fi№Ⅸ靼kh牲就像WehWork与X,Ⅳork将功能注人到Action中。
之问的桥梁,完成了HTTp请求与相应命令模式动 E:表示使用WebWork进行Web应用开发时, 作、结果的转换,同时FilterDispatcher也是连接需要开发的程序模块。
包括:Action类.页面模板 WebWork各个部分的主线。
和配置文件xworkmd等. 3.2通过ht白teptor使用通用的功能和特性 从WebWork的颦构图中可以请楚地看到, WebWork的Action是开发人员使用WebWork进 由于WebWork框架是一个重量缎的MVC框 行编程的核心部分,它反映了Web应用的功能需架,涉及的内容较多.本文主要针对WcbWork的前 求m。
端控制器,以及与Action获取和处理相关的重要技 Iaterceptor是WebWork的拦截器,WebWork术进行研究。
在执行Action之前或之后调用Interceptor方法.3.1 Wt’bWork的前端控爿船 具体来说,Interceptor在莱个事件发生之前进行拦 Wehwork的前端控毹器FiltecDispatcb.er是 截,并插入某些相应的处理过程。
这个过程类似WebWork框架的棱心控制器“】,它是Webwork框 SeHlet 2 3规范中引^的Filter过滤器,但是架的开始,运行在Web应用的整个生命周期中。
XWork的Interceptor与SeⅣlet没有任何关系.因FilzerDislmteher通过调用Config呲ation类完成 此,interceptor将很多通用的功能从Action中独立WebWork环境的初始化}然后.负责拦截所有的 出来,大量碱少了Action的
代码,增强了
代码的重HTTP URL请求,当请求符合过滤要求时,将请求 用性和灵活性。
Action执行前后对Interceptor的转^到WebWork框架.井调用ActiomMapper将请 调用如图4所示。
·127· (1)与容器无关的ActionContext Xwork在每次执行Action之前创建新的Ac— tionContext,ActionContext为Action提供了与容 器交互的途径,使Action不依赖于任何Web容器, 不用和JavaServlet复杂的请求(Request)、响应 (Response)关联在一起。
对请求(Request)的参数 (Param),可以使用拦截器框架自动调用get()和 set()方法设置到对应的Action字段中。
例如,将 HttpSession对象重新包装成一个Map对象,供 Action使用,使得Actioin不用直接和底层的Http- Session打交道等。
从而实现Action与Web层解 耦,保证Xwork所面向的是一个通用的开放结构, 图4 Action基本处理流程 使WebWork框架中的逻辑层与表现层无关,增加 了Action
代码的重用性。
在执行Action的execute方法之前,拦截器队 (2)与容器相关的ServletActionContext列中的Interceptor按开发人员配置好的顺序依次 ActionContext为Action提供了与容器交互的递归调用,直到最后一个Interceptor的before方法 途径。
使Action不用依赖于任何web容器,但是被执行完并返回结果result后,在invoke方法中执 对JavaServlet相关对象直接操纵却无能为力。
在行表1所列的语句,实现对Action的execute方法 一些特殊的Web应用程序中也需要在Action里直的调用。
接获取请求(HttpRequest)或会话(HttpSession)的 表1 DefaultActionlnvocation调用action的实现 一些信息,甚至需要直接对JavaServlet Http的请 resukCode=invokeAction(getAction(),proxy.getCorffig()); 求(HttpServletRequest)和响应(HttpServletRe— sponse)做操作。
因此,Webwork针对该需求提供 之后再依次执行各Interceptor对象的after方 了与容器相关的Action上下文ServletActionCon-法直到结束。
由此,before方法在Action执行前调 tex|t。
用,after方法在Action执行之后运行,实现了以插 ServletActionContext继承了ActionContext拔的方式将通用功能注入到Action中。
开发人员 提供的所有功能,并提供了直接与JavaServlet相关可以在配置文件中组装自己的Action用到的Inter- 对象访问的功能。
ServletActionContext的功能比ceptor,它会按照指定的顺序,在Action执行前后运 ActionContext强大,但它是与Servlet API紧密耦行。
一旦行为需求发生变化,不必修改很多类,只要 合的,因此在Webwork框架中更多采用Action-修改该行为配置即可。
Context,在实现功能的同时,也使单元测试和在不 WebWork框架的很多功能都是以拦截器的形 同平台之间移植变得容易。
式提供出来的,例如:参数组装、验证、国际化、文件 另外,在Action调用业务逻辑层处理事务的过上传等等,所以Interceptor是WebWork的核心内 程中,WebWork集成了现有框架Spring作为自己容之一。
的IoC(Inversion of Control,反向注入)管理容3.3通过Action完成模型的处理 器〔6I,将业务逻辑层(service)通过IoC的形式添加 对于web应用开发而言,与Web容器的交互 到Action中,使得控制层和逻辑层实现了解耦。
大多集中在Session和Parameter,这使得表现层与逻辑层没有完全解耦。
既然Action是逻辑处理的 4 WebWork应用实例 入口,那么在编写Action的时候,也要面对同样的 基于对WebWork框架工作原理和关键技术的 问题。
对此,WebWork实现了表现层与逻辑层的 研究,本文简要描述了一个简单的Web应用
程序 解耦,而Action的上下文是这个解耦过程的关键 UserManage过程,主要是
演示一个 点。
Web应用程序如何利用webWork框架进行开发。
Action的上下文可以看作是一个容器,它存放 (1)UserManage的开发及运行环境 的是Action在执行时需要用到的对象,从实现的机 开发资源列表如表2所列。
制上,WebWork存在两种Action上下文:与容器无 表2开发资源
列表 关的ActionContext和与容器相关的ServletAc— 资源名称 说明 tioneontext〔63。
· 】28· JDKI 5 Java开发I具电 在UserManage中将通过URL对不同的AP Hlk四3 0 MyApp#月对象持九层客i t∞n进行请求,南WebWork根据对URI以及对 Omd《i MyApp宴倒使月¨关*氟据库 Action模型进行处理,将处理后的值堆栈和Result Tomcut MyApp实饲使用自JavaWebⅢ舟# 参数按照配置中规定发送到不同的视图中,完成整 Eebp”3 3 0 Java应月开发zDE}自 个Web应用。
恤*e n,。
监篇勰i嚣冀嚣:-十 (3)UserManage的运行效果 UserMaaage的运行效果如图6和图7所示。
WebWor址2 4 MyApp实倒自月WebMVC框*赉耀 Spr嗥2 0 1 MyAPP女倒使用I∞容嚣 其中,很多资源是
开源的,可以从同上
免费得到。
(2)UserManage系统设计 UserMallage应用实例是一十简单的^员
管理系统。
在UzerM哪ge中,主要利用WebWork提供的应用接口,实现人员权限管理.井利用Web—Work.