一、servletContext接口是Servlet中最大的一個接口,呈現了web應用的Servlet視圖。ServletContext實例是經過 getServletContext()方法得到的,因爲HttpServlet繼承Servlet的關係,GenericServlet類和 HttpServlet類同時具備該方法。其實servletContext和application 是同樣的,就至關於一個類建立了兩個不一樣名稱的變量。 二、ActionContext是Action執行時的上下文,裏面存放着Action在執行時須要用到的對象,咱們也稱之爲廣義值棧。 訪問其它的Web對象的值也是與此相似的,你經過ActionContext去訪問的都是包裝後的Map。 三、spring上下文:ApplicationContext 測試環境獲取: 測試環境能夠這樣獲取,從新加載spring環境獲取到上下文,可是在web環境下不能這樣獲取,比較耗費資源。 ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); web環境獲取: WebApplicationContextUtils.getWebApplicationContext(servletContext); 三、經過Aware接口: Spring中提供一些Aware相關接口,像是BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,實例這些 Aware接口的Bean在被初始以後,能夠取得一些相對應的資源,例如實例BeanFactoryAware的Bean在初始後,Spring容器將會注入BeanFactory的實例,而實例ApplicationContextAware的Bean,在Bean被初始後,將會被注入 ApplicationContext的實例等等。 Bean取得BeanFactory、ApplicationContextAware的實例目的是什麼,通常的目的就是要取得一些檔案資源的存取、相 關訊息資源或是那些被注入的實例所提供的機制,例如ApplicationContextAware提供了publishEvent()方法,能夠支持基於Observer模式的事件傳播機制。 @Component public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; // Spring應用上下文環境 /* * 實現了ApplicationContextAware 接口,必須實現該方法; *經過傳遞applicationContext參數初始化成員變量applicationContext */ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringContextUtil.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() { return applicationContext; } @SuppressWarnings("unchecked") public static <T> T getBean(String name) throws BeansException { return (T) applicationContext.getBean(name); } } 注意:這個地方使用了Spring的註解@Component,若是不是使用annotation的方式,而是使用xml的方式管理Bean,記得寫入配置文件 <bean id="springContextUtil" class="com.ecdatainfo.util.SpringContextUtil" singleton="true" /> springMvc 獲取applicationContext import org.springframework.web.context.ContextLoader; applicationContext ac =ContextLoader.getCurrentWebApplicationContext(); struts2 獲取applicationContex HttpServletRequest requet = (HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); applicationContext ac =WebApplicationContextUtils.getWebApplicationContext(requet.getServletContext());