<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 小菜毛毛 閱讀(4054) 評論(0)  編輯  收藏 所屬分類: 面試java定時器servlet
    主站蜘蛛池模板: 最近2019中文字幕mv免费看| 国产午夜精品久久久久免费视| 久久九九兔免费精品6| 亚洲视频中文字幕| 久久国产精品成人片免费| 亚洲精品综合一二三区在线| 免费精品一区二区三区第35| 久久香蕉国产线看观看亚洲片| 一级毛片成人免费看免费不卡| 国产aⅴ无码专区亚洲av| 免费看一区二区三区四区| 亚洲高清在线观看| 99热在线免费观看| 精品久久久久久亚洲精品| 一二三四视频在线观看中文版免费| 亚洲AV无码一区二区三区人| 成人免费一区二区无码视频| 亚洲av无码片vr一区二区三区| 国产小视频在线免费| 国产又黄又爽又大的免费视频 | 亚洲性在线看高清h片| 深夜福利在线视频免费| 国产精品亚洲一区二区三区在线| 青青草原1769久久免费播放| 久久亚洲日韩看片无码| 少妇高潮太爽了在线观看免费 | 亚洲视频在线免费| 亚洲精品tv久久久久久久久| 久久精品国产免费观看三人同眠| 中文字幕亚洲男人的天堂网络| 国产免费变态视频网址网站| 二区久久国产乱子伦免费精品| 亚洲视频网站在线观看| 在线日韩av永久免费观看| baoyu116.永久免费视频| 亚洲嫩草影院在线观看| 亚洲成a人在线看天堂无码| 久久中文字幕免费视频| 亚洲经典千人经典日产| 亚洲人成色77777| 成年在线观看网站免费|