- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Struts1基本运作流程
--------------------------------------------------------------------------------
在Struts实现MVC/Model 2方式中,担任控制器(Controller)角色的是org.apache.struts.action.ActionServlet,它继承自javax.servlet.http.HttpServlet,通常会直接使用ActionServlet,在web.xml中配置相关的组态,就如同配置一般的Servlet一样,您也可以配置一些相关的初始参数给ActionServlet使用。
在MVC/Model 2的架构中,理想上客户端不会直接要求资源或指定请求的JSP页面,所有客户的请求都必须发送至控制器,由控制器决定该转发给哪一个对象进行处理、决定该由哪一个视图页面进行显示与响应。
在Struts中,担任控制器的是ActionServlet,所有的请求都发送给ActionServlet,对于ActionServlet来说,doGet()会将调用doPost(),所以无论请求是GET或POST在行为上都是相同的,ActionServlet藉由组态档struts-config.xml知道如何分配对象来处理请求,这包括了org.apache.struts.action.ActionMapping、org.apache.struts.action.ActionForm、org.apache.struts.action.Action等物件的分配,struts-config.xml是整个Struts运作的重心。
ActionServlet会将处理的控制权暂时交给Action对象,在Action中,您可以藉由一些数据传输对象(Data Transfer Object)、辅助类别(Helper Class)等来完成业务请求,Action应当传回ActionForward对象给ActionServlet,之后ActionServlet根据ActionForward来进行forward给视图或include视图(Viewer)的动作,由视图显示处理的结果。
Struts的视图部份可以是静态网页、JSP网页、Struts自订卷标,Struts自订卷标可以与Struts的一些对象及资源文件合作使用,但也可以使用其它自订标签,像是JSTL、JSF等。
在Struts 1.1中新增org.apache.struts.action.RequestProcessor类别,有关于使用者请求的对象分配等动作已经大部份交由RequestProcessor来处理,下图是ActionServlet接收到请求之后的一些主要动作,在之后的各主题说明中,您可以藉由这张图您将可以了解struts-config.xml的组态设定意义,以及Struts运作的方式:
1. Struts2架构图
?请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。 ??????? ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation,然后ActionInvocation调用Interceptors,执行Action本身,创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener。 2. Struts2部分类介绍
这部分从Struts2参考文档中翻译就可以了。
ActionMapper ??????? ActionMapper其实是HttpServletRequest和Action调用请求的一个映射,它屏蔽了Action对于Request等java Servlet类的依赖。Struts2中它的默认实现类是DefaultActionMapper,ActionMapper很大的用处可以根据自己的需要来设计url格式,它自己也有Restful的实现,具体可以参考文档的docs\actionmapper.html。
ActionProxyActionInvocation ??????? Action的一个代理,由ActionProxyFactory创建,它本身不包括Action实例,默认实现DefaultActionProxy是由ActionInvocatio
原创力文档


文档评论(0)