JSP頁面怎樣呼叫Spring配置檔案中定義的Bean?

如果一個專案應用了Spring框架,例項化物件的過程也就交給了Spring了,也即一般在applicationContext.xml配置檔案中配置類的依賴關係,這樣做以後假如jsp頁面上想要直接訪問Service層的方法,由於service的例項化交給了Spring,所以也就不能new一個物件出來了。這時如果想要訪問Service中的方法該怎麼辦呢?

JSP頁面怎樣呼叫Spring配置檔案中定義的Bean

工具/原料

spring-web-3.2.0.M2.jar包

方法/步驟

jsp頁面如果想要根據id直接查詢資訊的話,可能會需要這樣的程式碼

JSP頁面怎樣呼叫Spring配置檔案中定義的Bean

而應用類Spring框架之後如上圖的NewsService裡面是沒有例項化過的NewsDao的,這樣上面圖中的方法就執行不了

JSP頁面怎樣呼叫Spring配置檔案中定義的Bean

那假如想要使用NewsServcie中的方法,就需要去找Spring,在Action因為設定了setter方法注入所以可以直接獲得例項化好的物件,那在jsp中呢?

JSP頁面怎樣呼叫Spring配置檔案中定義的Bean

首先你需要有一個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"%>

JSP頁面怎樣呼叫Spring配置檔案中定義的Bean

最後通過以下語句獲取配置檔案中相應的Bean

WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext()); NewsService service = (NewsService)wac.getBean("newsService");

注意getBean()方法中傳入的是配置檔案中的Bean的id

JSP頁面怎樣呼叫Spring配置檔案中定義的Bean

這樣就可以在頁面中訪問Spring的Bean了,同時也可以訪問service的方法了

注意事項

感覺有用就點個贊吧~~

相關問題答案