`
13131372
  • 浏览: 2508 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Struts调用Spring服务类的三种方法

阅读更多
用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的三种整合方法

    ### Struts与Spring的三种整合方法详解 在Java企业级应用开发中,Struts和Spring是两个非常重要的框架。Struts作为MVC架构的一种实现,主要用于构建web应用程序的表示层,而Spring则提供了依赖注入(DI)和面向切面...

    Struts,Spring登陆

    表单的提交动作会指向Struts的Action,该Action会调用Spring管理的业务层服务进行验证。 3. **业务逻辑**:在Spring中,我们可以创建一个UserService接口及其实现类,用于处理登陆验证。这个服务类可能会调用DAO...

    Struts+spring+mybatis

    Struts、Spring 和 MyBatis 是Java开发领域中三大著名框架,它们的组合常被称为SSM框架,用于构建高效、可扩展的企业级Web应用程序。在这个项目中,它们被用来实现一个基本的增删改查(CRUD)功能,这是任何数据库...

    Struts2 Spring Jpa 配置测试

    Struts2、Spring和JPA是Java开发中常用的三大框架,它们在企业级应用开发中发挥着关键作用。Struts2作为MVC框架,负责控制应用程序的流程;Spring框架则是一个全面的后端解决方案,提供了依赖注入(DI)、面向切面...

    struts+spring的一个简单项目

    在"struts+spring"的集成项目中,通常会有一个Spring配置文件(如:applicationContext.xml),用于定义bean,包括Action类、Service类和DAO类。这些bean可以通过Struts的ActionContext获取到,以便在Action中使用。...

    struts2+spring4+hibernate

    Struts2、Spring4和Hibernate是Java开发中的三大框架,它们在构建企业级Web应用程序时起着核心作用。本教程将深入探讨这三个框架如何协同工作,以实现高效、灵活和可扩展的电子商务平台。 首先,Struts2是一个基于...

    SSH整合源码(Struts+Spring+Hibernate整合用户注册例子)

    8. **用户注册流程**:用户提交注册信息后,Struts的Action接收到请求,通过Spring的依赖注入获取到业务服务类,业务服务类再调用DAO(数据访问对象)完成数据的持久化。同时,Spring可以管理事务,确保注册过程中...

    struts+spring+ibatis的Demo

    Struts、Spring和iBatis是Java开发领域中三大经典的开源框架,它们分别负责MVC模式中的动作控制、依赖注入以及数据库操作。这个"struts+spring+ibatis的Demo"压缩包文件提供了这三个框架集成使用的示例代码,旨在...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    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模式...

    Struts Spring Hibernate整合实践.doc

    标签的实现类需要继承自Struts2的标签基类,并调用Spring服务层的方法获取所有用户数据,然后在JSP页面中使用这个标签来显示。 在实际开发中,还需要关注事务管理、异常处理和安全性等方面。Spring提供了强大的事务...

    Struts+Spring+Hibernate整合教程.pdf

    Struts、Spring和Hibernate是Java开发中非常经典的三大框架,它们各自在Web应用程序开发的不同层面发挥着重要作用。Struts提供了MVC(Model-View-Controller)设计模式的实现,Spring作为一个全面的轻量级框架,提供...

    Struts,Spring,Hibernate三大框架的面试&笔试题

    如果需要验证,ActionForm的validate方法会被调用。Action处理完业务逻辑后返回ActionForward,控制页面跳转。Struts1的核心在于提供了一个清晰的分层结构,使得开发者能够更好地分离视图、控制和模型。 【Spring】...

    struts2 spring hibernate integration

    Struts2、Spring和Hibernate是Java开发中三大重要的开源框架,它们各自负责Web应用的不同层面。Struts2作为MVC框架处理HTTP请求和视图展示,Spring提供了依赖注入(DI)和面向切面编程(AOP),以及服务层管理,而...

    struts+spring+hibernate

    在SSH项目中,开发者通常会创建Action类来处理特定的业务逻辑,这些Action类由Struts框架调用,然后Spring管理这些Action类的生命周期和依赖关系。同时,Hibernate会通过SessionFactory和Session接口来建立与数据库...

    struts+spring+hibernate ssh框架一个实例

    在SSH整合中,Spring作为业务逻辑的核心,可以管理和调用DAO(数据访问对象),同时负责控制流程的跳转,以及提供Spring MVC来替代部分Struts的功能。 Hibernate是一个强大的ORM(对象关系映射)框架,它可以将Java...

    SSH(Struts+Spring+Hibernate)结合项目简单实例

    SSH(Struts+Spring+Hibernate)是Java Web开发中一种常见的技术栈,它将MVC设计模式、依赖注入和持久层框架集成为一个整体,大大提高了开发效率和代码的可维护性。下面我们将深入探讨SSH框架的各个组成部分及其结合...

    struts+spring+hibernate源代码

    Struts、Spring和Hibernate是Java开发中非常著名的三个开源框架,它们共同构成了SSH(Struts、Spring、Hibernate)集成框架,被广泛应用于企业级Web应用的开发中。这个压缩包文件"SSH"提供了这三个框架的源代码,让...

    struts+spring+ibatis框架集合教程

    Struts、Spring和iBatis是Java开发中常用的三大开源框架,它们各自专注于应用程序的不同层次:Struts处理表现层逻辑,Spring提供全面的依赖注入和事务管理,而iBatis则负责数据访问层的工作。本教程集合了这三者的...

    Struts+Spring+Hibernate快速入门

    Struts+Spring+Hibernate 整合是开发Java Web应用程序的一种常见模式,也称为SSH框架。这个框架组合提供了从前端到后端的完整解决方案,适用于构建三层架构的应用程序。以下是关于这个话题的详细说明: 1. **Struts...

    Struts2+spring+ibatis三大框架整合实例

    7. **编写业务逻辑**:创建Action类,注入业务服务,调用服务方法完成业务逻辑。 8. **部署与运行**:打包项目为WAR文件,部署到Tomcat等应用服务器上。如果遇到兼容问题,如标题所述,可能需要根据服务器版本调整...

Global site tag (gtag.js) - Google Analytics