struts1.2处理流程(结合源码说明)

1.首先tomcat或其它web服务器启动的时候会去加载ActionServlet的初始化方法。
在这个init方法中会做很多初始化的事情,如
国际化对象的创建-》全局化字符—》Scanning web.xml for controller servlet mapping-》struts-config.xml配置解析(包括国际化资源配置,数据源配置,plugin配置)

2.页面提交http的post或get请求之后,ActionServlet中的doPost(),doGet()会接收这个处理

3.之后会调用ActionServlet的process函数,在这个函数中首先会查询是来自于哪个模块(struts中可按模块配置多个struts-config.xml),然后根据配置查询对应的requestProcess,每个模块都会有自己独立的一个requestProcess实例最后调用requestProcess.process(request, response)方法进行处理.
4.在requestProcess.process(request, response)函数中主要存在以下处理,相关代码如下:

// Select a Locale for the current user if requested
processLocale(request, response);



// Set the content type and no-caching headers if requested
processContent(request, response);
processNoCache(request, response);
// General purpose preprocessing hook
if (!processPreprocess(request, response)) {
return;
}
ActionForm form = processActionForm(request, response, mapping);

...

Action action = processActionCreate(request, response, mapping);
ActionForward forward =
processActionPerform(request, response,
action, form, mapping);

// Process the returned ActionForward instance
processForwardConfig(request, response, forward);

processPreprocess函数的实现直接返回true,该函数主要是为了想扩展requestProcess的功能提供的一个切入点。

processActionForm函数主要是用于创建请求的ActionForm,它首先会根据struts-config.xml配置中的scope,如果是request则从request
中取,或者从session中取,如果取不到则使用classLoader实例化一个实例。然后保存在request或session返回内

processActionCreate用于创建请求对应的Action实例,它首先会从requestProcess中的actions(map类型)中去查找,
如果没有的话则跟ActionForm一样通过classLoader实例化一个实例,然后根据类路径加文件名作为key保存在actions中

processActionPerform函数就进入到我们自己写的action中了。
processForwardConfig用于处理请求转发
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值