Spring Struts Hibernate Buffalo构建支持Ajax的…

2008-02-23 09:13:57来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

话说Buffalo是姓中的写的,支持下国产! 来先顶一个。
Buffalo处理Ajax有多牛,嘿嘿 我还真没有正儿八经的整过。惭愧啊,争取在最近好好研究下吧。
Buffalo支持和Spring整合。嘿嘿 这也是一个亮点。亮的有些不自在。为啥?
假如你用Spring Struts Hibernate来构建的轻量级J2EE框架,Spring和Struts整合有好几种方式,有一种方式不要要论论了。
<plug-in className="org.springFramework.Web.struts.ContextLoadERPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.XML,/WEB-INF/business-context.xml" />
</plug-in>
上面的代码还熟悉吧。问题就在这了,Buffalo 支持Spring的是
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<Servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
上面的部分代码是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 <B>Buffalo Spring Struts Hibernate/B>
* <P></P>
* @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");

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:多核、超线程CPU时代将成就Java性能之王的地位

下一篇:axis 的客户端使用