zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0

          版權所有,轉載請聲明出處 zhyiwww@163.com

          在讀我自己的認識之前 , 我們先來看一下 servet 的結構圖 :

          servlet.png
          以下是我自己的一點淺見:

          ①  Servlet 在初始化的時候 , 是通過 init(ServletConfig? config) init() 來執行的。

          ServletConfig 是一個接口,它怎樣傳遞給他一格對象來進行初始化呢?其實,是這個對象是由 servlet 容器來實例化的,由容器產生一格 ServletConfig 的實現類的對象,然后傳遞給 Servlet

          結論: ServletConfig 由容器實例化

          ②  我們有些時候可能在 Servlet 初始化時給它一些固定的配置參數,那么這些參數是怎樣傳遞到 Servlet 呢?

          其實,我們在 web.xml 中給 servlet 配置啟動參數,在容器對 servlet 進行初始化的時候,會收集你所配置的參數,記錄在 ServletConfig 的實現類中,所以你才可以通過 ServletConfig 對象的

          ??? public String getInitParameter(String name);

          ??? public Enumeration getInitParameterNames();

          方法來取得你已經配置好的參數,也就是說,你對 servlet 的配置都已經記錄在 ServletConfig 對象中了。

          結論:你對 Servlet 的配置,在 Servlet 的初始化時都由容器來收集并且記錄到 ServletConfig 的實現類中。

          ?

          ③  我們來看一個 Servlet 的配置

          ? <servlet>

          ??? <servlet-name>index</servlet-name>

          ??? <servlet-class>org.zy.pro.sw.servlet.IndexServlet</servlet-class>

          ??? <init-param>

          ????? <param-name>dbconfig</param-name>

          ????? <param-value>/WEB-INF/dbconfig.xml</param-value>

          ??? </init-param>

          ? </servlet>

          在此,我們實現對數據庫的配置文件的加載。

          Servlet 初始化完成后,我們可以通過

          String? dbconf=this.getServletConfig().getInitParameter("dbconfig")

          來取得我們的配置的參數的值。

          但是,我們僅能得到一個配置的字符串。之后我們可以通過配置文件取得我們的數據庫的配置參數,然后對數據庫進行初始化。

          其實我們也可以通過傳遞一個類的名字串,然后再實例化。

          ??? <init-param>

          ????? <param-name>dbconfig</param-name>

          ????? <param-value>org.zy.util.db.DBUtil</param-value>

          ?? ?</init-param>

          我們先取得配置參數:

          String? dbconf=this.getServletConfig().getInitParameter("dbconfig")

          然后通過

          Class.forName(dbconf).getInstance();

          來實例化對象,就可以實現對數據庫的調用了。

          結論:在 web.xml 中對 Servlet 的初始化,只能傳遞字符串類型的數據

          ④  ServletContext

          ServletContext 是負責和 Servlet 的上文和下文交互,上面和 Servlet 容器交互,下面和 Servlet 中的請求和相應進行交互。

          ServletConfig 中, ???

          public ServletContext getServletContext(); 方法實現取得當前 ServletContext 的對象。

          你可能要問, ServletContext 是一個接口,那么你如何取得他的對象呢?

          其實這個問題和 ServletConfig 相同,都是在 Servlet 進行初始化的時候產生的對象,是由容器來初始化的。

          ?

          ?



          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2006-04-05 11:34 zhyiwww 閱讀(5153) 評論(6)  編輯  收藏 所屬分類: j2ee

          FeedBack:
          # re: 對Servlet的初始化的理解
          2006-04-06 11:25 | bilang
          非常好  回復  更多評論
            
          # re: 對Servlet的初始化的理解
          2006-09-26 16:28 | 小王
          哈哈  回復  更多評論
            
          # re: 對Servlet的初始化的理解
          2008-02-15 15:29 | 海淀
          很有幫助  回復  更多評論
            
          # re: 對Servlet的初始化的理解[未登錄]
          2008-04-10 09:17 |
          我現在正在學servlet,不過一個小小的程序都不能弄好.
          能幫一下我么?
          Q735413295
            回復  更多評論
            
          # re: 對Servlet的初始化的理解
          2008-09-24 20:31 | 上帝禁區
          ServletConfig 的實現類為何物?從圖上看不就四GenericServlet嗎?  回復  更多評論
            
          # re: 對Servlet的初始化的理解
          2008-09-24 20:38 | 上帝禁區
          其實這個問題和 ServletConfig 相同,都是在 Servlet 進行初始化的時候產生的對象,是由容器來初始化的。

          能再深入點嗎?  回復  更多評論
            
          主站蜘蛛池模板: 巍山| 丹巴县| 呼伦贝尔市| 永定县| 古田县| 当雄县| 西青区| 富阳市| 杭州市| 盐源县| 锦州市| 东宁县| 沂南县| 蓬莱市| 潼南县| 平舆县| 化州市| 漳平市| 土默特右旗| 界首市| 隆尧县| 临猗县| 台江县| 汉中市| 将乐县| 大厂| 安阳县| 绥中县| 兴文县| 绥德县| 石棉县| 合水县| 建阳市| 中方县| 凤城市| 无锡市| 封开县| 荥阳市| 洛隆县| 称多县| 淅川县|