关于Struts2的问题,如何在Servelt中调用Service(即业务层的接口)
时间:2008-08-26 11:05:38
来源:论坛整理 作者: 编辑:chinaitzhe
现在又一个问题:
在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 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面