话说Buffalo是姓中的写的,支持下国产! 来先顶一个。
Buffalo处理Ajax有多牛,嘿嘿!我还真没有正儿八经的整过。惭愧啊,争取在最近好好研究下吧!
Buffalo支持和Spring整合。嘿嘿!这也是一个亮点。亮的有些不自在。为啥?
假如你用Spring+Struts+Hibernate来构建的轻量级J2EE框架,Spring和Struts整合有好几种方式,有一种方式不要论论了。
value="/WEB-INF/applicationContext.xml,/WEB-INF/business-context.xml" />
|
上面的代码还熟悉吧!问题就在这了,Buffalo支持Spring的是
contextConfigLocation /WEB-INF/applicationContext.xml context org.springframework.web.context.ContextLoaderServlet 1
|
上面的部分代码是Buffalo支持Spring必须的。
如果Spring和Struts整合用PlugIn方式,也就是Spring来管理Action(管理Action好坏先不说),Buffalo和Spring整合再在Web.xml配置SPring的东东,总感觉怪怪的。
Buffalo获取WebApplicationContext是通过WebApplicationContextUtils.getWebApplicationContext(context);来获取的。
感觉浪费......
所以想让Buffalo用Spring放在ServletContext里面的WebApplicationContext(ContextLoaderPlugIn实现把WebApplicationContext的实例放在了ServletContext中)。
所以就在Buffalo中实现了一个BuffaloPlugIn。代码如下:(写的不规范,凑合看吧!)
/** * * @Descripted Buffalo+Spring+Struts+Hibernate/B> * * @author meconsea * @Company * @IM: MSN: meconsea@hotmail.com * QQ: 75147664 * E-mail: meconsea@163.com * @date 2006-11-16 * @Version 1.0Beta */ public class BuffaloPlugIn implements PlugIn { public static final Logger log = Logger.getLogger(BuffaloPlugIn.class); public static final String SERVLET_CONTEXT_PREFIX = ContextLoaderPlugIn.class.getName() + ".CONTEXT."; public static final String BUFFALO_CONTEXT_PREFIX = BuffaloPlugIn.class.getName()+".CONTEXT."; private ModuleConfig moduleConfig; private ActionServlet actionServlet; public void destroy() { // TODO Auto-generated method stub } protected final String getModuleConfigPrefix(){ return this.moduleConfig.getPrefix(); } protected final ActionServlet getActionServlet(){ return this.actionServlet; } public String getServletContextAttributeNameForBuffalo(){ return BUFFALO_CONTEXT_PREFIX; } public String getServletContextAttributeNameForSCP(){ return SERVLET_CONTEXT_PREFIX+getModuleConfigPrefix(); } public void init(ActionServlet as, ModuleConfig mc) throws ServletException { // TODO Auto-generated method stub log.info("BuffaloPlugIn init begin ......"); this.actionServlet = as; this.moduleConfig = mc; as.getServletContext().setAttribute (getServletContextAttributeNameForBuffalo(), getServletContextAttributeNameForSCP()); log.info("init end "); } }
|
把Buffalo中的SpringFactory和SpringUtil的获得WebApplicationContext的方式修改如下:
在SpringUtil中增加方法:
/** * 获取WebApplicationContext * @param context * @return */ public static WebApplicationContext getWebApplicationContext(ServletContext context){ WebApplicationContext wac = null; log.info("获取Wac begin......"); if(context == null){ log.info("context is null reutrn null"); return null; } String wacAttrName = (String)context.getAttribute(BuffaloPlugIn.BUFFALO_CONTEXT_PREFIX); log.info("wacAttrName == "+wacAttrName); if(wacAttrName != null){ wac = (WebApplicationContext)context.getAttribute(wacAttrName); } if(wac == null){ log.info("wac is null , obtain WebApplicationContext by WebApplicationContextUtils again"); wac = WebApplicationContextUtils.getWebApplicationContext(context); } return wac; } ....// WebApplicationContext appCtx = getWebApplicationContext(context); //WebApplicationContextUtils.getWebApplicationContext(context);
|
好了,修改完毕了。
在Struts-config.xml中增加
就OK了。Web.xml中只配置
bfapp net.buffalo.web.servlet.ApplicationServlet
|
就完全支持SPring了。
当然是建立在Spring+Struts构建了轻量级框架的基础上的。
哈哈!不知道我自己能不能看懂。就此搁笔!闪!!!!!
给自己留的纪念。
注:Spring2.0 Struts1.3 Hibernate3.0
(责任编辑 火凤凰 sunsj@51cto.com TEL:(010)68476636-8007)