No pains, No gain
          走過、路過、千萬別錯過
          posts - 23,comments - 1,trackbacks - 0

          版權(quán)所有,轉(zhuǎn)載請聲明出處 zhyiwww@163.com

          在讀我自己的認(rèn)識之前 , 我們先來看一下 servet 的結(jié)構(gòu)圖 :

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

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

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

          結(jié)論: ServletConfig 由容器實例化

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

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

          ??? public String getInitParameter(String name);

          ??? public Enumeration getInitParameterNames();

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

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

          ?

          ③  我們來看一個 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>

          在此,我們實現(xiàn)對數(shù)據(jù)庫的配置文件的加載。

          當(dāng) Servlet 初始化完成后,我們可以通過

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

          來取得我們的配置的參數(shù)的值。

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

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

          ??? <init-param>

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

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

          ?? ?</init-param>

          我們先取得配置參數(shù):

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

          然后通過

          Class.forName(dbconf).getInstance();

          來實例化對象,就可以實現(xiàn)對數(shù)據(jù)庫的調(diào)用了。

          結(jié)論:在 web.xml 中對 Servlet 的初始化,只能傳遞字符串類型的數(shù)據(jù)

          ④  ServletContext

          ServletContext 是負(fù)責(zé)和 Servlet 的上文和下文交互,上面和 Servlet 容器交互,下面和 Servlet 中的請求和相應(yīng)進(jìn)行交互。

          ServletConfig 中, ???

          public ServletContext getServletContext(); 方法實現(xiàn)取得當(dāng)前 ServletContext 的對象。

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

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

          posted on 2006-10-30 19:54 一縷青煙 閱讀(429) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 杨浦区| 交口县| 辽中县| 商丘市| 安龙县| 红桥区| 安西县| 石首市| 鸡东县| 新干县| 云浮市| 忻城县| 区。| 客服| 将乐县| 沛县| 肥东县| 静安区| 枞阳县| 衡水市| 龙江县| 临西县| 江达县| 申扎县| 安徽省| 繁峙县| 清涧县| 竹溪县| 临城县| 义马市| 玉屏| 建平县| 新邵县| 温宿县| 扶沟县| 眉山市| 辽源市| 武平县| 青州市| 罗山县| 嘉鱼县|