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

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

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

    小菜毛毛技術分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks
    http://blog.csdn.net/wjp553650958/archive/2009/08/30/4499540.aspx
    讀取容器配置參數---context-param和init-param區別

    web.xml里面可以定義兩種參數:
    (1)application范圍內的參數,存放在servletcontext中,在web.xml中配置如下:  <context-param>
               <param-name>context/param</param-name>
               <param-value>avalible during application</param-value>

               <param-name>name1</param-name>
               <param-value>value1</param-value>
      </context-param>


    (2)servlet范圍內的參數,只能在servlet的init()方法中取得,在web.xml中配置如下:

     <servlet>
        <servlet-name>MainServlet</servlet-name>
        <servlet-class>com.wes.controller.MainServlet</servlet-class>
        <init-param>
           <param-name>param1</param-name>
           <param-value>avalible in servlet init()</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
     </servlet>


    在servlet中可以通過代碼分別取用:

    package com.wes.controller;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;

    public class MainServlet extends HttpServlet ...{

        public MainServlet() ...{
            super();
         }
        public void init() throws ServletException ...{
             System.out.println("下面的兩個參數param1是在servlet中存放的");
             System.out.println(this.getInitParameter("param1"));
             System.out.println("下面的參數是存放在servletcontext中的");
             System.out.println(getServletContext().getInitParameter("context/param"));
          }
    }

    第 一種參數在servlet里面可以通過getServletContext().getInitParameter("context/param")得 到?(在servlet的init()方法中通過this.getInitParameter("param1")取得)


    第二種參數只能在servlet的init()方法中通過this.getInitParameter("param1")取得

    ---------------------------------------------------------------------


    ServletContextListener實現讀取web.xml中context-param信息      2009年03月27日 星期五 22:37
      用部署文件來存儲配置參數在Java中是一種很流行的做法。

    配置參數一般存放在context-param元素中,每一個context-param元素代表了一個鍵值對。

    我 們可以通過實現ServletContextListener接口讀取該鍵值對中的值,在web應用程序初始化的時候,調用 ServletContextListener的contextInitialized()方法,所以我們我們可以重寫該方法,實現讀取操作。可以這樣實 現:

    public class AppListener implements ServletContextListener {


    public void contextInitialized(ServletContextEvent sce) {
       try {
              
                MyConfig config = new MyConfig();//存放配置信息,用Map實現
                Enumeration parameters =  sce.getServletContext().getInitParameterNames();
               
                while(parameters.hasMoreElements()){
                   String name =  (String) parameters.nextElement();
                   config.addKeyTValue(name, sce.getServletContext().getInitParameter(name));
                } 

            //相應的鍵值對存到map中
              config.addKeyValue(parameter, sc.getInitParameter(parameter));
        }
       } catch(Exception e) {
        System.out.println("com.shou error:" + e.getMessage());
       }
    }

    public void contextDestroyed(ServletContextEvent arg0) {

    }
    }

     MyConfig類:(Singleton Config)
    package com.myapp;

    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;

    /**
     *
     * @author Administrator
     */

    public class MyConfig{
        public static MyConfig myconfig;
       
        public static HashMap config = new HashMap();

        public static HashMap getConfig() {
            return config;
        }
       
        public static MyConfig getInstance(){
            if(myconfig==null){
                myconfig = new MyConfig();
               
            }
            return myconfig;
        }
        public static void setConfig(HashMap config) {
           
            MyConfig.config = config;
        }

         public HashMap addKeyTValue(String name,String value){
               this.config.put(name, value);
               return this.config;
              
         }
    }

    接著,必須在web.xml中配置相應的監聽類,才能在初始化的時候,自動調用該方法。如:

    <listener>
    <listener-class>com.myapp.MyListener</listener-class>
    </listener>

    這樣就可以在任何一個JSP頁面,通過EL表達式或JSTL讀到context-param中的內容。

    有的網友說在web.xml內定義<listener>元素時得注意下列兩點:
    <listener>元素必須出現在任何Context起始參數(由<context-param>元素所定義)之后。
    <listener>元素必須出現在任何Servlet實體(由<servlet>元素所定義)之前。

    但是我在TOMCAT5.5 + J2EE 5下配置web.xml并沒有按照上述的嚴格限制也能成功讀取信息。

    難道是版本的問題嗎。

    在Struts 1.X下,通過一個自定義的Singleton Config類,可以讓web.xml中的配置參數在整個應用程序里都能被共享。


    posted on 2010-09-30 16:38 小菜毛毛 閱讀(4052) 評論(0)  編輯  收藏 所屬分類: 面試java定時器servlet
    主站蜘蛛池模板: 一级成人a免费视频| 成人亚洲国产精品久久| 在线人成免费视频69国产| 在线观看亚洲天天一三视| 一级一级毛片免费播放| 国产日韩成人亚洲丁香婷婷| 9久久免费国产精品特黄| 亚洲综合区小说区激情区| 黄视频在线观看免费| 国产亚洲福利精品一区| 日韩免费在线观看视频| 亚洲av永久无码精品古装片| 99热免费在线观看| 亚洲专区中文字幕| 国产成人免费网站| 亚洲AV永久无码精品网站在线观看| 国产精品色午夜免费视频| 成年大片免费视频播放一级| 亚洲日本一区二区三区在线| 91av视频免费在线观看| 亚洲精品无码专区久久| 国产亚洲一区区二区在线| 免费国产污网站在线观看15| 国产成人精品亚洲2020| av无码东京热亚洲男人的天堂| 伊人免费在线观看高清版| 91亚洲va在线天线va天堂va国产| 永久在线观看www免费视频| 亚洲国产精品成人午夜在线观看 | 手机在线毛片免费播放| 精品免费AV一区二区三区| 亚洲综合日韩久久成人AV| 久久成人国产精品免费软件| 亚洲精品GV天堂无码男同| 亚洲日韩一页精品发布| 51视频精品全部免费最新| 国产成人亚洲精品电影| 亚洲av无码不卡| 日本一道本高清免费| 精品视频一区二区三区免费| 天堂亚洲国产中文在线|