用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房租,也不知道李大伦,李金宝之流规矩后,房价能不能降些,我想有个蜗牛的家 已经唱了好几年了--跑题了,睡觉去了:)
分享到:
相关推荐
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模式...
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模式...
java分页工具类,以及基于Struts,Spring,mybatis,jsp中分页的调用及实现
Webservice+spring+struts小例子,简单方法调用
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.3.4+spring3.2.0+hibernate4+hibernate_generic_dao struts hibernate spring最大化使用注释 基于spring的远程调用
2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录...
使用Java struts+spring_ibaits+调用Mysql存储过程 实现增删改查
不会新建action对象,每次调用的时候会使用原来的action,所以该类的所有字段会保留,这样异步访问的时候会出问题,所以需要将scope参数设置为prototype(多例),即在相应的action上添加属性:scope="prototype",...
不会新建action对象,每次调用的时候会使用原来的action,所以该类的所有字段会保留,这样异步访问的时候会出问题,所以需要将scope参数设置为prototype(多例),即在相应的action上添加属性:scope="prototype",...
SSH+Redis整合
前几天更换了最新版本的ssh,发现这次变化还是挺大的,费了很大劲才整理好,这是我整理的struts2.3.12+spring3.2+hibernate4.1.9 web网站框架,希望大家用的时候可以省点事吧,里面有用spring代理写的接口调用。
Struts2,Spring,Hibernate,DWR,JavaMail,以及少部分正则表达式。其实都是非常基础简单的应用,目的就是让大家看看这些框架是如何协同工作的。开发平台为:Winxp2+JDK1.5+Tomcat5.5+MySQL5.0。 以下是本例子的...
struts2+ibatis+spring+Hessian 整合项目 web项目整合,服务端用hessian协议远程调用服务端的方法,hessian是用spring代理整合,struts2+ibatis+spring的整合项目,用作学习和开发基础平台构建很有用处,工程导入...
这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类, 包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 spring的核心类,提供了核心HTTP...
(11) spring-web.jar 这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、 Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) ...
把LoginAction中的login和regist方法都配置成逻辑Action。要调用login方法,则相应的把index.jsp中表单元素的action设置
第三章 与Struts2、Spring集成 - 17 - 3.1. 业务逻辑层接口及实现类 - 17 - 3.2. Struts2的Action调用业务逻辑 - 19 - 3.2.1. 登录Action--OpenIDLoginAction - 19 - 3.2.2. 进入的Action—FirstPageAction - 20 - ...
整合了Ibatis+struts2.0+Spring2.5的增、删、改、查和调用存储过程
调用TouPiaoService.processTouPiao()静态方法把封在TouPiaoBean中的投票结果保存在应用的application中。 TouPiaoDatasets对象中的各个静态方法获取保存在application中的投票数据,并生成各个图表需要用到...