Strut + Spring 实践

来源:互联网 发布:如何优化直通车关键词 编辑:程序博客网 时间:2024/04/28 16:20

Spring + Struts 整合应用实践

一、工程的创建

本次实践所用的Strut2版本为2.2.1.1

以下为配置步骤:

1、导入struts的自身支持包

在下载得到的Struts2 lib目录下,有着许许多多的jar包,一般的Web工程只需要引入struts2-core-2.2.1.1.jarxwork-core-2.2.1.1.jarognl.jarfreemaker-2.3.16.jarcommons-file-upload-1.2.1.jarcommons-io-1.3.2.jarjavassist-3.7.ga.jar等几个包即可。曾经在书上看到过只需引进前四个包即可,但是经过我自己的实践,只导入前四个包的情况下,会出现classNotFoundexception,这可能是struts2版本不同导致(书中的struts2版本是2.0.9)。

2、导入strutsspring的支持包struts2-spring-plugin-2.2.1.1.jar

 

3、导入spring相关包

这一步中特别注意的是不要把commons-logging.jar包遗漏掉,不然也会发生ClassNotFound的异常。

4、整个工程图如下:

 

二、Struts相关配置与调试

2.1 配置

Struts相关配置包括了Action类的编写(在struts中,ActionFilterDispatcher是控制器的组成部分,Action类主要的作用在于调用业务逻辑功能并分发结果页面给用户)、web.xml以及struts.xml的编写。这里在工程中配置一个简单的Action例子:

HelloStrutsexecute()方法放回了一个success字符串,其实这里对应的是在struts.xml中配置的相应actionresult属性中对应的name属性为“sucess”的结果页面。这里给出struts.xml的内容:

从上面看出我们可以看到name=success”的值是/example/success.jsp,也就是说当在action类中返回success时,会将该页面作为结果页面返回给用户。success.jsp 页面如下:

最后,就是web.xml的编写:

从上图可以看到,其实struts2是通过在服务器上通过增加一个过滤器来嵌入到应用中的,FilterDispatchstruts2中控制器的组成部分。

2.2 调试

编写完上述文件后,我们就可以在tomcat中部署我们的web应用了。部署完成后再浏览器中输入http://localhost:8080/Struct2Test/hello。如果能够看到Welcome to Struts则说明我们的struts部署成功了。如果不成功,请仔细检查以上的步骤是否正确。

 

struts2 Spring的整合

上面只是单纯在Web项目中应用到了Struts 框架,接下来我们来看看struts2是如何跟Spring整合在同一个Web项目中的。

3.1 增加Spring配置

首先,在HelloStruts类中增加userName的属性以及相应的GetterSetter方法,下面我们将会通过SpringIoC(控制反转)特性(也称依赖注入)为HelloStruts注入userName的值。修改后的类如下:

                       

然后,在WEB-INF下增加applicationContext.xml文件,内容如下:

 

这里设置了一个Bean对象,idhelloAction,其对应的类为example.HelloStruts,同时也为这个对象的userName属性值设置了相应的值,这里为WaisonYe

最后,修改web.xml,加入以下内容:

  

它为服务器添加了一个监听器,这样也使的struts2 spring 结合起来。如果没有这句话,服务器是启动不了的。另外,我们的applicationContext.xml的位置可以不放置在WEB-INF文件下,这时就需再在web.xml中增加以下说明:

 

 

3.2 修改struts2本身配置以整合Spring

struts.xml文件中,加入以下一句话

                           

这句话的作用在于把struts2里的action对象交由Spring容器来统一管理。

同时,将

 

改为:

  

这里class="helloAction"这里的helloAction不再是以前的真正的类的映射,如class="example.helloAction"

 

因为要交给spring管理,所以这里的helloAction必须要与 applicationContext.xml 中的

 

<bean id=" helloAction " class="example.helloAction" scope="prototype">

 

中的id=" helloAction " 保持一致,这里的class=" example.helloAction "就是真正的类的映射,

 

这样写,就表明了struts.xml中的helloAction 已交给 spring来进行管理。

 

最后,编写新的success2.jsp如下:

 

这里,从helloAction中读出了对应的userName属性值,并显示出来。

 

3.3 部署

最后,我们再次部署上述工程,再次输入上述网址,可以看到如下页面:Welcome here ,WaisonYe, the spring and struts are integrated

 

 

 

 

原创粉丝点击