WebWork框架的处理流程(2)
来源:互联网 发布:vscode sln 编辑:程序博客网 时间:2024/05/22 15:03
都说Struts 2与Struts 1相差太大,Struts 2是从webWrok发展而来的,那什么是WebWord呢??看看下面的介绍.
1.3.1 WebWork框架
WebWork 2建立在Xwork之上,处理HTTP的响应和请求。WebWork 2使用ServletDispatcher将HTTP请求的变成Action(业务层Action类)、Session(会话)、Application(应用程序)范围的映射及Request请求参数映射。WebWork 2支持多视图表示,视图部分可以使用JSP、Velocity、FreeMarker、JasperReports、XML等。
从处理流程上来看,WebWork与Struts 1非常类似,它们的核心都由控制器组成,其中控制器都由两个部分组成:
- 核心控制器ServletDispatcher;
- 业务逻辑控制器Action。
WebWork改变了Struts 1严重依赖Servlet API的缺陷,使得WebWork更加灵活,并给测试工作带来了方便。图1.8显示了WebWork工作流程。
(1)一个初始的请求被发送到Servlet容器(如Tomcat或Resin),这个请求经过一个标准的Filter链,其中包括(可选的)ActionContextCleanUp Filter,如果要在应用程序中整合其他的技术如SiteMesh,就需要使用这个Filter。然后请求经过FilterDispatcher(注:WW2.2之前处理这个请求的是ServletDispatcher),在它里面ActionMapper会判断这个请求是否需要调用Action。
(2)如果ActionMapper决定应该调用一个Action,FilterDispatcher就把请求委托给ActionProxy,ActionProxy通过WebWork的配置文件管理器读取xwork.xml文件里的配置信息。然后创建一个实现了命令模式的ActionInvocation。这一过程包括在调用action本身之前调用所有的Interceptor(before()方法)。
(3)一旦Action方法返回,ActionInvocation就要查找xwork.xml文件中这个Action的结果码(Action Result Code)(一个String如success、input)所对应的result,然后执行这个result。通常情况下,result会调用JSP或FreeMarker模板来呈现页面(但不总是这样,例如result也可以是一个Action链)。当呈现页面时,模板可以使用WebWork提供的一些标签,其中一些组件可以和ActionMapper一起工作来为后面的请求呈现恰当的URL。
(4)最后Interceptor被再次执行(顺序和开始相反,调用after()方法),然后最终请求被返回给web.xml中配置的其他Filter。如果已经设置了ActionContextCleanUpFilter,那么FilterDispatcher就不会清理ThreadLocal中的ActionContext信息。如果没有设置ActionContextCleanUp Filter,FilterDispatcher会清理掉所有的ThreadLocal。
- WebWork框架的处理流程(2)
- WebWork框架的处理流程(2)
- WebWork框架的处理流程
- WebWork框架的处理流程
- 学贯前后-WebWork框架的处理流程(2)
- WebWork的运行流程
- Struts 2框架的处理流程
- Struts 2框架的大致处理流程
- Struts 2框架的大致处理流程
- Struts 2框架的大致处理流程
- Struts 2框架的大致处理流程
- 关于webwork框架的检验
- struts2框架的处理流程
- webwork 框架
- 我谈webwork----轻量级的j2ee框架
- Play框架的请求处理流程1
- struts框架处理流程
- Struts2框架处理流程
- 面向对象开发的一点心得 - 文档
- 收集到了一些.NET的有用资料(3)
- 用fc命令辅助查杀DLL木马
- 宏大场景中的细节.
- MVC的处理过程及优点-学习Struts 2 不得不说的架构(1)
- WebWork框架的处理流程(2)
- 踏上白盒测试迷茫之路(之一)
- Struts 2 框架和配置(3)
- solaris下的crontab
- 用C#生成不重复的随机数
- sun 的openoffice使用手册
- 印花税下调为千分之一
- 安装Struts 2 (4)
- JavaScript概要