Struts2+Spring集成合并

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

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

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

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

  

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

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

我们在web.xml中可以添加框架的监听器:

    <!-- 用于指定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>

  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框架的自动装配功能来完成Action和Service对象的关联。默认是根据name进行查找的,当然我们也可以进行修改,例如改成以type类型进行查找的方式:

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

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

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

<span style="font-size:18px;">  <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  

        <!-- 用于指定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>  

        <!-- 配置Struts2框架的核心调度器 -->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>  

        <!-- 默认主界面 -->
        <welcome-file-list>
            <welcome-file>login.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
</span>  

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

<struts>
        <!-- 指定以name的方式组合action和service的关系 -->
        <constant name="struts.objectFactory.spring.autoWire" value="name"></constant>  

        <!-- 设置action的信息 -->
        <package name="example" namespace="/user" extends="struts-default">
            <action name="login" class="com.ljh.action.LoginAction" method="login">
                <result name="success" type="redirect">/success.jsp</result>
                <result name="login" type="redirect">/login.jsp</result>
            </action>
        </package>
    </struts>
</span>  

  c,applicationContext.xml中配置了service类:

<!-- service类的基本信息 -->  

<bean id="userService" class="com.ljh.service.UserService" ></bean>

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

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

  1,struts2.xml的写法:

<struts>
    <!--写法基本一样但是注意class的值,这里没有写真正路径,为了是在Spring中根据此值进行查找-->
    <package name="example" namespace="/user" extends="struts-default">
        <action name="login" class="loginAction" method="login">
            <result name="success" type="redirect">/success.jsp</result>
            <result name="login" type="redirect">/login.jsp</result>
        </action>
    </package>
</struts>  

  2,applicatinContext.xml的写法:

<!--这里的id对应上边的class,这里的class才是真正的路径,采用了Spring的根据name自动装配的功能,当然也可以我们手动指定,这里需要注意的是,action需要多例创建,而Spring默认为单例创建的,所以需要制定scope="prototype"-->
    <bean id="loginAction" class="com.ljh.action.LoginAction" autowire="byName" scope="prototype">  </bean>  

    <bean id="userService" class="com.ljh.service.UserService" >  </bean>

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

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

时间: 2024-10-11 23:01:22

Struts2+Spring集成合并的相关文章

(二十四)Struts2 Spring集成

Spring是当下流行的Web框架,可提供带有许多常见Web任务的简易的集成.那么问题是,当我们有Struts2时,为什么我们需要Spring?因为Spring不仅仅是一个MVC框架,它提供了许多其他在Struts中不可用的好东西.例如:依赖注入可以对任何框架有用.在本章中,我们将通过一个简单的例子来了解如何将Spring和Struts2集成在一起.首先,你需要将以下文件添加到Spring的项目的构建路径.你可以从http://www.springsource.org/download下载并安装

Struts2+Spring+Ibatis集成合并

上一篇博客讲述了Struts2+Spring的集成合并,主要是利用了一个中间jar包,这篇博客在加上Ibatis持久层框架,三个框架进行合并.其中Struts2和Spring部分和前边的一样,主要是讲解Spring和Ibatis之间的合并,这里也涉及到Spring的AOP编程思想,声明式事务的使用. 一,看一下分工吧: Struts2:负责流程控制,主要针对的是从JSP页面到action类这一块的步骤. Spring:负责各个类,对象的创建,包括action,service,dao,数据连接对象

Struts2+Spring+Hibernate 三大框架的合并集成

这次来看看Struts2+Spring+Hibernate三大框架的整合应用,主要是Spring和Hibernate框架的整合,因为前边已经将Strtus2+Spring整合过了基本一样.  首先看一下分工吧: Struts2做的MVC的流程框架,主要完成从客户端访问到选择action的过程,其中过滤器起到了Controller的作用,action属于model,而jsp则是view页面的展示. Spring主要利用Ioc的特长来管理各种对象:action,service,dao,数据访问源,H

基于注解的struts2+spring+hibernate集成

applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.spri

struts2的请求参数url的写法以及相关struts2与Spring集成时的情况

在使用struts2的时候,我们都知道以前的那种以离散的值作为传递的单位,他们的请求url是这么写的: localhost:8080/test/login?username=hello&password=world 以及其对应的action是这么写的 <span style="font-size:24px;">public class LoginAction extends ActionSupport { private String username ; priv

Struts2和Spring集成

Spring是一个流行的Web框架,它提供易于集成与很多常见的网络任务.所以,问题是,为什么我们需要Spring,当我们有Struts2?Spring是超过一个MVC框架 - 它提供了许多其它好用的东西,这是不是在Struts.例如:依赖注入可以是有用的任何框架.在本章中,我们将通过一个简单的例子来看看如何集成Spring和Struts2一起. 首先,需要添加下列文件到项目的构建路径从Spring安装.您可以下载并安装最新版本的Spring框架从 http://www.springsource.

配置struts2+spring,springmvc

Struts2+Spring整合 一.spring负责注入,struts2负责它自己的工作.这样不是很符合spring作为ioc容器的全部功能,不推荐. 二.spring负责全部bean和struts2的action的生成.作为ioc容易的最大共用. 所需要jar包 配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/

SSH---集成Struts2+Spring+Hibernate(一)

SSH---集成Struts2+Spring+Hibernate(一) 本方案让Spring创建Struts2的Action,不让Spring完全管理Struts2的Action,Struts2Action中的依赖对象,默认会根据名称自动装配 1.创建web项目 2.引入Struts2的依赖包,将依赖包拷贝到WEB-INF/lib下 *commons-logging-1.0.4.jar *freemarker-2.3.15.jar *ognl-2.7.3.jar * struts2-core-2

整合struts2+spring+hibernate

 一.准备struts2+spring+hibernate所需要的jar包: 新建web项目并将jar包引入到工程项目中. 二.搭建struts2环境 a.在web项目的web.xml中加入struts2的过滤器,以过滤用户的所有请求,该过滤器将请求交给对应的Action处理 . <filter> <filter-name>Struts2</filter-name> <filter-class> org.apache.struts2.dispatcher