关于Struts2的问题,如何在Servelt中调用Service(即业务层的接口)

时间:2008-08-26 11:05:38   来源:论坛整理  作者:  编辑:chinaitzhe
我用的是Struts2 spring hibernate框架。
现在又一个问题:
在Action中可以通过get/set得到业务层的实例,即可以正常调用到Service中的方法;
但如果在一个Servelt如何调用到Service中的方法?
先谢谢了!
网友回复:Servelt?

你可以通过工厂拿到啊?Spring 一般都有一个工厂类来进行获取服务
比如
Factory.java
Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



import org.springframework.beans.factory.BeanFactory;

import org.springframework.context.support.ClassPathXmlApplicationContext;



public class Factory {

  private static BeanFactory beanFactory;

  static {

    try {

      beanFactory = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });

    } catch (Exception ex) {

      ex.printStackTrace();

    }

  }



  public static Object getBean(String beanName) {

    if (beanName == null) {

      return null;

    }

    try {

      Object obj = beanFactory.getBean(beanName);

      if (obj == null) {

        System.err.println("Lookup Object["   beanName   "] Error!");

      }

      return obj;

    } catch (Exception ex) {

      System.out.println(beanName);

      ex.printStackTrace();

      return null;

    }

  }

}


网友回复:你在你的Spring的配置文件里设置好你的服务,然后通过

Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



MyService s = (MyService)Factory.getBean("MyServiceId");



就可以拿到你的服务了!
网友回复:去ApplicationContext中去取
网友回复:既然app server启动时候初始化了spring的相关配置,再去手动创建工厂,获取bean就有点不划算了

不如直接去ServletContext中获取,这样可以保证和struts中使用的bean是完全共享的
[code=java]
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext application;
WebApplicationContext wac;
application = getServletContext();
wac = WebApplicationContextUtils.getWebApplicationContext(application);//获取spring的context
Service1 service1= (Service1) wac.getBean("service1");
}
[/code]
网友回复:
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
this.yourService = (YourService)ctx.getBean("yourService");
网友回复:谢谢!非常感谢大家!!!!
关键字:接口,业务,问题,

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面