ssh框架的内部原理说一下 可以吗?????


Struts的原理和优点.

  Struts工作原理

  MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,帆配雀以及让视图层更富于变化。MVC的工作原理,如下图1所示:

  Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继续了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的工作原理,

  视图:主要由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。

  Struts优缺点

  优点:

  1.开源软件,能更深进的了解其内部实现机制。

  2.Taglib标记库,灵活动用,能大大进步开发效率。

  3.页面导航使系统的脉络更加清楚。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种上风体现得更加明显。

  4. 提供Exception处理机制 .

  5. 数据库链接池治理

  6. Struts 的Action必须是thread-safe方式,它仅仅答应一个实例往处理所有的请求。所以action用到的所有的资源都必须同一同步,这个就引起了线程安全的题目。

  缺点:

  Taglib是Struts的一大上风,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。

  Struts将MVC的Controller一分为三,在获得结构更加清楚的同时,也增加了系统的复杂度。

  ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成)

  Spring的原理和优点

  Spring真正的精华是它的loc模式实现的BeanFactory和AOP,它自己在这个基础上延伸的功能有些画蛇添足。

  Spring

  它是一个开源的项目,而且目前非常活跃;它基于IoC(Inversion of Control,反向控卖咐制)和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,由于它模块化的很好,答应你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了同一的 接口,采用IoC使得可以很轻易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等

  优点

  a. Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。假如你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的题目。

  b. Spring能消除在很多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很大的题目,它降低了系统的可测试性和面向对象的程度。

  c. 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个魔法般的属性项或系统属性感到不解,为此不得不往读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性。Inversion of Control的使用(在下面讨论)帮助完成了这种简化。

  d. 通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。

  e. Spring被设计为让使用它创建的应用尽可能少的依靠于他的APIs。在Spring应用中的大多数业务对象没有依靠于Spring。

  f. 使用Spring构建的应用程序易于单元测试。

  g. Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。

  h. Spring帮助你解决很多题目而无需使用EJB。Spring能提供一种EJB的替换物,它们适用于很多web应用。例如,Spring能使用AOP提供声明性事务治理而不通过EJB容器,假如你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。

  i. Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R mapping产品(如Hibernate)。

  Spring确实使你能通过最简单可行的解决办法来解决你的题目。而这是有有很大价值的。

  缺点:使用人数未几、jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器 Hibernate的原理和优点。

  Hibernate使用了J2EE架构中的如下技术:JDBC、JTA、JNDI。深圳桑拿其中JDBC是一个支持关系数据库操纵的一个基础层;它与JNDI和JTA一起结合,使得Hibernate可以方便地集成到J2EE应用服务器中往。 在这里,我们不会具体地往讨论Hibernate API接口中的所有方法,我们只扼要讲一下每个主要接口的功能,假如你想了解得更多的话,你可以在Hibernate的源码包中的net.sf.hibernate子包中往查看这些接口的源代码。下