回覆列表
  • 1 # ikdlr29759

    1. 啟動一個WEB專案的時候,容器(如:Tomcat)會去讀它的配置檔案web.xml.讀兩個節點: <listener></listener> 和 <context-param></context-param>

    2.緊接著,容器建立一個ServletContext(上下文),這個WEB專案所有部分都將共享這個上下文.

    3.容器將<context-param></context-param>轉化為鍵值對,並交給ServletContext.

    4.容器建立<listener></listener>中的類例項,即建立監聽.

    5.在監聽中會有contextInitialized(ServletContextEvent args)初始化方法,在這個方法中獲得ServletContext = ServletContextEvent.getServletContext(); context-param的值 = ServletContext.getInitParameter("context-param的鍵");

    6.得到這個context-param的值之後,你就可以做一些操作了.注意,這個時候你的WEB專案還沒有完全啟動完成.這個動作會比所有的Servlet都要早. 換句話說,這個時候,你對<context-param>中的鍵值做的操作,將在你的WEB專案完全啟動之前被執行.

    7.舉例.你可能想在專案啟動之前就開啟資料庫. 那麼這裡就可以在<context-param>中設定資料庫的連線方式,在監聽類中初始化資料庫的連線 (1)application範圍內的引數,存放在servletcontext中 <context-param> <param-name>context/param</param-name> <param-value>avalible during application</param-value> </context-param> 在servlet中透過getServletContext().getInitParameter("context/param")獲得 (2)servlet範圍內的引數,在servlet中透過this.getInitParameter("param1")獲得 <servlet> <servlet-name>MainServlet</servlet-name> <servlet-class>com.wes.controller.MainServlet</servlet-class> <init-param> <param-name>param1</param-name> <param-value>avalible in servlet init()</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> 當值為0或者大於0時,表示容器在應用啟動時就載入這個servlet 當是一個負數時或者沒有指定時,則指示容器在該servlet被選擇時才載入 載入順序:ServletContext -> listener -> filter -> servlet

  • 中秋節和大豐收的關聯?
  • 關於菊花的詩歌(1首)?