演示Spring+Struts+Hibernate如何整合tiles

基于springside2.0的helloword程序,演示Spring+Struts+Hibernate如何整合tiles
当你的项目开发人员都已经习惯于struts+tiles,那么当你在下个项目准备使用Spring+Struts+Hibernate的时候,
你可能还要让系统使用来设计页面布局,那么就来看看以下的两种方法:
1.HelloWorld-1演示的是第一种方法

使用代理整合spring,保持struts的全部特性包括tiles
 一个更好的解决方法是将 Strut 动作管理委托给 Spring。您可以通过在 struts-config 动作映射中注册一个代理来实现。代理负责在 Spring 环境中查找 Struts 动作。由于动作在 Spring 的控制之下,所以它可以填充动作的 JavaBean 属性,并为应用诸如 Spring 的 AOP 拦截器之类的特性带来了可能。

type="org.springframework.web.struts.DelegatingActionProxy"。DelegatingActionProxy 类使用动作映射名称查找 Spring 环境中的动作。

动作委托解决方法是这三种方法中最好的。Struts 动作不了解 Spring,不对代码作任何改变就可用于非 Spring 应用程序中。RequestProcessor 的改变不会影响它,并且它可以利用 Spring AOP 特性的优点。

动作委托的优点不止如此。一旦让 Spring 控制您的 Struts 动作,您就可以使用 Spring 给动作补充更强的活力。例如,没有 Spring 的话,所有的 Struts 动作都必须是线程安全的。如果您设置 <bean></bean>标记的 singleton 属性为“false”,那么不管用何种方法,您的应用程序都将在每一个请求上有一个新生成的动作对象。您可能不需要这种特性,但是把它放在您的工具箱中也很好。您也可以利用 Spring 的生命周期方法。例如,当实例化 Struts 动作时,<bean></bean> 标记的 init-method 属性被用于运行一个方法。类似地,在从容器中删除 bean 之前,destroy-method 属性执行一个方法。这些方法是管理昂贵对象的好办法,它们以一种与 Servlet 生命周期相同的方式进行管理。

2.HelloWorld-2演示的是第二种方法

覆盖 RequestProcessor。

 Spring 从 Struts 动作中分离是一个更巧妙的设计选择。分离的一种方法是使用 org.springframework.web.struts.DelegatingRequestProcessor 类来覆盖 Struts 的 RequestProcessor 处理程序

<controller processorclass="org.springframework.web.struts. DelegatingRequestProcessor"></controller>在struts配置文件中加入这个配置,就可以使用名称属性注册了一个 bean,以匹配 struts-config 动作映射名称。

这种方法带来的问题是按照我们原来的配置tiles的方式已经不能正确的加载tiles配置信息。所以这个时候必须使用spring来管理tiles,也就是spring官方的配置tiles的方法。

 HelloWorld2.rar 演示了这种方法

这两种方式是根据spring整个struts的方式来而产生的。

本来上周六就应该写好这个日志了,但是打游戏,还有其他事情就耽搁了。

当初查阅的文章:

你可能感兴趣的:(spring,Hibernate,bean,struts,配置管理)