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

***struts2 流程分析
1.启动时,ConfigurationProvider用来加载配置文件,子类StrutsXmlConfigurationProvider 加载struts.xml文件

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

3.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 映射类,用来存放根据请求和配置文件,生成的映射信息
根据该信息可以找到对应的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,ActionProxy创建ActionInvocation,由ActionInvocation实际创建Interceptors和Action

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值