• SSH整合


    Struts(表示层)+Spring(业务层)+Hibernate(持久层)

    Struts:

    Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。

    在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action)

    Hibernate:

    Hibernate是一个持久层框架,它只负责与关系数据库的操作。

    Spring:

    Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。

    ① Web分层架构中业务层为什么都选择Spring?

    Service层需要处理业务逻辑和交叉业务逻辑,处理事务,日志,安全等,而这些与Spring的IoC,AOP等不谋而合。

    ② Web分层架构中,对于各层技术的采用应该遵循一个怎样的标准?

    1、选择发展成熟的技术:

      A、经过了项目实践证实可行性良好

      B、文档完善

      C、技术一直处于可持续发展更新

    2、Web应用中对于技术的选择有赖于开发人员的技术掌握情况

    二、Spring与Struts整合

      前提:

        必须在Web应用启动时,创建Spring的ApplicationContext实例

      方式:

        1、采用ContextLoaderListener来创建ApplicationContext:

        <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>

          /WEB-INF/spring-config/applicationContext.xml

        </param-value>

        </context-param>

        <listener>

        <listener-class>

          org.springframework.web.context.ContextLoaderListener

        </listener-class>

        </listener>

        2、采用ContextLoaderPlugIn来创建ApplicationContext

        <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

      <set-property  property="contextConfigLocation" value="/WEB-INF/config/sale.xml" />

        </plug-in>

      或者:

        通过listener装载spring应用上下文

       

    方式一:通过Spring的ActionSupport类

      ActionSupport类:

      知道ApplicationContext的获得方式。

      步骤:

      1、Action直接继承ActionSupport

      2、使用ApplicationContext ctx = getWebApplicationContext();取得Spring上下文

      3、取得相应Bean

      注意:有可能需要替换commons-attributes-compiler.jar包。

      优点:

        简单

      缺点:

        耦合高

        违反IOC

        无法使用多方法的Action

     

    方式二:通过Spring的DelegatingActionProxy类

      步骤:

      1、Action中,使用IOC获得服务

      2、配置struts-config.xml

        <action      path="/somepath" type="org.springframework.web.struts.DelegatingActionProxy"/>

      3、在Spring配置文件中

        <bean name="/somepath" class="SomeAction">

        <property name="service"><ref bean=""/>

        </bean>

        注意,要用bean name命名。

        /somepath:Action的path

      优点:

      不使用Spring api编写 Action

      利用了IOC装配。

      可以利用容器的scope="prototype"来保证每一个请求有一个单独的Action来处理,

      避免struts中Action的线程安全问题。

      缺点:

      struts配置文件中,所有path都映射到同一个代理类

     

    方式三:通过Spring的DelegatingRequestProcessor类

      步骤:

      1、Action中,使用IOC获得服务

      2、配置struts-config.xml

         <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />

      3、在Spring配置文件中

        <bean name="/somepath" class="SomeAction">

        <property name="service"><ref bean=""/>

        </bean>

    小结:

      Spring与Struts整合方式只有两种:

      (1)由Spring容器来管理Action(方式二,方式三)

      (2)Action处于容器之外(方式一)

      注意:

        中文问题:

        设置过滤器,设置页面编码,数据库编码

    三、关于Spring与EJB

      1、Spring与EJB3.0的对比

      Spring与EJB3.0之间的关系是竞争关系。

      ① Spring是一个开源的框架,而EJB3.0是一个标准(标准意味着将得到广泛的支持以及良好的兼容性),并且,采用EJB3.0,项目的后期维护得到了保证。

      ② Spring是一个轻量级框架,EJB3.0是一个重量级框架(完整的容器,包含所有的服务)。

      ③ Spring的IoC,AOP集成了大量的开源框架,可扩展性良好。EJB3.0的可扩展性则完全依赖于新的容器。

      ④  Spring对事务支持不如EJB3.0成熟,Spring对集群的兼容也不够。

    ⑤ Spring与EJB3.0都是一个企业级开发框架,都支持声明式事务。

     

    2、Spring的优势与劣势

    Spring的优势:

    ① 简化了企业级开发(对企业级服务进行了进一步的封装)

    ② 采用Spring框架的程序意味着良好的分层结构设计,并保证是面向接口编程的

    ③ 用IoC,AOP容器,模块是可配置的,松耦合的,方便了后期维护

    Spring的劣势:

    ① 配置复杂,不方便维护

    ② 容器大量使用反射等机制装配对象,影响性能,对于高并发的大型应用无能为力。

  • 相关阅读:
    进程控制(二)
    进程控制(一)
    python的signal
    python的logging模块
    python守护进程
    C语言关键字、标识符和注释
    青春代码
    冒泡排序 js
    数组
    js 运算符
  • 原文地址:https://www.cnblogs.com/qq739178184/p/5083522.html
Copyright © 2020-2023  润新知