JSP页面怎样调用Spring配置文件中定义的Bean

2025-02-28 14:25:33
推荐回答(2个)
回答1:

jsp页面如果想要根据id直接查询信息的话,可能会需要这样的代码

而应用类Spring框架之后如上图的NewsService里面是没有实例化过的NewsDao的,这样上面图中的方法就执行不了

那假如想要使用NewsServcie中的方法,就需要去找Spring,在Action因为设置了setter方法注入所以可以直接获得实例化好的对象,那在jsp中呢?

首先你需要有一个jar包,形如spring-web-3.2.0.M2.jar,将此包加入build Path并部署或者直接复制到WEB-INF/lib下,这是spring应用在web项目时需要用到的jar包
然后在jsp页面中导入相关的工具类:
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%><%@ page import="org.springframework.web.context.WebApplicationContext"%>

最后通过以下语句获取配置文件中相应的Bean
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext()); NewsService service = (NewsService)wac.getBean("newsService");
注意getBean()方法中传入的是配置文件中的Bean的id

这样就可以在页面中访问Spring的Bean了,同时也可以访问service的方法了

回答2:

ApplicationContext获取上下文。(1)在java文件中:主要用于jUnit测试1导包:2importorg.springframework.context.ApplicationContext;3importorg.springframework.context.support.ClassPathXmlApplicationContext;4获取bean:5ApplicationContextcontext=newClassPathXmlApplicationContext("beans.xml");6UserDaouserDao=(UserDao)context.getBean("userDao",UserDao.在jsp文件中测试:1引用相关类:2<%@pageimport="org.springframework.web.context.WebApplicationContext"%3<%@pageimport="org.springframework.web.context.support.WebApplicationContextUtils"%4获取bean:5WebApplicationContextwac=WebApplicationContextUtils.getWebApplicationContext(this