<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    飛艷小屋

    程序--人生--哲學(xué)___________________歡迎艷兒的加入

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      52 Posts :: 175 Stories :: 107 Comments :: 0 Trackbacks
    關(guān)于Config參數(shù)和Context參數(shù)的訪問

    雖然在論壇中已經(jīng)回答過不止一次,但現(xiàn)在看來,真正掌握這兩個(gè)參數(shù)的區(qū)別的人5%都不到.
    所以有必要專門寫出來,供大家學(xué)習(xí).

    我們先來回顧一下各種內(nèi)置對象的作用范圍

    HttpServletRequest,HttpServletResponse:這兩個(gè)屬性的作用范圍最小。
    時(shí)間上:只是本身請求和應(yīng)答完成就失效,當(dāng)然轉(zhuǎn)發(fā)是把當(dāng)前的request對象取出來傳給另一
    ??????個(gè)資源,其實(shí)本身的request對象還是只生存到本次請求結(jié)束,response也同樣。
    空間上:只能發(fā)送請求的客戶端有效。

    HttpSession:一次連結(jié)到客戶端關(guān)閉,時(shí)間作用范圍比上面兩個(gè)大,空間任用范圍相同。

    ServletConfig:從一個(gè)servlet被實(shí)例化后,對任何客戶端在任何時(shí)候訪問有效,但僅對本servlet
    有效,一個(gè)servlet的ServletConfig對象不能被另一個(gè)servlet訪問。

    ServletContext:對任何servlet,任何人在任何時(shí)間都有效,這才是真正全局的對象。

    那么,ServletConfig參數(shù)和ServletContext參數(shù)到底應(yīng)該如何使用,如何取得?

    一般來說,對整個(gè)應(yīng)用的配置,為了不使用“硬編碼”,應(yīng)該配置為ServletContext參數(shù),比如字
    符集設(shè)定。
    <web-app>
    .................
    <init-param>
    <param-name>charset</param-name>?
    <param-value>GB2312</param-value>?
    </init-param>
    .................
    </web-app>
    注意以上格式只是2。0以后的標(biāo)準(zhǔn)格式,舊容器(引擎)采用服務(wù)商自己的格式配置。注意它的
    父元素應(yīng)該是<web-app>也就是說它是對一個(gè)應(yīng)用作用的。

    而如果只有一個(gè)特定的servlet要設(shè)定的參數(shù),其它servlet不能共享,應(yīng)該配置為ServletConfig
    參數(shù),如一個(gè)讀取附件的servlet要用到絕對目錄,而別的servlet不會用到:
    <servlet>
    ????????<servlet-name>GetAtt</servlet-name>
    <servlet-class>mail.GetAttServlet</servlet-class>
    <init-param>
    <param-name>absPath</param-name>?
    <param-value>/usr/mail/ax/axman/Maildir/</param-value>?
    </init-param>
    </servlet>
    不用說,因?yàn)樵?lt;servlet>標(biāo)簽中已經(jīng)指定了name和class,也就是說只有mail.GetAttServlet這個(gè)
    servlet中才能取到path,而別的Servlet是不能取到的。

    那么如何訪問這兩個(gè)對象的參數(shù)呢?
    訪問ServletConfig參數(shù):
    首先要取得ServletConfig對象,然后調(diào)用它的getInitParameter();方法。要訪問
    ServletConfig對象,jsp中直接使用config內(nèi)置對象,但因?yàn)槟愕腏SP編譯后的servlet一般不會被
    加到web.xml中的,所以一般不會通過jsp來取對本JSP編譯后的servlet的配置參數(shù),那么在servlet
    中要得到ServletConfig對象有兩種方法:

    在inii()方法中取到:通過init的重載方法傳遞

    .....
    public?class?Test?extends?HttpServlet?
    {
    ServletConfig?config;
    public?void?init(ServletConfig?config)?throws?ServletException?{
    this.config?=?config;
    }
    ..................
    }
    然后在下面的方法中就可以訪問config對象。但要注意,為了確保能從構(gòu)造方法中到到當(dāng)前servlet的
    config對象,應(yīng)該調(diào)用父類的構(gòu)造方法:
    .....
    public?class?Test?extends?HttpServlet?
    {
    ServletConfig?config;
    public?void?init(ServletConfig?config)?throws?ServletException?{
    super.init(config);
    this.config?=?config;
    }
    ..................
    }

    通過getServletConfig()方法直接到時(shí),這樣做的好處是不必調(diào)手工傳遞屬性,想在任何時(shí)候都可
    以得到。

    還有第三種方法,要自己實(shí)現(xiàn)一些接口,這里作為一般討論就不介紹了。

    要訪問ServletContext對象,只要從現(xiàn)有的ServletConfig對象getServletContext()就可以了,然后
    調(diào)用它的getInitParameter()方法就可以獲取它的參數(shù)。

    按說:ServletContext對象的作用域比ServletConfig作用域大,為什么要從ServletConfig中到得
    ServletContext對象呢?我個(gè)人認(rèn)為:容器保存了很多個(gè)ServletContext對象,請求時(shí)容器到底取哪一個(gè)
    給你呢?那就取其中包含ServletConfig信息的那個(gè)給你,就是說取ServletConfig對象的父級對象。就好
    象HttpSession要從requset中取得一樣,就是取那個(gè)包含當(dāng)前requese對象的session對象給你,這只是我
    的個(gè)人想法,還沒有來得及看具體實(shí)現(xiàn)。反正就這么用吧。
    posted on 2006-03-20 13:05 天外飛仙 閱讀(277) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 亚洲免费黄色网址| 精品久久久久久国产免费了| 国产大片51精品免费观看| 免费一级毛suv好看的国产网站| 国产亚洲av片在线观看18女人| 久久国产乱子免费精品| 国产精品亚洲综合久久| 4338×亚洲全国最大色成网站| 免费A级毛片av无码| 亚洲AV无码AV日韩AV网站| 亚洲日韩在线第一页| 亚洲黄色免费网址| 国产亚洲日韩在线a不卡| 水蜜桃亚洲一二三四在线| 成年女人免费v片| baoyu116.永久免费视频| 亚洲国产精品白丝在线观看| 免费观看日本污污ww网站一区| 全免费a级毛片免费看| 亚洲AV无码片一区二区三区| 亚洲A∨无码一区二区三区| 四虎永久精品免费观看| 色欲A∨无码蜜臀AV免费播| 理论秋霞在线看免费| 亚洲理论片在线观看| 亚洲国产小视频精品久久久三级| 久久国产免费福利永久| 一级免费黄色大片| 亚洲人成人无码.www石榴| 青青草原精品国产亚洲av| 亚洲成av人片在线观看天堂无码 | 日韩亚洲国产高清免费视频| 一个人看的免费视频www在线高清动漫 | 男人天堂2018亚洲男人天堂| 亚洲av中文无码乱人伦在线r▽ | 国产成人亚洲精品青草天美| 免费国产精品视频| AA免费观看的1000部电影| 91久久青青草原线免费| 国产免费伦精品一区二区三区| 国产精品久久久久久亚洲影视|