首页 > 代码库 > struts1.2源码分析记录

struts1.2源码分析记录

struts思路:
1.struts使用的三板斧ActionForm、DispatchAction、ActionMapping
2.主要关注点:Form、Action、Forward
3.页面如何发送请求参数,后台如何截取.do请求,如何将参数组装成Form,在Action中如何操作Form,如何查找目标页面,如何将Form返回到页面,页面如何通过标签读取Form属性

框架主流程:
Struts所有的请求都要走DispatchAction类的public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse res)方法
可以重载execute方法(完成用户校验,数据库连接初始化),并可以根据method参数将操作转向处理方法。

框架细节:
1.接收.do请求
2.将参数转化成ActionForm
3.找到对应DispatchAction并将ActionForm传递给该DispatchAction的对应方法
4.从mapping中找到目标页面,将ActionForm进行序列化,发送到页面
5.页面通过标签对Form进行解析
框架细节代码(处理http请求并返回):
1.ActionMapping mapping = processMapping(request, response, path);
2.ActionForm form = processActionForm(request, response, mapping);
3.processPopulate(request, response, form, mapping);
4. ActionForward forward =processActionPerform(request, response,action, form, mapping);
5.processForwardConfig(request, response, forward);
6.response.sendRedirect(response.encodeRedirectURL(uri));
7.RequestDispatcher rd = getServletContext().getRequestDispatcher(uri); rd.forward(request, response);


从配置文件和解析配置文件入手
1.struts-config.xml的结构
a.主要元素:data-sources、form-beans、action-mappings、global-forwards、global-exceptions、message-resources、plug-in
b.通过common-digester工具包结合dtd进行xml的自动解析和加载
2.解析struts-config.xml的过程
a.ModuleConfig是与struts-config.xml配对的java对象
b.将xml配置信息加载到内存后,会将资源分配给各个需要的模块并进行初始化