欢迎来到天天文库
浏览记录
ID:22780189
大小:262.01 KB
页数:22页
时间:2018-10-31
《大框架的底层机制及原理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Struts1的工作原理Struts1工作原理图: 1、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。(面向对象思想)2、发送请求:用户提交表单或通过URL向WEB服务器提交请求,请求的数据用HTTP协议传给web服务器。3、form填充:struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中。4、派发请求:控制器根据配置信
2、息对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给这个Action中的excute()方法。5、处理业务:Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象。服务器通过ActionForward对象进行转发工作。6、返回响应:Action将业务处理的不同结果返回一个目标响应对象给总控制器。7、查找响应:总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面。8、响应用户:目标响应对象将结果传递给资源对象,将结果展现给
3、用户。ssh框架启动流程 系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,利用Hibernate框架对持久层提供支持,业务层用Spring支持。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring完成业务逻辑。系统的基本业务流程是:在表示层中,首先通过JSP页面实现交互界面,负责
4、传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的SpringIoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。 采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,
5、而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。Struts1与struts2有什么不同1.Action类Stuts1要求Action类继承一个抽象基类。Struts1的一个普通问题是使用抽象类编程而不是接口。Struts2Action类可以实现一个Action接口,也可以实现其它接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有
6、execute标识的POJO对象都可以用作Struts2的Action对象。2.线程模式:Struts1nAction是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题。3.Servlet依赖:Struts1Action依赖于ServletAPI,因为当一个Action被调用时,HttpServletResquest和HttpServletResponse被传递给e
7、xecute方法,即Action依赖了容器,测试变得非常麻烦。Struts2Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2Action仍然可以访问初始的request和response。但是,其它的元素减少或者消除了直接访问HttpServletRequset和HttpServletResponse的必要性。4.捕获输入:Struts1使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。
此文档下载收益归作者所有