展示层的应用程序设计架构

在Web服务器启动时,ActionServlet将进行初始化工作,读取配置文件(struts-config.xml),为不同的Struts模块初始化相应的ModuleConfig对象。比如配置文件中的Action映射定义都保存在ActionConfig集合中。相应地有ControlConfig集合、FormBeanConfig集合、ForwardConfig集合和MessageResourcesConfig集合等。以下是客户端从发出请求到获得响应整个过程的图解说明。
客户的浏览器向Struts应用发出请求。
1) ActionServlet接受请求,并调用RequestProcessor中的process()方法。
2) RequestProcessor从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面。否则控制器将请求分发至具体Action类进行处理。
3) 在RequestProcessor调用具体Action的execute方法之前,ActionForm对象将利用HTTP请求中的参数来填充自己(可选步骤,需要在配置文件中指定)。具体的ActionForm对象应该是ActionForm的子类对象,它其实就是一个JavaBean。此外,还可以在ActionForm类中调用validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。如果执行成功,ActionForm自动将这些参数信息以JavaBean(一般称之为form bean)的方式保存在Servlet Context中,这样它们就可以被其它Action对象或者JSP调用。Struts将这些ActionForm的配置信息都放在FormBeanConfig集合中,通过它们Struts能够知道针对某个客户请求是否需要创建相应的ActionForm实例。
4) RequestProcessor调用具体Action的execute方法。
5) Action只负责完成与控制有关的功能。Action的execute方法将会调用Business Delegate 中的业务方法去执行相应的业务逻辑。
6) Business Delegate使用ServiceLocator,获得模型中的Session Facade 远程接口。
7) Business Delegate调用Session Facade的业务方法。
8) Business Delegate 获得Session Facade在执行业务方法后所返回的Transfer Object。
9) Action 获得 Business Delegate 所返回的Transfer Object。
10) Action 把所获得的Transfer Object对象保存到ActionForm中。
11) 完成保存Transfer Object对象后,Action将创建所对应的ActionForward对象。
12) Action返回所创建的ActionForward对象给予Request Processor。
13) Request Processor根据ActionForward中的路径,转发到下一个JSP或Action。
14) JSP从ActionFrom 中取得显示的数据,创建视图。
15) 客户获得响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值