對(duì)Servlet的初始化的理解

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

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

          servlet.png
          以下是我自己的一點(diǎn)淺見(jiàn):

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

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

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

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

          其實(shí),我們?cè)?/span> web.xml 中給 servlet 配置啟動(dòng)參數(shù),在容器對(duì) servlet 進(jìn)行初始化的時(shí)候,會(huì)收集你所配置的參數(shù),記錄在 ServletConfig 的實(shí)現(xiàn)類(lèi)中,所以你才可以通過(guò) ServletConfig 對(duì)象的

          ??? public String getInitParameter(String name);

          ??? public Enumeration getInitParameterNames();

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

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

          ?

          ③  我們來(lái)看一個(gè) 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>

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

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

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

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

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

          其實(shí)我們也可以通過(guò)傳遞一個(gè)類(lèi)的名字串,然后再實(shí)例化。

          ??? <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") ;

          然后通過(guò)

          Class.forName(dbconf).getInstance();

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

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

          ④  ServletContext

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

          ServletConfig 中, ???

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

          你可能要問(wèn), ServletContext 是一個(gè)接口,那么你如何取得他的對(duì)象呢?

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



          posted on 2006-06-12 11:53 nbt 閱讀(314) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Servele&JSP和js

          <2006年6月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          相冊(cè)

          收藏夾

          Java技術(shù)網(wǎng)站

          友情鏈接

          國(guó)內(nèi)一些開(kāi)源網(wǎng)站

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 军事| 蓬溪县| 金沙县| 镇宁| 兴宁市| 灌云县| 曲靖市| 增城市| 手机| 呼伦贝尔市| 云南省| 临泽县| 当雄县| 新疆| 舒兰市| 望江县| 柘城县| 开平市| 张家口市| 内丘县| 拉萨市| 南靖县| 时尚| 西宁市| 三台县| 平陆县| 昭通市| 广宁县| 定州市| 高陵县| 松阳县| 宁南县| 休宁县| 桂林市| 瓮安县| 巴林左旗| 新乡县| 西吉县| 阿拉尔市| 集安市| 临汾市|