首页 > 其他 > 详细

struts 1.x 原理

时间:2014-10-10 23:43:05      阅读:556      评论:0      收藏:0      [点我收藏+]

Struts

 

当我接触到这个框架的时候,我就在想为什么是struts,而不是什么CraigFramework。结构、支撑,这样来理解也不难怪了。

 

为什么需要struts

 

struts in action这本书里,struts的开发者也讲到。在有了MVC后依然需要这样一个框架来支撑开发的工作,因为有了jspmodelejb来处理这一套流程还需要什么?

 

原理

 

首先需要在tomcat服务器启动,而tomcat启动后。部署在tomcat中的项目启动,相应在根据项目下的web.xml文件来实例化strutsservlet;并载入struts-config.xml文件。而后web客户端向tomcat发出request后,实例化request以及response对象。如果是post提交就调用dopost方法,请求ActionServlet并调用doPost方法。

 

部分图解:


 bubuko.com,布布扣


1.截取url

 

doPost方法中调用的process方法,通过一路艰辛传过来的request对象携带的url。通过RequestProcessor类中的processpath方法来截取url

 

2.获取ActionMapping

 

截取得到的url再来通过RequestProcessorprocessmapping来调用ModuleConfigImpl类来读取servlet-config.xml中的节点并将对应的数据设置到ActionMapping对象之中。

 

3.实例化ActionForm

 

struts-config.xml中有对应ActionFormname。通过这个name,首先在sessionrequest中查找,如果有直接返回;没有通过name拿到对应value来通过反射得到对应类的实例。

 

4.设置表单数据

 

将表单数据设置到ActionForm

5.创建并执行Action

调用RequestProcessorprocessActionCreate来创建Action,创建过程类似于ActionForm。执行execute方法,调用业务逻辑,返回response对象,转发到jsp页面,渲染页面。

 

 

actionForm:一种和actionconfig关联的javabean,在对应的action被调用之前都会自动初始化参数,将经过验证的数据填充自己类对应的属性。

 

优点:

1.struts相当于一种隔离,只有经过actionform的数据才能被后面的action调用。多少进行了一些隔离和过滤。

2.http请求和action之间建立桥梁,也算是一种针对业务的分层和解耦吧。针对表单数据的单独处理。

缺点:

 

1.当只有一个或几个actionform时,这种解决方案当然解决并应对问题。而后面出现几百个actionform时这种针对每个请求来整合数据的方式就影响了效率,不单单在编写时候容易出问题,也不利于后面的维护。所以后面的struts1.x都针对这个问题出现了dynaactionform的解决方案,将相关的属性配置在xml文件中,这样更改和编写只用来针对config来修改即可。

 

 

后序

 

strutsjspmodel之间相当于桥梁的作用。一个功能强劲、性能更加优越的控制和转发数据中心,其实还是一个以MVC为核心的控制器。所以有他的一些既定的标准,如:需要指定的超链接格式(*.do*.action)才能请求到ActionServlet中。struts会自动创建、组装、校验和最后处理 Action对象所对应的ActionForm。 这样Action 就可以直接从 ActionForm bean 取得它需要的数据以及渲染到最后的jsp中。

struts 1.x 原理

原文:http://blog.csdn.net/cfl20121314/article/details/39972119

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!