SSH框架是现在非常流行的框架之一,本文接下来主要来对Spring和Struts的集成进行展示.

集成原理:在Action中取得BeanFactory,通过BeanFactory取得业务逻辑对象.

集成框架图如下:

1 spring 和struts依赖包配置.

*struts

--拷贝struts相关java包和jstl.

--在web.xml中配置ActionServlet.

--提供struts-config.xml核心配置文件.

--提供struts国际化资源文件,最好提供默认国际化文件.

*spring

--拷贝spring相关java包

*SPRING_HOME/dist/spring.jar

*SPRING_HOME/lib/log4j/log4j-1.2.14.jar

*SPRING_HOME/lib/jakarta-commons/commons-logging.jar

*SPRING_HOME/lib/aspectj/aspectjrt.jar

*SPRING_HOME/lib/aspectj/aspectjweaver.jar

--提供spring配置文件.

2 在web.xml文件中配置ContextLoaderListener,让Web Server启动的时候将BeanFactory放在ServletContext中

代码如下:

  1. <!-- 找到文件名 -->
  2. <context-param>
  3. <!-- 此处的名字是固定死的,在ContextLoader里中的一个常量 -->
  4. <param-name>contextConfigLocation</param-name>
  5. <param-value>classpath:applicationContext-*.xml</param-value>
  6. </context-param>
  7. <!-- 设置Listener,一次性创建BeanFactory -->
  8. <listener>
  9. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  10. </listener>

3  在Action中采用WebApplicationContextUtil.getRequiredWebApplicationContext()从ServletContext中取得BeanFactory

  1. //从配置文件中的监听器中获取SessionFactory,此种方法不用每次频繁的创建SessionFactory
  2. BeanFactory factory=WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
  3. UserManager userManager = (UserManager)factory.getBean("userManager");
  4. userManager.login(username, password);

4
 通过BeanFactory从IOC容器中取得业务逻辑对象.

此集成方案的不足:WEB层中知道Spring的相关内容,因为需要去主动的查找对象:BeanFactory.可以通过依赖注入的方式解决此问题.方案二便是通过依赖注入的方式来进行.

Spring+Struts集成(方案一)的更多相关文章

  1. Spring+Struts集成(第二种方案)

    在上一篇文章中我们了解到了第一种Spring跟Struts集成的方案,但此集成方案的不足是WEB层中知道Spring的相关内容,因为需要去主动的查找对象:BeanFactory.方案二便是通过依赖注入 ...

  2. 【Swagger】可能是目前最好的 Spring Boot 集成 swagger 的方案

    [Swagger]可能是目前最好的Spring Boot集成 swagger 的方案 ![](https://img2018.cnblogs.com/blog/746311/201909/746311 ...

  3. (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案二

    http://blog.csdn.net/yerenyuan_pku/article/details/52894958 前面我们已经集成了Spring4.2.5+Hibernate4.3.11+Str ...

  4. (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一

    http://blog.csdn.net/yerenyuan_pku/article/details/52888808 前面我们已经集成了Spring4.2.5+Hibernate4.3.11这两个框 ...

  5. Struts2+Spring+Ibatis集成合并

    上一篇博客讲述了Struts2+Spring的集成合并,主要是利用了一个中间jar包,这篇博客在加上Ibatis持久层框架,三个框架进行合并.其中Struts2和Spring部分和前边的一样,主要是讲 ...

  6. Spring Boot系列教程十:Spring boot集成Sentinel Redis

    前言 上一篇文章介绍了spring boot集成单点的redis,然而实际生产环境使用单点的redis风险很高,一旦宕机整个服务将无法使用,这篇文章介绍如何使用基于sentinel的redis高可用方 ...

  7. spring mvc集成freemarker使用

    freemarker作为视图技术出现的比velocity早,想当年struts风靡一时,freemarker作为视图层也风光了一把.但现在velocity作为后起之秀的轻量级模板引擎,更容易得到青睐. ...

  8. Spring Boot系列教程十三:Spring boot集成Sentinel Redis

    前言 上一篇文章介绍了spring boot集成单点的redis,然而实际生产环境使用单点的redis风险很高,一旦宕机整个服务将无法使用,这篇文章介绍如何使用基于sentinel的redis高可用方 ...

  9. MyBatis初级实战之一:Spring Boot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. android抓日志

    1. adb logcat -c 清楚以前的日志 adb logcat -s 过滤 adb logcat -s *:E adb logcat -v 指定输出的格式 adb logcat -v brie ...

  2. css3-多列显示文字

    -------------------------- <style>            #demo{                margin: 20px auto;         ...

  3. Hunters

    Hunters Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submi ...

  4. .NET面试题目一

    简单介绍下ADO.NET和ADO主要有什么改进? 答:ADO以Recordset存储,而ADO.NET则以DataSet表示,ADO.NET提供了数据集和数据适配器,有利于实现分布式处理,降低了对数据 ...

  5. unlinking

    When a file name is deleted from the directory tree, the file name's connection to the inode number ...

  6. javascript克隆一个对象

    /* * 克隆一个对象 */ com.ty.repairtech.JsonOperation.clone = function(obj) { // Handle the 3 simple types, ...

  7. Qt 学习之路 2(84):Repeater

    前面的章节我 们介绍过模型视图.这是一种数据和显示相分离的技术,在 Qt 中有着非常重要的地位.在 QtQuick 中,数据和显示的分离同样也是利用这种"模型-视图"技术实现的.对 ...

  8. libevent在windows下使用步骤详解

    一 环境 官方下载地址:http://libevent.org/版本:libevent-2.0.22-stable 二 编译静态库 1 解压把上面下载到libevent-2.0.22-stable.t ...

  9. VB webbrowser 控件的应用(跨域 内嵌网页元素的访问)

    自动登录财付通,难点在于会出现验证码,并且验证码页是在iframe元素下的,出于各种安全考虑,webbrowser控件不提供这种访问机制!当然,第一想到的是将这个网页拿出来,可是输入完毕验证码后,点击 ...

  10. 导出Excel数据

    先要导入jxl架包,其中的abc.xls为测试Excel,具体代码如下,仅供参考: import java.io.File; import java.io.FileInputStream; impor ...