【SSH之旅】一步学习的步Struts1相框(三):分析控制Struts1示例
部分博客,,先后实施了Struts抽样。现在我们来分析这个样本。具体解释Struts1。
Struts1的几个核心组件是值得我们注意的:
(1)ActionServlet(核心控制器)。
(2)ActionForm(接收页面中传过的数据)。
(3)Action(是控制器,主要是从ActionForm中接收页面传进来的数据,然后进行逻辑处理)。
(4)ActionForward(页面跳转。跳转到jsp组件)。
(5)ActionMapping(配置每一个Action所相应的映射关系)。
详细的工作流程例如以下:
(1)ActionServlet是在web.xml中配置的一个自己主动启动项。
当webserver启动时,也就同一时候实例化了 ActionServlet类,ActionServlet会去初始化struts-config.xml的配置信息,并将其载入到内存中。去实例化action-bean。actionform等对象。
(2)当ActionServlet接收到来自client的请求时,就会去检索和去请求相匹配ActionMapping实例,假设没有找到则返回500错误.
(3)假设找到了就检查相应的ActionForm实例是否存在 a、假设存在,先把该实例相关数据reset清空一下。然后就把用户提交的表单数据填充到ActionForm 实例中. b、假设不存在。就创建一个ActionForm对象,再把用户提交的表单数据填弃到ActionForm实例中
(4)接着,再依据配置。看看是否要对表单进行验证(validate),假设须要验证,则调用ActionForm的 validate()方法对表单进行验证。a、假设验证没通过。则返回错误信息。 b、假设不须要验证。或者须要验证但validate方法返回null或者是返回一个不包括ActionMessage的ActionErrors对象的话。表明验证成功。
(5)ActionServlet依据ActionMapping实例所包括的映射信息决定将请求发送给哪个Action,假设相应的 Action实例不存在,则创建该Action的实例,然后调用该Action的execute()方法
(6)运行完Action实例的execute()方法后,该方法会返回一个ActionForward对象。
(7)ActionServlet再把client发过来的请求。转发给ActionForward对象所指向的JSP组件。
(8)ActionForward所指向的JSP组件再生成动态网页,送回给client。
Struts1与传统MVC有什么差别呢?
传统MVC(Model2)中:
MVC设计模式中。先由客户发送HTTP请求,控制器Servlet会接收用户发送的全部请求。然后Servlet调用javabean。将显示结果通过JSP页面进行显示。
传统MVC和Struts对比:
总结:
struts1中,依旧存在servlet(控制器)。但这个时候却是ActionServlet。由struts-config.xml配置文件控制,action就相当于MVC中一个个的servlet,由Action调用javabean完毕一个个详细的操作业务。
Struts1比传统的MVC模式多了三个组件。即标签库,ActionForm和Action,关于Struts1和MVC的关系。我感觉MVC是一个标准。而Struts1是实现。MVC像一个接口,struts1实现了这个接口。
版权声明:本文博主原创文章。博客,未经同意不得转载。