转载网址:http://blog.sina.com.cn/s/blog_683278bc0101236z.html

Ioc将所有的对象之间的关系转移到了xml配置文件中来。 在TopLogic中声明存储SecondLogic的属性

public class TopLogic{

private SecondLogic logic ;

public void setSecondLogic(SecondLogic logic) {
       this.logic = logic;
    }

public TopLogic() {

}

public topMethod() {

loggic.someMethod();

}

}

声明变量之间的关系:

<beans>
    <bean id="secondLogic" class="com.jpleasure.teamware.logic.SecondLogic">
       <property name="XXX" value = "11111"/>
       <property name="YYY" value = "22222"/>
    </bean>
    <bean id="topLogic" class="com.jpleasure.teamware.logic.TopLogic">
       <property name="secondLogic" ref = "secondLogic"/>
    </bean>
</beans>

当我们从Spring IOC容器中取得topLogic的时候,其中的secondLogic属性自动的通过
配置文件的配置得到了初始化。

1.为什么Strut2需要使用SpringFramework
在Struts2中Action是我们扩展的点,我们使用Action处理用户提交的请求,向用户展现数据。
为了更好的组织代码的结构,我们一般情况下使用三层的构架:
Action → Logic → Dao 这样如果我们手动的管理这些对象之间的关系,以方便非常的繁琐,另外也很不利于管理 变更,所以我们更倾向于使用Spring等类似的IOC框架类管理。
2.如何将Springframework和Struts2结合起来 回想第一章,我们指导在Struts2中每一个对象都是靠ObjectFactory创建的,而Springframework
就是用来管理对象创佳的,我们只需要将ObjectFactory的对象创建方法改为Spring即可。

1)在struts.properties或者struts.xml文件中将objectfactory的属性设置为spring方式:
    xml方式:
    <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
    properties方式:
    struts.objectFactory=org.apache.struts2.spring.StrutsSpringObjectFactory
2)当然还需要将需要的Jar文件放在WEB-INF/lib目录下
    这些文件包括:
    struts2-spring-plugin-2.0.9.jar
    spring.jar(为了省事,包含了所有的spring模块,实际项目中可以考虑使用具体的模块)
3)剩余的就是Springframework的配置了
    第一,告诉Spring,对象间关系的配置在那里存放
    需要在web.xml文件中添加如下内容(注意顺序):
    这个Listener在应用程序启动的时候启动,用来读取配置文件。
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

这个参数配置了配置文件的路径,说明我们可以在classpath或者WEB-INF目录下
    防止名字满足applicationContext-*.xml格式你的文件。
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml
        </param-value>
    </context-param>

4)如何让Struts2的Action和Springframework的bean管理起来?
    Struts2会根据struts.xml中配置的class名字在springframeowrk中找id相同的bean,如果找不到
    就按照普通的方式实例化Action类。
    例如:
    struts-todo.xml
        <action name="forward" method="forward"
            class="todo">
            <result name="insert">/todo/insert.jsp</result>
            <result name="update">/todo/insert.jsp</result>
            <result name="delete">/todo/insert.jsp</result>
        </action>
    applicationContext-todo.xml
        <bean id="todo" class="com.jpleasure.teamware.action.TodoAction"
            singleton="false">
        <property name="todoLogic" ref="todoLogic"></property>
        </bean>
    则class=“todo”的Action会使用com.jpleasure.teamware.action.TodoAction。

基本程序结构:
│  .classpath
│  .project
├─src
│  │  applicationContext-todo.xml
│  │  struts-todo.xml
│  │  struts.properties
│  │  struts.xml
│  │  teamware.properties
│  │ 
│  └─com
│      └─jpleasure
│          └─teamware
│              ├─action
│              ├─dao
│              ├─fw
│              ├─logic
│              ├─util
│              └─vo
└─WebContent
    │  Index.html
    │  Index.jsp
    │ 
    ├─META-INF
    │      MANIFEST.MF
    │     
    ├─todo
    │      list.jsp
    │     
    └─WEB-INF
        │  web.xml
        │ 
        └─lib
                commons-logging-1.0.4.jar
                freemarker-2.3.8.jar
                ognl-2.6.11.jar
                spring.jar
                struts2-core-2.0.9.jar
                struts2-spring-plugin-2.0.9.jar
                xwork-2.0.4.jar

转载:struts2和spring的结合原理(精品)的更多相关文章

  1. Struts2、Spring、Hibernate 高效开发的最佳实践(转载)

    Struts2.Spring.Hibernate 高效开发的最佳实践 Struts2.Spring.Hibernate(SSH)是最常用的 Java EE Web 组件层的开发技术搭配,网络中和许多 ...

  2. 搭建SSH框架整合Struts2和Spring时,使用@Autowired注解无法自动注入

    © 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述: 搭建SSH框架,在进行Struts2和Spring整合时,使用Spring的@Autowired自动注入失败,运行报错java.lan ...

  3. Struts2 整合Spring(Maven,注解版)

    这两天正在试验Struts2与Spring框架的整合,和他们各自的“注解”.今天就总结一下这两个框架怎么用注解进行整合. 一,加入两者的依赖包,除了两者的必要依赖外,还需要导入struts2-spri ...

  4. 【Spring】Spring框架之Struts2和Spring的优点

    Java Web开发使用Structs2和Spring框架的好处 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术 ...

  5. 基于struts2、spring的应用闲置一段时间后报空指针错(转)

    在做struts2.spring网站时,在系统闲置一段时间后,访问页面会出错,第二次再访问就正常了.后来查了后台日志,发现是数据库连接关闭了,导致页面访问出错.页面上报空指针错误,错误没有保留,日志中 ...

  6. 二十六:Struts2 和 spring整合

    二十六:Struts2 和 spring整合 将项目名称为day29_02_struts2Spring下的scr目录下的Struts.xml文件拷贝到新项目的scr目录下 在新项目的WebRoot-- ...

  7. web项目中加入struts2、spring的支持,并整合两者

    Web项目中加入struts2 的支持 在lib下加入strut2的jar包 2. 在web.xml中添加配置 <filter> <filter-name>struts2< ...

  8. 第一次做的struts2与spring整合

    参考:http://www.cnblogs.com/S-E-P/archive/2012/01/18/2325253.html 这篇文章说的关键就是“除了导入Struts2和Spring的核心库之外, ...

  9. struts2+hibernate-jpa+Spring+maven 整合(1)

    1.0.0 struts2 与 spring 的整合. 1.1.0 新建maven工程 , 编写pom.xml ,这里只需要简单的添加 一个组件就够了: 在myeclipse 生成的pom.xml 添 ...

随机推荐

  1. JSP标准库标签 ———C标签

    一.C标签    一] <c:out value="..." default="..." escapeXml="true">   ...

  2. [LeetCode 119] - 杨辉三角形II(Pascal's Triangle II)

    问题 给出一个索引k,返回杨辉三角形的第k行. 例如,给出k = 3,返回[1, 3, 3, 1] 注意: 你可以优化你的算法使之只使用O(k)的额外空间吗? 初始思路 首先来复习复习杨辉三角形的性质 ...

  3. Android SDK下载和更新失败的解决方法!!!

    Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml. 据说dl-ssl.google.c ...

  4. POJ_3009——冰球,IDS迭代加深搜索

    Description On Planet MM-21, after their Olympic games this year, curling is getting popular. But th ...

  5. 探究css !important的应用之道

    定义及语法: !important是CSS1就定义的语法,作用是提高指定样式规则的应用优先权. 语法格式:{ cssRule !important },即将!important写在定义的最后面, 例如 ...

  6. 类型转换操作符static_cast、const_cast、dynamic_cast、reinterpret_cast

    一.static_cast 对于类型转换,我们常常这么做: (type) expression 引进了static_cast类型转换操作符后,我们只需这样做: static_cast<type& ...

  7. Java基础知识强化66:基本类型包装类之JDK5新特性自动装箱和拆箱

    1. JDK1.5以后,简化了定义方式. (1)Integer  x = new  Integer(4):可以直接写成如下:         Integer  x = 4 ://自动装箱,通过valu ...

  8. ansible 学习与实践

    title: ansible 学习与实践 date: 2016-05-06 16:17:28 tags: --- ansible 学习与实践 一 介绍 ansible是新出现的运维工具是基于Pytho ...

  9. 1.引入必要的文件 2.加载 UI 组件的方式 4.Parser 解析器

    //引入 jQuery 核心库,这里采用的是 2.0 <scripttype="text/javascript"src="easyui/jquery.min.js& ...

  10. OD: Big_Endian vs Little_Endian

    经调试,Windows 下为 Little_Endian,OD 中堆栈数据区的 (dword)0xAABB0102,0x02 存储在低地址,0x01 存储在高地址. 内容来自:http://blog. ...