码迷,mamicode.com
首页 > 其他好文 > 详细

Struts2执行过程

时间:2016-09-28 12:12:45      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

1.

技术分享

 

2.

技术分享

 

3.

 技术分享

 

 

 4.

技术分享

 

 

 

 

2.Struts执行流程
2.1 web.xml中 StrutsPrepareAndExecuteFilter类

2.2 找到doFilter方法
体现出一种设计模式
解释了Struts2中 request 并不是HttpServletRequest
request = prepare.wrap(包装)Request(request);

***:ActionMapping mapping = prepare.findActionMapping(request, response, true);

findActionMapping方法:
public ActionMapping findActionMapping() {
//先看内存中有没有映射结果!
ActionMapping mapping = (ActionMapping) request.getAttribute(STRUTS_ACTION_MAPPING_KEY);

//没有,找到ActionMapper构建
if (mapping == null || forceLookup) {

mapping = dispatcher.getContainer().getInstance(ActionMapper.class).
}

return mapping;
}

2.3 上面代码已经保证mapping不是null
if (mapping == null) {

} else {
//code execute
execute.executeAction(request, response, mapping);
}

executeAction方法原型如下:
public void executeAction() throws ServletException {
dispatcher.serviceAction(request, response, mapping);
}

*serviceAction原型
public void serviceAction(){

ActionProxy proxy = getContainer().getInstance(ActionProxyFactory.class).createActionProxy(
namespace, name, method, extraContext, true, false);

}

*:寻找ActionInvocation

if (mapping.getResult() != null) {
Result result = mapping.getResult();
result.execute(proxy.getInvocation():返回值类型是ActionInvocation);
} else {
proxy.execute();
}

Struts2执行过程

标签:

原文地址:http://www.cnblogs.com/qingzhi/p/5915636.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!