Struts总控的执行流程剖析

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Struts总控的执行流程剖析

通过在web.xml中将请求映射到ServletController,doget和dopost都是直接调用ServletController的process方法:

Ø ServletController的controller的process方法调用过程:

1、选择当前模块

2、得到相对应的RequestProcessor对象,并初始化

3、执行RequestProcessor的process方法

Ø RequestProcessor的process流程:

Ø 根据请求和配置得到一个与请求相关的form

Ø 首先根据formbean的作用范围设置在request或session中找form对象

Ø 找到的话直接返回此对象,否则创建一个新的

Ø 根据formbean的作用范围设置(默认为session),将其保存到会话中

Ø 将form重置:调用reset()

Ø 接收请求参数(采用了反射机制,org.apache.common的类)@注:处理multipart,时,动态的从config.xml的controller的multipartClass载入处理类生成对象,附给form的multiparthandler域,可操纵。

Ø 根据请求是否是cancle form,进行如下操作setAttribute(Globals.CANCEL_KEY, Boolean.TRUE),在action的isCancelled(request)中将返回此变量。

Ø 验证form:

Ø 如果Globals.CANCEL_KEY为true,进入下一步。

Ø 从配置中读取Validate,如不需验证,进入下一步。

Ø 调用form bean 的validate()方法,此方法将返回一个ActionErrors。

Ø 监视ActionErrors,如果次对此对象是null或者为空,接受输入,进入下一步。

Ø 否则,先调用multiparthandle的rollback,然后读取此form bean 的input设置,如果input 为空,通过response.sendError()发送noInput错误信息;否则先设置request.setAttribute(Globals.ERROR_KEY, errors),然后转发到input页面。在input叶面可以用来调用在此方法中生成的actionarrors

此标签的几个属性:name一般不设置,它的默认值和actionerrors的保存键都是Globals.ERROR_KEY;property就是得到error列表中key为property的errors,不设置将得到所有的。

Ø 处理相关的action:

Ø 如果action是forward或者是include,执行后返回。

Ø 否则执行excute();2、执行转发动作3、如果抛出异常,将依据定义的异常捕获设置,转向相应的处理叶面。

Ø 方法返回。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航