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. jsp之用户自定义标签

    创建一个类,引入外部jsp-api.jar包(在tomcat 下lib包里有),这个类继承SimpleTagSupport 重写doTag()方法. jspprojec包下的helloTag类: pu ...

  2. HDU 5804 Price List

    只需和总和比较即可. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> ...

  3. python2.7学习记录之二

    一.高级特性 1.切片取前3个元素用L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3.如果第一个索引是0可省略.前10个数 每两个取一个L[:10:2],所有数 每5个取一个L[::5 ...

  4. 关于getchar()的知识

    char* s1 = "123",字符串"123"这段内存是只读的,就是说其内容不能改变///char *s 这个是指申请一个地址空间 记录一个地址 #incl ...

  5. AJAX程序实验

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 < ...

  6. think in uml 1

    对象,在过程的基础上,是一个抽象级别的提升,可以构建更大更复杂的系统 数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能.数据在系统内部 ...

  7. 倒计时demo

    #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (strong,nonatom ...

  8. Object.setPrototypeOf 方法的使用

    将一个指定的对象的原型设置为另一个对象或者null(既对象的[[Prototype]]内部属性). 语法 Object.setPrototypeOf(obj, prototype) 参数 obj 将被 ...

  9. phpmyadmin导出数据中文乱码问题

    phpMyAdmin版本是2.9.1.1 用phpMyAdmin备份数据库,导出来后,在本地用sqlyog还原的时候,出现如下错误:Error occured at:2009-03-03 10:09: ...

  10. RatingBar

    题记:保持旺盛的求知欲.希望会一直这样. 说明:来了新控件了.就是经常用的打分的那种东东. 说明:1.看上图分别是系统自带的和自己做的.rating就是设置小星星的数目. 2.用系统自带的必须是Wra ...