科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道构建支持Ajax的轻量级J2EE框架

构建支持Ajax的轻量级J2EE框架

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文是在Spring+Struts构建的轻量级框架基础上,通过让Buffalo用Spring放在ServletContext里面的WebApplicationContext(ContextLoaderPlugIn实现把WebApplicationContext的实例放在了ServletContext中来实现了一个BuffaloPlugIn。

作者:meconsea 来源:中国IT实验室 2007年9月6日

关键字: AJAX J2EE 框架

  • 评论
  • 分享微博
  • 分享邮件

话说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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章