欢迎来到天天文库
浏览记录
ID:45078382
大小:2.66 MB
页数:43页
时间:2019-11-09
《Struts2架构剖析及数据接收》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Struts2Struts2架构剖析及数据处理本章目标了解Struts2和XWork的关系,以及各自的职责熟悉Struts2的体系结构了解Struts2框架的调用流程使用Struts2框架接收数据WebWork的数据流图struts2的处理流程当用户发送请求,进入StrutsPrepareAndExecuteFilter(是struts2框架的核心控制器,它负责拦截由/*指定的所有用户请求,当用户请求到达时,该过滤器会过滤用户的请求。)接着进入:Interceptor(Struts2内置的一些拦截器或
2、用户自定义拦截器)接着进入:Action(用户编写的action类,与struts1不同,struts2对用户的每一次请求都会创建一个Action,所以线程是安全的。)接着进入:Result(获取转发页面)接着进入:转发的页面最后:解析响应给客户端XWork2-----Struts2的基础与WebWork2相同,Struts2框架也是由两部分组成:XWork2和Struts2。XWork是一个命令模式框架,它是Struts2的基础。XWork提供了很多核心功能:IoC(Inversionofcontrol,控制反转)容器,强大的表达式语言(OGNL:Ob
3、jectGraphNavigationLanguage-----对象图像导航语言)数据类型转换,验证和可插入的配置。XWork框架的核心概念包括action,拦截器(inerceptor)和result.Struts2拦截器工作原理Struts2拦截器工作原理Struts2与XWork2之间的交互图Struts2与XWork2之间的交互图Struts2与XWork2之间的交互一个HTTP请求到达Struts2的FilterDispatcher之后,就会被转换成一个actioncommand.这个actioncommand在穿越了一系列Struts2和XW
4、ork的拦截器(1~3)之后,最后执行用户编写的Action实例。在Action执行后,响应还会穿越相同的拦截器,按照与请求相反的顺序即拦截器(3~1).最后通过Struts2的HttpServletResponse转换成Web可识别的响应,如JSP。Struts2的数据流图Struts的数据流程当接收到一个HttpRequest,Interceptor做一些拦截或者初始的工作;当外部的HttpServletRequest到来时,初始到了Servlet容器传递给一个标准的过滤器链;ActionContextCleanUp这个在集成插件方面非常有用。Oth
5、erfilters(SitMesh,etc)调用FilterDispatecher会去查找相应的ActionMapper;如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy,ActionProxy将会通过ConfigurationManager来查找配置struts.xml;下一步将会通过ActionInvocation来负责命令模式的实现(包括调用一些拦截器Interceptor框架,在调用action之前),一旦action返回,会查找相应的Result,Result类型可以是JSP或者FreeMark等;这些组件和A
6、ctionMapper一起返回给请求的url(注意拦截器的执行顺序),响应的返回是通过我们在web.xml中配置的过滤器;如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理threadLocalActionContext;如果ActionContextCleanUp不使用,则将会去清理threadlocal。ActionMapper和ActionMappingorg.apache.struts2.dispatcher.mapper.ActionMapper接口在HTTP请求和action调用请求之间提
7、供了一个映射。当给定一个HTTP请求时,ActionMapper根据请求的URI来查找是否有对应的action调用,(1)如果有,则返回一个描述了action调用的ActionMapper;(2)如果没有匹配的action调用请求,则返回null.Struts2框架对该接口提供的默认实现是org.apache.struts2.dispatcher.mapper.DefaultActionMapper.ActionMapping本质上是一个数据传输对象,它将Action类和要执行的方法的详细资料收集在一起。ActionMapping由org.apache.
8、struts2.dispatcher.Dispatcher和用户各种接口组件使用
此文档下载收益归作者所有