用SSH做了几个项目,现在总结一下Struts Action中调用Spring Service的方法,大家有好的实现,请继续补充:
1.
老爸操持型
这种类型,即是在BaseAction中提供一个getBean(String beanName)的父类方法,业务Action 在需要Serivce时,调用父类的getBean()得到Object型的Service,再Cast。
e.g.
public class BaseAction extends DispatchAction
{
...
public Object getBean(String name)
{
if (ctx == null)
{
ctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(servlet.getServletContext());
}
return ctx.getBean(name);
}
}
2.
自已动手型
自己动手 丰衣足食,再加了自从有了IoC,所谓动手也只是衣来后的伸手和饭来后的张口。自己动手型,即是利用Spring的IoC,将IoC容器中的Service注入到Action中,当然Action需要提供注入服务有setter.
如果采用这种方式,首先需要让Spring接管Struts,然后在Spring配置文件中,配置Action的注入属性。
首先.在struts-config.xml将Spring引狼入室。
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/action-servlet.xml"
/>
</plug-in>
然后,Struts再向Spring投怀送抱:
<bean id="userService" class="com.nic.service.UserServiceImpl">
<property name="userDao">
<ref bean="userDao" />
</property>
</bean>
<bean name="/userAction" class="com.stamen.web.UserAction">
<property name="userService" ref="userService"/>
</bean>
聪明的你一下就看出“/userAction ”即是com.stamen.web.UserAction在Struts中的配置名。
3.
朋友帮忙型 朋友多了好办事,凡事都自己动手总有一天会活活累死,所有Action为自己需要的Service提供setter,并且在Spring中注入,好累啊。小学生都在减负了,我们也来为Action减减负吧--提供一个专门
查找Serivice的ServiceLocator,负责获取所有的Service,该类为每个Service提供专门的获得方法,如:
public class ServiceLocator
{
private static ApplicationContext factory = null;
public static void init(ApplicationContext ctx)
{
factory = ctx;
}
public static LogService getLogService()
{
return (LogService) ServiceLocator.getBean("logService");
}
public static UserService getUserService()
{
return (UserService) ServiceLocator.getBean("userService");
}
public static PieeService getPieeService()
{
return (PieeService) ServiceLocator.getBean("pieeService");
}
public static PieeGrid getPieeListService()
{
return (PieeGrid) ServiceLocator.getBean("pieeListService");
}
...
}
Action要用哪个Serivce时,直接通过ServiceLocator.getXxxService()就可以获得了,省去了
“老爸操持型”指定Service 名和Cast的繁琐,比在Spring中IoC来IoC去也来得省心省力。
下面做一个自己的分析小结:
1.“老爸操持型” 将serviceName分散到代码中,到时配置文件中serviceName一改,得牵一毛而动全身->维护性差;且要进行Cast转换,怎一个繁字了得。
2.“自己动手型”也不好,不但在Action中要添加get/setXxxService代码,而且还要在Struts和Spring的配置文件中做好群众的大串连工作,难道我们的配置还不够多吗?吃回香豆的,你别又跳出来啊:)
3.“朋友帮忙型”,目前,我认为是比较好的方式,ServiceLocator象一个服务周到,工作到位的房产“中介”,我们要租房子 何必满街跑啊?TMD 这个月我又交了3K房租,也不知道李大伦,李金宝之流规矩后,房价能不能降些,我想有个蜗牛的家 已经唱了好几年了--跑题了,睡觉去了:)
分享到:
相关推荐
### Struts与Spring的三种整合方法详解 在Java企业级应用开发中,Struts和Spring是两个非常重要的框架。Struts作为MVC架构的一种实现,主要用于构建web应用程序的表示层,而Spring则提供了依赖注入(DI)和面向切面...
表单的提交动作会指向Struts的Action,该Action会调用Spring管理的业务层服务进行验证。 3. **业务逻辑**:在Spring中,我们可以创建一个UserService接口及其实现类,用于处理登陆验证。这个服务类可能会调用DAO...
Struts、Spring 和 MyBatis 是Java开发领域中三大著名框架,它们的组合常被称为SSM框架,用于构建高效、可扩展的企业级Web应用程序。在这个项目中,它们被用来实现一个基本的增删改查(CRUD)功能,这是任何数据库...
Struts2、Spring和JPA是Java开发中常用的三大框架,它们在企业级应用开发中发挥着关键作用。Struts2作为MVC框架,负责控制应用程序的流程;Spring框架则是一个全面的后端解决方案,提供了依赖注入(DI)、面向切面...
在"struts+spring"的集成项目中,通常会有一个Spring配置文件(如:applicationContext.xml),用于定义bean,包括Action类、Service类和DAO类。这些bean可以通过Struts的ActionContext获取到,以便在Action中使用。...
Struts2、Spring4和Hibernate是Java开发中的三大框架,它们在构建企业级Web应用程序时起着核心作用。本教程将深入探讨这三个框架如何协同工作,以实现高效、灵活和可扩展的电子商务平台。 首先,Struts2是一个基于...
8. **用户注册流程**:用户提交注册信息后,Struts的Action接收到请求,通过Spring的依赖注入获取到业务服务类,业务服务类再调用DAO(数据访问对象)完成数据的持久化。同时,Spring可以管理事务,确保注册过程中...
Struts、Spring和iBatis是Java开发领域中三大经典的开源框架,它们分别负责MVC模式中的动作控制、依赖注入以及数据库操作。这个"struts+spring+ibatis的Demo"压缩包文件提供了这三个框架集成使用的示例代码,旨在...
1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式...
标签的实现类需要继承自Struts2的标签基类,并调用Spring服务层的方法获取所有用户数据,然后在JSP页面中使用这个标签来显示。 在实际开发中,还需要关注事务管理、异常处理和安全性等方面。Spring提供了强大的事务...
- **登录逻辑处理**:当用户提交登录信息后,由Struts2转发至Spring管理的业务逻辑层进行处理,通过调用UserDAO的findUserByNameAndPass方法来验证用户身份。 - **错误处理**:对于登录失败的情况,需要捕获异常并给...
Struts、Spring和Hibernate是Java开发中非常经典的三大框架,它们各自在Web应用程序开发的不同层面发挥着重要作用。Struts提供了MVC(Model-View-Controller)设计模式的实现,Spring作为一个全面的轻量级框架,提供...
如果需要验证,ActionForm的validate方法会被调用。Action处理完业务逻辑后返回ActionForward,控制页面跳转。Struts1的核心在于提供了一个清晰的分层结构,使得开发者能够更好地分离视图、控制和模型。 【Spring】...
Struts2、Spring和Hibernate是Java开发中三大重要的开源框架,它们各自负责Web应用的不同层面。Struts2作为MVC框架处理HTTP请求和视图展示,Spring提供了依赖注入(DI)和面向切面编程(AOP),以及服务层管理,而...
在SSH项目中,开发者通常会创建Action类来处理特定的业务逻辑,这些Action类由Struts框架调用,然后Spring管理这些Action类的生命周期和依赖关系。同时,Hibernate会通过SessionFactory和Session接口来建立与数据库...
在SSH整合中,Spring作为业务逻辑的核心,可以管理和调用DAO(数据访问对象),同时负责控制流程的跳转,以及提供Spring MVC来替代部分Struts的功能。 Hibernate是一个强大的ORM(对象关系映射)框架,它可以将Java...
SSH(Struts+Spring+Hibernate)是Java Web开发中一种常见的技术栈,它将MVC设计模式、依赖注入和持久层框架集成为一个整体,大大提高了开发效率和代码的可维护性。下面我们将深入探讨SSH框架的各个组成部分及其结合...
Struts、Spring和Hibernate是Java开发中非常著名的三个开源框架,它们共同构成了SSH(Struts、Spring、Hibernate)集成框架,被广泛应用于企业级Web应用的开发中。这个压缩包文件"SSH"提供了这三个框架的源代码,让...
Struts、Spring和iBatis是Java开发中常用的三大开源框架,它们各自专注于应用程序的不同层次:Struts处理表现层逻辑,Spring提供全面的依赖注入和事务管理,而iBatis则负责数据访问层的工作。本教程集合了这三者的...
Struts+Spring+Hibernate 整合是开发Java Web应用程序的一种常见模式,也称为SSH框架。这个框架组合提供了从前端到后端的完整解决方案,适用于构建三层架构的应用程序。以下是关于这个话题的详细说明: 1. **Struts...