SSH总结

一:SSH

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

Struts是一个表示层的框架,主要作用是界面的展示,接收请求,分发请求。在MVC框架中,Struts属于VC层次,主要负责界面,负责MVC关系的分发。沿用(View:JSP,HTTP,Form,Tag,Resourse;Controller:ActionServlet,struts-config.xml, Action)

Hibernate是一个持久层框架,它只负责与关系数据库的操作,实现了以面向对象的思想去和数据库打交道。

Spring是一个整合的框架,能够很好的结合表示层与持久层。依赖注入的思想实现让我们的编程变的更加灵活和方便后期维护管理。

问题一:Web分层架构中业务层为什么选择Spring?

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

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

答:1、选择发展成熟的技术:经过了项目实践证实可行性良好、文档完善、技术一直处于可持续发展更新。

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-inclassName="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">
          <propertyname="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">
           <propertyname="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的劣势:

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

你可能感兴趣的:(ssh)