servlet內建物件的作用範圍及訪問方法
(2006-12-29 20:23:59)
那麼,servletconfig引數和servletcontext引數到底應該如何使用,如何取得?
一般來說,對整個應用的配置,為了不使用「硬編碼」,應該配置為servletcontext引數,比如字符集設定。
charset
gb2312
.................
而如果只有乙個特定的servlet要設定的引數,其它servlet不能共享,應該配置為servletconfig引數,如乙個讀取附件的servlet要用到絕對目錄,而別的servlet不會用到:
getatt
mail.getattservlet
abspath
/usr/mail/ax/axman/maildir/
不用說,因為在標籤中已經指定了name和class,也就是說只有mail.getattservlet這個servlet中才能取到path,而別的servlet是不能取到的。
那麼如何訪問這兩個物件的引數呢?
一、訪問servletconfig物件的引數的方法 要訪問servletconfig物件的引數,首先要取得servletconfig物件,然後呼叫它的getinitparameter();方法即可。要訪問servletconfig物件,jsp中直接使用config內建物件,但因為你的jsp編譯後的servlet一般不會被加到web.xml中的,所以一般不會通過jsp來取對本jsp編譯後的servlet的配置引數。在servlet中要得到servletconfig物件有兩種方法:
1、在inii()方法中取到:通過init的過載方法傳遞
然後在下面的方法中就可以訪問config物件。但要注意,為了確保能從構造方法中到到當前servlet的
config物件,應該呼叫父類的構造方法:
2、通過getservletconfig()方法直接到時,這樣做的好處是不必調手工傳遞屬性,想在任何時候都可以得到。
還有第三種方法,要自己實現一些介面,這裡作為一般討論就不介紹了。
二、訪問servletcontext物件的引數的方法 要訪問servletcontext物件的引數,首先要取得servletcontext物件,然後呼叫此物件的getinitparameter()方法就可以獲取它的引數。然而要取得servletcontext物件,只要從現有的servletconfig物件getservletcontext()就可以了。
思考: 按說:servletcontext物件的作用域比servletconfig作用域大,為什麼要從servletconfig中得到servletcontext物件呢?我個人認為:容器儲存了很多個servletcontext物件,請求時容器到底取哪乙個給你呢?那就取其中包含servletconfig資訊的那個給你,就是說取servletconfig物件的父級物件。就好象httpsession要從requset中取得一樣,就是取那個包含當前requese物件的session物件給你,這只是我的個人想法,還沒有來得及看具體實現。反正就這麼用吧。
jsp內建物件的作用範圍
內建物件的作用範圍是指每個內建物件的某個例項在多長時間和多大的範圍中有效,即在什麼樣的範圍內可以有效地訪問同乙個物件例項。該範圍是從伺服器開始執行到伺服器關閉。2 session的作用範圍 該範圍是從客戶端與伺服器連線開始,到連線中斷為止。3 request的作用範圍 該範圍是從乙個jsp頁面向另乙...
JSP內建物件的作用域
1 在當前介面,主要 1獲取到的物件有 2345 6789 1011 12test.jsp 執行結果 說明這四個物件在當前介面都是有效的 2 下面我們點選test.jsp鏈結,跳轉介面 test.jsp介面 如下 1獲取到的物件有 23 45檢視執行結果 通過結果發現,pagecontext,req...
JSP內建物件及其作用
idea 1 httpservletrequest類的request物件 作用 代表請求物件,主要用於接受客戶端通過http協議連線傳輸到伺服器端的資料。2 httpservletresponse類的respone物件 作用 代表響應物件,主要用於向客戶端傳送資料 3 jspwriter類的out物...