在Struts 2中实现IoC模式

IoC(Inversion of Control,以下译为控制反转)随着Java社区中轻量级容器(Lightweight Contianer)的推广而越来越为大家耳熟能详。在此,我不想再多费唇舌来解释“什么是控制反转”和“为什么需要控制反转”。因为互联网上已经有非常多的文章对诸如此类的问题作了精彩而准确的回答。大家可以去读一下Rod Johnson和Juergen Hoeller合著的《Expert one-on-one J2EE Development without EJB》或Martin Fowler所写的《Inversion of Control Containers and the Dependency Injection pattern》。

言归正传,本文的目的主要是介绍在Struts 2中实现控制反转。

历史背景

众所周知,Struts 2是以Webwork 2作为基础发展出来。而在Webwork 2.2之前的Webwork版本,其自身有一套控制反转的实现,Webwork 2.2在Spring 框架的如火如荼发展的背景下,决定放弃控制反转功能的开发,转由Spring实现。值得一提的是,Spring确实是一个值得学习的框架,因为有越来越多的开源组件(如iBATIS等)都放弃与Spring重叠的功能的开发。因此,Struts 2推荐大家通过Spring实现控制反转。

具体实现

首先,在开发环境中配置好Struts 2的工程。对这部分仍然有问题的朋友,请参考我的早前的文章。

然后,将所需的Spring的jar包加入到工程的构建环境(Build Path)中,如下图1所示:

图1 所依赖的Spring的jar包

本文使用的是Spring 2.0,Spring强烈建议大家在使用其jar包时,只引用需要的包,原因是Spring是一个功能非常强大的框架,其中有些功能是您不需要的;而且Spring提倡的是“按需所取”,而不是EJB的“爱我就要爱我的一切”。当然,如果你怕麻烦或者是不清楚每个包的作用,引用一个Spring的总包也未尝不可。

时间: 2024-08-04 01:16:41

在Struts 2中实现IoC模式的相关文章

spring,ioc模式与ejb3调用

我们先看看在servlet中怎么调用ejb3:public class HelloServlet extends GenericServlet { private Hello _hello; public void setHello(Hello hello) { _hello = hello; } public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletExce

spring,ioc模式与ejb3的SLSB实现

我们先看看ejb3的SLSB的实现: import javax.ejb.Stateless; @Stateless public class HelloBean{ private String _greeting = "Default Hello"; public void setGreeting(String greeting) { _greeting = greeting; } public String hello() { return _greeting; } } 然后我们看看

Struts 2中的constant配置详解_java

1.<constant name="struts.i18n.encoding" value="UTF-8" /> 指定Web应用的默认编码集,相当于调用 HttpServletRequest的setCharacterEncoding方法. 2.<constant name="struts.i18n.reload" value="false"/> 该属性设置是否每次HTTP请求到达时,系统都重新加载资源文

看看如何在Struts应用中施展AJAX魔法

ajax AJAX是最近在web开发流程中一次革命,它允许在一个普通的web浏览器中配置大量的动态效果.多年前Struts 都已经是Java-Web开发中的一个事实上的标准,在大量的应用中都已经使用了它.本文将告诉你,如何在你已经存在Struts应用中结合丰富的AJAX没Ы涌凇? 本文将介绍在JSP页面中包含一些JavaScript这样一个简单而有效的方法来结合AJAX和Struts.在此我们介绍如何重新使用已经存在的Struts actions,但此技术同样可用于你选择的其他Java-Web

在ASP.NET中实现Model-View-Controller模式(2)

asp.net|model   模型-视图-控制器分离的重构 为了解决上面所遗留的问题,你必须将模型与控制器角色分离. 视图的实现代码与前部分相同. 模型 下面的代码例子使模型角色仅仅依赖于数据库,而不包含任何与视图相依赖的代码. using System; using System.Collections; using System.Data; using System.Data.SqlClient; public class DatabaseGateway { public static D

在ASP.NET中实现MVC模式(二)

asp.net 在ASP.NET中实现Model-View-Controller模式(二) MVC模式形容这种实现方式是一种被动的实现机制,ASP.NET充当了程序执行中的控制器的角色,但程序员必须将具体的事件处理方法添加到事件的响应函数中.如在这个例子中,控制器在页面加载之前调用Page_Load函数并执行其中的代码,当用户点击Submit按钮时由系统调用SubmitBtn_Click函数并执行. 这种将代码都包含在一个文件中的实现方式非常的直接,而且当应用程序很小并不经常修改的时候也可以说是

在ASP.NET中实现MVC模式(四)

asp.net 在ASP.NET中实现Model-View-Controller模式(四) 模型-视图-控制器分离的重构 为了解决上面所遗留的问题,你必须将模型与控制器角色分离. 视图的实现代码与前部分相同. 模型 下面的代码例子使模型角色仅仅依赖于数据库,而不包含任何与视图相依赖的代码. using System; using System.Collections; using System.Data; using System.Data.SqlClient; public class Dat

在ASP.NET中实现MVC模式(五)

asp.net 在ASP.NET中实现Model-View-Controller模式(五) 测试 将模型部分从ASP.NET环境中分离出来能够使模型部分更容易的被测试.在ASP.NET环境中进行测试的话,你必须同时测试很多方面,如HTML代码是否正确,而读取HTML代码的工作是非常烦闷的.将模型部分分离出来,使你能够对模型部分做单独的单元测试.下面是NUnit (http://nunit.org)对模型部分进行单元测试的例子. using System; using NUnit.Framewor

在ASP.NET中实现MVC模式(一)

asp.net 在ASP.NET中实现Model-View-Controller模式(一) 背景: 当利用ASP.NET创建Web应用程序时,基于程序的复杂性,必须把程序分割成不同的部分以减少代码的重复及减少日后变革时所引起的改动. 实现策略: 为了解释如何在ASP.NET中实现(MVC)模型-视图-控制器模式,以及说明将软件分离成模型.视图.及控制器角色的好处,在此以一个示例程序为例进行说明.这个示例程序是一个带有下拉框的单页程序,它的功能是显示数据库中的数据.如下图. 当用户在下拉框中选择了