• Struts2+Spring集成合并


    前边单独总结了Struts2springIbaits框架了,那么怎么结合使用呢?这次先来看一下Sturts2Spring的集成合并。其实挺简单的,就是导入各自的jar包以及连接彼此的jar包,分好彼此的工作就可以了。

     

        好看一下Struts2+Spring的集成方案!

     

              Struts2Spring集成有两种方案,是根据action的创建来划分的!

              方案一,Struts2负责流程,Spring负责对象的创建;ActionStruts2框架负责创建;ServiceSpring框架负责创建。看一下其实现的一个例子的步骤:

     

             1,集成Struts2框架到项目中,搭建Struts2框架环境,这个可以看我们的Struts2()——总体介绍,步骤和那个是一样的。

     

             2,集成Spring框架到项目中,搭建Spring框架环境,这里也可以看一下Spring()——总体介绍。但是这里我想说一下,导入我们的jar包,和拷贝好两个配置文件后,为了是我们项目在加载时就初始化解析applicationContext.xml,并创建相应的各种对象。我们在web.xml中可以添加框架的监听器:

     

    [html] view plain copy
     
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;">  <!-- 用于指定Spring的配置文件路径 -->  
    2.     <context-param>  
    3.         <param-name>contextConfigLocation</param-name>  
    4.         <param-value>classpath:applicationContext.xml</param-value>  
    5.     </context-param>  
    6.    
    7.     <!-- 服务器启动时,通过监听器初始化Spring的配置环境   
    8.         监听器,默认加载文件是:/WEB-INF/applicationContext.xml  
    9.     -->  
    10.     <listener>  
    11.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    12.   
    13. </listener></span>  

     


                3,这样两者的各自环境就算搭建好了,那么如何进行两者的集成合并呢?这里Struts2为我们提供了jar:struts2-spring-plugin-2.1.8.1.jar。我们需要将此jar包也引用到项目中。这样两个框架就可以通过此jar包进行合并集成了。

     

               简单说一下这个jar包的作用吧:插件中提供了新的工厂类,覆盖了Struts2的原工厂类。新工厂类的工作原理:首先根据Action的完整类名,到Spring配置文件中查询bean标签的id是否存在一致的名称。如果有一致的说明,Action对象是由Spring负责创建,并有Spring进行装配组合对象之间的关系。        如果查找不到,会进行特殊的处理操作,再由Strtus2框架进行反射创建Action对象,并采用Strust2框架的自动装配功能来完成ActionService对象的关联。默认是根据name进行查找的,当然我们也可以进行修改,例如改成以type类型进行查找的方式:

     

    <constantname="struts.objectFactory.spring.autoWire"value="type"></constant>

             4,这样环境就算搭建好了,看看我们各个配置文件中的代码吧,重点看注释:

     

                a,web.xml中配置了两个框架的核心配置文件:

    [html] view plain copy
     
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;">  <?xml version="1.0" encoding="UTF-8"?>  
    2.     <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
    3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    4.         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
    5.         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
    6.                
    7.         <!-- 用于指定Spring的配置文件路径 -->  
    8.         <context-param>  
    9.             <param-name>contextConfigLocation</param-name>  
    10.             <param-value>classpath:applicationContext.xml</param-value>  
    11.         </context-param>  
    12.        
    13.         <!-- 服务器启动时,通过监听器初始化Spring的配置环境   
    14.             监听器,默认加载文件是:/WEB-INF/applicationContext.xml  
    15.         -->  
    16.         <listener>  
    17.             <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    18.         </listener>  
    19.            
    20.         <!-- 配置Struts2框架的核心调度器 -->  
    21.         <filter>  
    22.             <filter-name>struts2</filter-name>  
    23.             <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
    24.         </filter>  
    25.         <filter-mapping>  
    26.             <filter-name>struts2</filter-name>  
    27.             <url-pattern>/*</url-pattern>  
    28.         </filter-mapping>  
    29.        
    30.         <!-- 默认主界面 -->  
    31.         <welcome-file-list>  
    32.             <welcome-file>login.jsp</welcome-file>  
    33.         </welcome-file-list>  
    34.     </web-app>  
    35. </span>  

     


                 b,struts2.xml,配置了action类:

     

    [html] view plain copy
     
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;">  <struts>  
    2.         <!-- 指定以name的方式组合action和service的关系 -->  
    3.         <constant name="struts.objectFactory.spring.autoWire" value="name"></constant>  
    4.           
    5.         <!-- 设置action的信息 -->  
    6.         <package name="example" namespace="/user" extends="struts-default">  
    7.             <action name="login" class="com.ljh.action.LoginAction" method="login">  
    8.                 <result name="success" type="redirect">/success.jsp</result>  
    9.                 <result name="login" type="redirect">/login.jsp</result>  
    10.             </action>     
    11.         </package>          
    12.     </struts>  
    13. </span>  

               c,applicationContext.xml中配置了service类:
    [html] view plain copy
     
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;">  <!-- service类的基本信息 -->  
    2.   
    3. <bean id="userService" class="com.ljh.service.UserService" ></bean></span>  

               对于actionservicejsp的代码较简单登录的功能,很容易实现的。其实看完了,感觉这种集成合并的方式Struts2Spring都是各自干各自的,集成的不是很好。因为Sping是容器么,对对象的管理更为专业,Struts2对流程的控制更加专业。所以这种方式很少使用,不推荐。看我们的第二种集成方式,也是常用的集成方式。

              方案二,Struts2负责流程,Spring负责对象的创建,ActionService都由Spring框架负责创建。这是常用的集成合并方案。步骤和上边的基本上一样,都是导入响应的jar包,拷入响应的配置文件,web.xml文件的写法也一样。主要看一下两个框架核心配置文件的和第一种方案的写法区别:

     

             1struts2.xml的写法:

    [html] view plain copy
     
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;"><struts>  
    2.          <!--写法基本一样但是注意class的值,这里没有写真正路径,为了是在Spring中根据此值进行查找-->  
    3.     <package name="example" namespace="/user" extends="struts-default">  
    4.         <action name="login" class="loginAction" method="login">  
    5.             <result name="success" type="redirect">/success.jsp</result>  
    6.             <result name="login" type="redirect">/login.jsp</result>  
    7.         </action>  
    8.     </package>          
    9. </struts>  
    10. </span>  

              2applicatinContext.xml的写法:

     

    [html] view plain copy
     
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;">  <!--这里的id对应上边的class,这里的class才是真正的路径,采用了Spring的根据name自动装配的功能,当然也可以我们手动指定,这里需要注意的是,action需要多例创建,而Spring默认为单例创建的,所以需要制定scope="prototype"-->  
    2.     <bean id="loginAction" class="com.ljh.action.LoginAction" autowire="byName" scope="prototype"></bean>  
    3.    
    4.     <bean id="userService" class="com.ljh.service.UserService" ></bean>  
    5. </span>  

     


              这样就实现了二者的合并了,主要是将action交给Spring创建,并组合彼此的关系了,是彼此框架只干自己的事,分工明确,提高效率。

     

            综上,为Struts2Spring的简单合并总结,例子较为简单,还需要在实践中体会,灵活应用框架才会是我们的开发变的更为高效,更为简单。通过编程,通过框架仔细琢磨其中的魅力,用心钻研,才会有更大的收获。

     
  • 相关阅读:
    [转]maven插件的开发
    开发建议
    [转]利用maven的surefire插件实现单元测试与集成测试
    sonar-maven-plugin错误2
    20145218张晓涵_网络欺诈技术防范
    20145218张晓涵_信息搜集与漏洞扫描
    20145218张晓涵_Exp5 MSF基础应用
    20145218张晓涵 PC平台逆向破解_advanced
    20145218张晓涵 恶意代码分析
    20145218 免杀原理与实践
  • 原文地址:https://www.cnblogs.com/pegasus827/p/9227253.html
Copyright © 2020-2023  润新知