spring整合struts2

来源:互联网 发布:淘宝隐藏券怎么找 编辑:程序博客网 时间:2024/05/17 04:54

Spring框架整合Struts2步骤
-----------------------------------------------
Spring如何与Struts2整合

第一步:

 1.将Action纳入到Spring容器中

  可以采用扫描注解方式也可以采用XML的<bean>定义。

第二步:  

 2.Action使用Service或DAO组件时,采用注入方式,将Service和DAO给Action注入

第三步:
 
 3.引入一个struts2-spring-plugin-2.1.8.jar开发包(已经引入Spring开发包和Struts2开发包)

   ( 当发生action请求时,
  StrutsFilter控制器会通过该开发包去Spring容器寻找Action对象,
  进行请求处理 )


   ===struts2-spring-plugin-2.1.8.jar原理=====
   该组件提供了一个StrutsSpringObjectFactory,
   当引入该jar包后,
   会利用StrutsSpringObjectFactory替代原Struts框架中的ObjectFactory负责生成Action对象。
   StrutsSpringObjectFactory可以访问Spring容器。
   该Factory会按struts.xml中<action>配置的class属性值作为原则寻找Spring容器中的Bean对象。

   //a.利用class属性当做Bean组件的id值去Spring容器寻找

第四步:
  
 4-1)修改struts.xml中所有<action>的class属性值,修改成容器中对应Action组件的id值

   //b.利用class属性采用反射机制创建普通的action,之后将Spring容器Bean对象给action注入。
 
 4-2)不需要修改原有的struts.xml配置,(推荐使用这种配置)

  需要修改Action组件代码,添加setter方法,
  以setter方式接收注入的DAO或Service.或者属性注入也可以
  
  例如要注入容器中的costDAO,
  就需要在Action中追加setCostDAO(){}
 
第五步:
 
 5.在web.xml中定义ContextLoaderListener,用于在服务器启动时,实例化Spring容器。

-----------------------------------
web.xml中的配置例子:
-----------------------------------
<filter>
    <filter-name>struts2filter</filter-name>
 <filter-class>
  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
 </filter-class>
</filter>

<filter-mapping>
 <filter-name>struts2filter</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>

/////////////////*/

<!-- 指定要加载的Spring配置文件 -->

<context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:applicationContext.xml</param-value>
</context-param>

<!-- 用于实例化Spring容器
默认加载  /WEB-INF/applicationContext.xml
-->

<listener>
 <listener-class>
  org.springframework.web.context.ContextLoaderListener
 </listener-class>
</listener>

------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击