zoukankan      html  css  js  c++  java
  • [SSH] Struts2的工作流程

    Struts2在Struts的基础上 有了很多的优点 具体的不同 可以参考另一边博文-> Struts2与Struts1的比较

    首先整理列出响应流程先后中的一些名词:

    (1)过滤器(Filter):过滤器,接收到Url的时候就会产生作用。

    (2)StrutsPrepareAndExecuteFilter(2.1.3之前用的是FilterDispatcher):名字已经很能说明问题了,prepare与execute,前者表示准备,可以说是指filter中的init方法,即配制的导入;后者表示进行过滤,指doFilter方法,即将request请求,转发给对应的 action去处理。

    (3)ActionProxy:ActionProxy是Action的一个代理类,也就是说Action的调用是通过ActionProxy实现的,其实就是调用了ActionProxy.execute()方法,而该方法又调用了ActionInvocation.invoke()方法。归根到底,最后调用的是DefaultActionInvocation.invokeAction()方法。

    (4)ConfigurationManager:一般是读取struts.xml。

    (5)ActionInvocation:为每一个Action产生一个实例,进行调度。

    (6)Interceptor : 同样作为拦截器,只对Action产生作用。

    流程图示(对通用图的一个改进):

    文字描述:

    (1)客户端初始化一个指向Servlet容器(如Tomcat)的request请求。

    (2)容器通过web.xml映射获得相应控制器的名字。

    (3)请求首先经过一系列的过滤器(ActionContextCleanUp等)。

    (4)接下来调用控制器StrutsPrepareAndExecuteFilter,通过ActionMapper获得是否要调用某个Action。

    (5)将权力转交给ActionProxy,来处理相应的requset。

    (6)ActionProxy通过ConfigurationManager在struts.xml中找到对应的Action信息和相应的Interceptor Stack信息。

    (7)ActionProxy创建以个ActionInvocation实例。

    (8)ActionInvocation采用命名模式来调用相应的Action,其中按照Interceptor Stack信息先后调用拦截器。

    (9)根据Action的配置信息,对request产生result。

    (10)result反向通过Interceptor返回给ActionInvocation。

    (11)ActionInvocation产生一个HttpServletResponse相应。

    (12)将相应发送给客户端。

  • 相关阅读:
    创建型设计模式之-单例
    设计模式(1、创造型2、结构型、3行为型)
    手写IOC容器和两种注入(构造方法注入和属性注入)
    从依赖倒置原则到IOC控制反转
    自定义HttpHandler可以做什么
    一个用户在浏览器上输入网址怎么走到我们写的.net程序中的,请求到管道处理
    代理Nginx
    .Net Expression表达式目录树(自己动态创建表达式目录树)
    canvas绘制圆环进度条
    城市二级联动
  • 原文地址:https://www.cnblogs.com/TinyBobo/p/4710138.html
Copyright © 2011-2022 走看看