上下文獲取

一、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());
相關文章
相關標籤/搜索