Spring及Struts2工作原理

 

目前比较流行的是myabits +springMVC开发。

Struts2请求响应流程:

 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller、ActionProxy、ActionMapping、Configuration Manager、ActionInvocation、Inerceptor、Action、Result等。下面我们来具体看看这些组件有什么联系,它们之间是怎样在一起工作的。

 Spring及Struts2工作原理_第1张图片

 

(1)  客户端(Client)向Action发用一个请求(Request)

(2)  Container通过web.xml映射请求,并获得控制器(Controller)的名字

(3)  容器(Container)调用控制器(StrutsPrepareAndExecuteFilter或FilterDispatcher)。在Struts2.1以前调用FilterDispatcher,Struts2.1以后调用StrutsPrepareAndExecuteFilter

(4)  控制器(Controller)通过ActionMapper获得Action的信息

(5)  控制器(Controller)调用ActionProxy

(6)  ActionProxy读取struts.xml文件获取action和interceptor stack的信息。

(7)  ActionProxy把request请求传递给ActionInvocation

(8)  ActionInvocation依次调用action和interceptor

(9)  根据action的配置信息,产生result

(10) Result信息返回给ActionInvocation

(11) 产生一个HttpServletResponse响应

(12) 产生的响应行为发送给客服端。

 

Spring核心架构的具体流程步骤如下:

Spring及Struts2工作原理_第2张图片

1、  首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行

处理,作为统一访问点,进行全局的流程控制;

2、  DispatcherServlet——>HandlerMapping,  HandlerMapping 将会把请求映射为 HandlerExecutionChain 对象(包含一

个 Handler 处理器(页面控制器)对象、多个 HandlerInterceptor 拦截器)对象,通过这种策略模式,很容易添加新

的映射策略;

3、  DispatcherServlet——>HandlerAdapter,HandlerAdapter 将会把处理器包装为适配器,从而支持多种类型的处理器,

即适配器设计模式的应用,从而很容易支持很多类型的处理器;

4、  HandlerAdapter——>处理器功能处理方法的调用, HandlerAdapter 将会根据适配的结果调用真正的处理器的功能处

理方法,完成功能处理;并返回一个 ModelAndV iew 对象(包含模型数据、逻辑视图名) ;

5、  ModelAndV iew 的逻辑视图名——> V iewResolver,   ViewResolver 将把逻辑视图名解析为具体的 V iew, 通过这种策

略模式,很容易更换其他视图技术;

6、  V iew——>渲染,V iew 会根据传进来的 Model 模型数据进行渲染,此处的 Model 实际是一个 Map 数据结构,因此

很容易支持其他视图技术;

7、返回控制权给 DispatcherServlet,由 DispatcherServlet 返回响应给用户,到此一个流程结束。

你可能感兴趣的:(struts2)