实现Spring与Struts 2集成
如何实现Spring与Struts 2框架的集成呢?其实非常简单,这是因为Struts 2框架主要是通过插件来实现对其他框架的支持。
Spring框架与Struts 2框架的集成过程非常简单,因为Struts 2框架中已经提供了关于Spring框架的插件。对于Struts 2框架中所有的插件,其实就是一些名称不同的JAR文件,一般以"Struts2-框架名-plugin-版本号"的方式命名。同理,关于Spring框架的插件也不例外。
下载了关于Struts-2.2.3的完整开发包后,就可以在该开发包的lib文件夹下中找到struts2-spring-plugin-2.2.3.jar插件。当对该JAR文件解压后就会发现里面包含了一个名为struts-plugin.xml的XML文件,如图10.25所示。通过修改该文件,可以实现一些特殊功能:定义新包和新的结果类型、覆盖Struts 2框架中的常量、自定义拦截器、改变默认的拦截器的引用和引入扩展点的实现类。
注意:对于struts-plugin.xml和struts.xml配置文件,Struts 2框架首先加载的是struts- plugin.xml配置文件,其次才是struts.xml配置文件。
如何在Spring和Struts 2框架集成的项目中安装关于Sping框架的插件呢?一般分为以下两个步骤。
首先将关于Spring框架的插件复制到项目的classpath下,即先复制插件的JAR文件到项目名称\WebRoot\lib目录下,然后用鼠标右键单击该文件,在弹出的快捷菜单中选择"Build Path>Add to Build Path"命令就会把该文件转移到classpath下,如同10.26所示。
![]() |
图10.25 struts-plugin文件 |
![]() |
图10.26 添加JAR文件 |
接着修改web.xml配置文件,使该项目能够监听Spring框架,没有配置Spring框架时内容如下:
配置Spring框架后的内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- …
- <filter> <!--配置Struts 2过滤器-->
- <filter-name>struts2</filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- </filter-class>
- </filter>
- <filter-mapping> <!--配置Struts 2过滤器映射-->
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
注意:在没有配置Spring框架时,Struts 2中的Action都是在struts.xml中声明的,但是当使用Spring框架后,这些Action对象的实例化过程就会由该框架实现。
- <?xml version="1.0" encoding="UTF-8"?>
- …
- <filter> <!--配置Struts 2过滤器-->
- <filter-name>struts2</filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- </filter-class>
- </filter>
- <filter-mapping> <!--配置Struts 2过滤器映射-->
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <listener> <!--关于Sping框架的监听-->
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- …
- </web-app>