
1、Struts工做原理java
MVC即Model-View-Controller的缩写,是一种经常使用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工做原理,以下图1所示:Struts 是MVC的一种实现,它将 Servlet和JSP 标记(属于 J2EE 规范)用做实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特色,作了相应的变化与扩展。Struts的工做原理。web
视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。数据库
控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。ActionServlet是一个通用的控制组件。这个控制组件提供了处理全部发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动做类(这些动做类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充 Action From(一般称之为FromBean),并传给动做类(一般称之为ActionBean)。动做类实现核心商业逻辑,它能够访问java bean 或调用EJB。最后动做类把控制权传给后续的JSP 文件,后者生成视图。全部这些控制逻辑利用Struts-config.xml文件来配置。设计模式
模型:模型以一个或多个java bean的形式存在。这些bean分为三类:Action Form、Action、JavaBean or EJB。Action Form一般称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。Action一般称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并作出相关的处理,通常是调用Java Bean或EJB等。安全
流程:在Struts中,用户的请求通常以*.do做为请求服务名,全部的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操做,如文件操做,数据库操做等。每个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。单元测试
核心:Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。学习
2、Struts优缺点测试
优势:spa
1.开源软件,能更深刻的了解其内部实现机制。线程
2.Taglib标记库,灵活动用,能大大提升开发效率。
3.页面导航使系统的脉络更加清晰。经过一个配置文件,便可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤为是当另外一批开发者接手这个项目时,这种优点体现得更加明显。
4. 提供Exception处理机制 .
5. 数据库连接池管理
6. Struts 的Action必需是thread-safe方式,它仅仅容许一个实例去处理全部的请求。因此action用到的全部的资源都必需统一同步,这个就引发了线程安全的问题。
缺点:Taglib是Struts的一大优点,但对于初学者而言,却须要一个持续学习的过程,甚至还会打乱你网页编写的习惯,可是,当你习惯了它时,你会以为它真的很棒。Struts将MVC的Controller一分为三,在得到结构更加清晰的同时,也增长了系统的复杂度。ActionForms使用不便、没法进行单元测试(StrutsTestCase只能用于集成)