<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
    主站蜘蛛池模板: 久久精品免费大片国产大片| 亚洲色精品三区二区一区| 美女被免费网站视频在线| 日韩视频免费一区二区三区| 精品亚洲AV无码一区二区 | 曰批全过程免费视频免费看| 免费看的成人yellow视频| 亚洲色大成网站www永久网站| 久久久久国色AV免费看图片| 中文字幕在线免费观看| 亚洲最大的成网4438| 久久久久高潮毛片免费全部播放| 久久久亚洲欧洲日产国码aⅴ| 18禁美女裸体免费网站| 亚洲婷婷在线视频| 成年性生交大片免费看| 精品视频免费在线| 亚洲国产精品无码久久一区二区| 一级毛片全部免费播放| 国产成人精品亚洲日本在线| 日本一区二区三区日本免费| 一区二区三区免费电影| 久久久久亚洲AV成人片| 女性无套免费网站在线看| 添bbb免费观看高清视频| 亚洲精品国产品国语在线| 99久热只有精品视频免费观看17| 亚洲人成片在线观看| 免费a在线观看播放| 国产亚洲免费的视频看| 亚洲综合久久精品无码色欲 | 在线A亚洲老鸭窝天堂| 99re6在线精品视频免费播放 | 久久精品国产亚洲AV忘忧草18| 青草草在线视频永久免费| 国产99久久久国产精免费| 亚洲最大中文字幕| 亚洲片一区二区三区| **一级一级毛片免费观看| 色噜噜的亚洲男人的天堂| 亚洲AV本道一区二区三区四区|