Struts2源码阅读(1)_整体流程分析

***struts2 流程分析

1.启动tomcat

  启动时,ConfigurationProvider用来加载配置文件,子类StrutsXmlConfigurationProvider 加载struts.xml文件。

2.用户发请求,Struts2拦截

  系统正常运行,用户发出HttpRequest请求,FilterDispatcher拦截请求,执行doFilter方法

3.核心控制类,FilterDispatcher

  in the FilterDispatcher doFilter method,映射工具类ActionMapper 根据 request
参数和已经加载的configuration,生成映射文件actionMapping
   ActionMapping mapping=
     actionMapper.getMapping(request, dispatcher.getConfigurationManager()); 

备注:

3.1 ActionMapper 映射工具类,根据请求和加载的配置,生成映射类

(The ActionMapper interface provides a mapping between HTTP requests 
and Config from struts.xml or properties) 

 3.2 ActionMapping 映射类

ActionMapping 映射类,用来存放根据请求和配置文件,生成的映射信息

根据该信息可以找到对应的Action 方法和所需的参数  
(Simple class that holds the action mapping information used to invoke a Struts Action)
  属性:(String namespace,String name,String method,Map params,Result result,String extension);    

4.创建代理对象

  创建ActionProxy对象,dispatcher.serviceAction(request, response, servletContext, mapping)
  --ActionProxy动态代理对象,用的是cglib的动态代理。
   动态代理:代理对象在执行被代理对象的操作前后,可以加入自己的业务逻辑。同时不破坏原来的封装性

5.创建拦截器和Action

  创建拦截器和业务Action,ActionProxy创建ActionInvocation,由ActionInvocation实际创建Interceptors和Action

6.执行

  执行操作,先执行拦截器,再执行action;ActionProxy.exute()-->ActionInvocation.invoke()-->
Intercepter.intercept()-->ActionInvocation.invokeActionOnly()-->invokeAction(
)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值