版權(quán)所有,轉(zhuǎn)載請(qǐng)聲明出處
zhyiwww@163.com
在讀我自己的認(rèn)識(shí)之前
,
我們先來(lái)看一下
servet
的結(jié)構(gòu)圖
:
以下是我自己的一點(diǎ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)類的對(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)類中,所以你才可以通過(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)看一個(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è)類的名字串,然后再實(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
的初始化,只能傳遞字符串類型的數(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ì)象。
你可能要問,
ServletContext
是一個(gè)接口,那么你如何取得他的對(duì)象呢?
其實(shí)這個(gè)問題和
ServletConfig
相同,都是在
Servlet
進(jìn)行初始化的時(shí)候產(chǎn)生的對(duì)象,是由容器來(lái)初始化的。
?
?
|----------------------------------------------------------------------------------------|
版權(quán)聲明 版權(quán)所有 @zhyiwww
引用請(qǐng)注明來(lái)源 http://www.tkk7.com/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2006-04-05 11:34
zhyiwww 閱讀(5153)
評(píng)論(6) 編輯 收藏 所屬分類:
j2ee