龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

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

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
话说Buffalo是姓中的写的,支持下国产! 来先顶一个。 Buffalo处理Ajax有多牛,嘿嘿!我还真没有正儿八经的整过。惭愧啊,争取在最近好好研究下吧! Buffalo支持和Spring整合。嘿嘿!这也

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


精彩图集

赞助商链接