首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

【第十章】集成其它Web框架 之 10.2 集成Struts1.x ——跟小弟我学spring3

2012-06-30 
【第十章】集成其它Web框架 之 10.2 集成Struts1.x ——跟我学spring3先进行通用配置,?【第十章】集成其它Web框

【第十章】集成其它Web框架 之 10.2 集成Struts1.x ——跟我学spring3

先进行通用配置,?【第十章】集成其它Web框架 之 10.1 概述?

10.2? 集成Struts1.x10.2.1? 概述

?????? Struts1.x是最早实现MVC(模型-视图-控制器)模式的Web框架之一,其使用非常广泛,虽然目前已经有Struts2.x等其他Web框架,但仍有很多公司使用Struts1.x框架。

?????? 集成Struts1.x也非常简单,除了通用配置外,有两种方式可以将Struts1.x集成到Spring中:

最简单集成:使用Spring提供的WebApplicationContextUtils工具类中的获取Spring Web容器,然后通过Spring Web容器获取Spring管理的Bean;Struts1.x插件集成:利用Struts1.x中的插件ContextLoaderPlugin来将Struts1.x集成到Spring中。

?

???????接下来让我们首先让我们准备Struts1x所需要的jar包:

1.1、从下载的spring-framework-3.0.5.RELEASE-with-docs.zip中dist目录查找如下jar包,该jar包用于提供集成struts1.x所需要的插件实现等:

org.springframework.web.struts-3.0.5.RELEASE.jar?

?

?

1.2、从下载的spring-framework-3.0.5.RELEASE-dependencies.zip中查找如下依赖jar包,该组jar是struts1.x需要的jar包:

java代码:
java代码:

?

3、配置文件定义:

?

3.1、Spring配置文件定义(resources/chapter10/applicationContext-message.xml):

在此配置文件中定义我们使用的“message”Bean;

?

java代码:

?

3.2、struts配置文件定义(resources/chapter10/struts1x/struts-config.xml):

?

java代码:

?

3.3、web.xml部署描述符文件定义(webapp/WEB-INF/web.xml)添加如下内容:

?

java代码:
java代码:
java代码:

?

3、启动嵌入式Web服务器并在Web浏览器中输入http://localhost:8080/hello2.do可以看到“Hello Spring”信息说明Struts1集成成功。

?

这种集成方式好吗?而且这种方式算是集成吗?直接获取Spring Web容器然后从该Spring Web容器中获取Bean,暂且看作是集成吧,这种集成对于简单操作可以接受,但更复杂的注入呢?接下来让我们学习使用Struts插件进行集成。

?10.2.2? Struts1.x插件集成

Struts插件集成使用ContextLoaderPlugin类,该类用于为ActionServlet加载Spring配置文件。

?

1、在Struts配置文件(resources/chapter10/struts1x/struts-config.xml)中配置插件:

?

java代码:
contextClass可选,用于指定WebApplicationContext实现类,默认是XmlWebApplicationContext;contextConfigLocation指定Spring配置文件位置,如果我们的ActionServlet 在 web.xml 里面通过 <servlet-name>hello</servlet-name>指定名字为“hello”,且没有指定contextConfigLocation,则默认Spring配置文件是/WEB-INF/hello-servlet.xml;namespace因为默认使用ActionServlet在web.xml定义中的Servlet的名字,因此如果想要使用其他名字可以使用该变量指定,如指定“hello”,将加载的Spring配置文件为/WEB-INF/hello-servlet.xml;

?

由于我们的ActionServlet在web.xml中的名字为hello,而我们的配置文件在/WEB-INF/hello-servlet.xml,因此contextConfigLocation和namespace可以不指定,因此最简单配置如下:

?

java代码:
java代码:
java代码:

?

3.2、在Spring配置文件(webapp/WEB-INF/hello-servlet.xml)中定义Action对应的Bean

?

java代码:

?

3.3、启动嵌入式Web服务器并在Web浏览器中输入http://localhost:8080/hello3.do可以看到“Hello Spring”信息说明测试正常。

?????? 从以上配置中可以看出:

Struts配置文件中<action>标签的path属性和Spring配置文件的name属性应该完全一样,否则错误;Struts通过DelegatingActionProxy去到Spring Web容器中查找同名的Action Bean;

很简单吧,DelegatingActionProxy是个代理Action,其实现了Action类,其内部帮我们查找相应的Spring管理Action Bean并把请求转发给这个真实的Action。

?

?

4、DelegatingRequestProcessor方式与Spring集成:

?

4.1、首先要替换掉Struts默认的RequestProcessor,在Struts配置文件(resources/chapter10/struts1x/struts-config.xml)中添加如下配置:

?

java代码:
java代码:

?

或更简单形式:

?

?

java代码:

?

4.3、在Spring配置文件(webapp/WEB-INF/hello-servlet.xml)中定义Action对应的Bean

?

java代码:

?

4.4、启动嵌入式Web服务器并在Web浏览器中输入http://localhost:8080/hello4.do可以看到“Hello Spring”信息说明Struts1集成成功。

?

从以上配置中可以看出:

Struts配置文件中<action>标签的path属性和Spring配置文件的name属性应该完全一样,否则错误;Struts通过DelegatingRequestProcessor去到Spring Web容器中查找同名的Action Bean;

很简单吧,只是由DelegatingRequestProcessor去帮我们查找相应的Action Bean,但没有代理Action了,所以推荐使用该方式。

?【第十章】集成其它Web框架 之 10.2 集成Struts1.x ——跟小弟我学spring3

图10-4 共享及专用Spring Web容器

?

Struts1x与Spring集成到此就完成了,在集成时需要注意一下几点:

推荐使用ContextLoaderPlugin+DelegatingRequestProcessor方式集成;当有多个Struts模块时建议在通用配置部分配置通用部分,因为通用配置在正在Web容器中是可共享的,而在各个Struts模块配置文件中配置是不可共享的,因此不推荐直接使用ContextLoaderPlugin中为每个模块都指定所有配置,因为ContextLoaderPlugin加载的Spring容器只对当前的ActionServlet有效对其他ActionServlet无效,如图10-4所示。原创内容,转载请注明出处【http://sishuok.com/forum/blogPost/list/2511.html】

热点排行