struts2和spring的整合,关键点在于struts2中的action要纳入spring容器的管理中成为一个bean。 
可以在struts2中配置: 
<struts> 
    <constant name="struts.objectFactory" value="spring" /> 
</struts> 
同时action的配置class='beanID',访问该Action时,会通过class对应值去spring中寻找相同id值的bean。 
也可以复制struts2-spring-plugin-x-x-x.jar到WEB-INF/lib目录下。 
在struts2-spring-plugin-x-x-x.jar中有一个struts-plugin.xml配置文件,该配置文件配置内容: 
<struts> 
    <bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" /> 
    <!--  Make the Spring object factory the automatic default --> 
    <constant name="struts.objectFactory" value="spring" /> 
    <constant name="struts.class.reloading.watchList" value="" /> 
    <constant name="struts.class.reloading.acceptClasses" value="" /> 
    <constant name="struts.class.reloading.reloadConfig" value="false" /> 
 
    <package name="spring-default"> 
        <interceptors> 
            <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/> 
            <interceptor name="sessionAutowiring" class="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor"/> 
        </interceptors> 
    </package>    
</struts> 
可以看出该spring插件的作用就是关联struts action和spring bean,在struts中就不必再配置 <constant name="struts.objectFactory" value="spring" />了。 
 
1,action的class值应等于spring中的bean id值,实现关联,action由spring创建。 
2,若查不到,则由该spring插件根据class的值创建action,并把该action赋给spring托管,在这种情况下action的创建不是由struts2完成,而是由插件完成,并且插件拥有把action纳入spring容器管理的功能,此时spring配置文件中可以不必配置action的bean了。 
 
两种方式都使得action成为了spring中的一个bean实例。 
 
所以,class既可以为beanId,也可以为类路径,当寻找到对应bean时可以直接作为bean访问,若寻找不到,则会由插件根据class类路径负责创建action实例并送给spring成为其管理的一个bean。
 
原文:http://blog.sina.com.cn/s/blog_4e345ce70101bszf.html

实现Spring管理struts的Action的更多相关文章

  1. Spring整合Struts的两种方式介绍

    1 使用Spring托管Struts Action 该种方式就是将Struts Action也视为一种Bean交给Spring来进行托管,使用时Struts的配置文件中配置的Action的classs ...

  2. Struts2中Action由自己与由Spring管理的区别

    struts2单独使用时action由struts2自己负责创建:与spring集成时,action实例由spring负责创建. 这导致在两种情况下struts.xml配置文件的略微差异.   假如: ...

  3. ssh整合随笔(注解方式,Spring 管理action)

    Web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...

  4. 关于Spring的Controller及Struts的Action的多线程的注意

    struts是线程安全,并不是指多线程,而是指单态,当多个用户访问一个请求的时候,服务器内存中只有一个与之对应的action类对象,execute方法加上了同步关键字,如果你在action里加上一个全 ...

  5. spring 整合 struts

    struts配置 objectFactory 在struts.xml添加,用spring工厂管理action对象 <constant name="struts.objectFactor ...

  6. 用spring+hibernate+struts 项目记录以及常用的用法进等

    一.hibernate1. -----BaseDao------ // 容器注入 private SessionFactory sessionFactory; public void setSessi ...

  7. spring整合struts

    整合目标:使用spring的bean管理struts action service. 整合步骤: 一.加入spring 1.加入spring jar包 2.配置web.xml文件 <contex ...

  8. SSH开发实践part4:Spring整合Struts

    1 好了,前面spring与hibernate的整合开发我们基本上讲完了,现在要开始服务层的开发,也就是处理事务的action,在这里我们需要引入spring与struts的整合.也就是将action ...

  9. Spring与Struts整合

    Spring框架是一个非常优秀的轻量级Java EE容器,Spring框架是整个轻量级Java EE框架的核心.大部分的Java EE应用,都会考虑使用Spring容器管理应用中的组件,从而保证各组件 ...

随机推荐

  1. 调试日志——基于stm32的智能声光报警器(三)

    智能声光报警器基本功能调试完成. 1.通过拨码开关来设置LED闪烁的频率. 2.关门时喇叭不想,灯熄灭. 3.旁路模式时,灯处于闪烁状态,此时关门灯扔闪烁. 关于此次代码我觉得还是有可以优化的地方,电 ...

  2. 编写Makefile规则

    一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 ...

  3. 01-Python简介

    人生苦短,我用 Python —— Life is short, you need Python 目标 Python 的起源 Python 解释器 是用 C 语言实现的,并能够调用 C 语言的库文件. ...

  4. 从零开始搭建vue移动端项目到上线的步骤

    初始化项目 1.在安装了node.js的前提下,使用以下命令 npm install --g vue-cli 2.在将要构建项目的目录下 vue init webpack myproject(项目目录 ...

  5. Go学习笔记02

    前言 上篇内容,介绍了如何在不同的系统上安装 Go 开发环境和部分参数的配置,也简单介绍了 package 的概念.导入方式和我对包的初始化过程的理解,关于初始化顺序的理解,可能有错误,后期会有修改, ...

  6. Oracle入门第三天(下)——子查询

    一.子查询 1.子查询语法 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table) 示例: ...

  7. 20155223 2006-2007-2 《Java程序设计》第4周学习总结

    20155223 2006-2007-2 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 Java的继承方法与继承类相当于程序间的数值调用,当然还有程序间函数的调动使用. 继 ...

  8. vim 中文乱码问题

    编辑~/.vimrc文件,加上如下几行: set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936   set termencoding=utf ...

  9. mfc通过MapWinGIS控件读取shp文件(不通过#import实现)

    1.首先注册MapWinGIS ActiveX组件, 引入MapWinGIS.ocx产生的MapWinGIS_i.h和MapWinGIS_i.c文件,利用CoCreateInstance函数来调用 演 ...

  10. python中快速获取本地时区当天0点时间戳的一种方法

    如下所示,看了网上的几种方法,这种方法算是代码量比较小的,同时可以保证求的是本地时区的0点时间戳,返回的是浮点数,需要的话自己转一下int In [1]: import time In [2]: fr ...