zhyiwww
用平实的笔,记录编程路上的点点滴滴………
posts - 536,comments - 394,trackbacks - 0

如果我们在Web应用中想取得*.properties文件中定义的属性,那么我们可以使用下面的方法:

 

 

              ClassLoader loader=Thread.currentThread().getContextClassLoader();

              System.out.println("loader  ---------  "+loader);  

             

// 这一部分是最重要的

             URL  url=loader.getResource("com\\yourcompany\\struts\\ApplicationResources.properties");

              System.out.println("url   ---------------  "+url);

 

              try {

                 InputStream in=url.openStream();

                 Properties p=new Properties();

                 p.load(in);

                 String h=p.getProperty("JAVA_HOME");

                 System.out.println("JAVA_HOME   :  --  "+h);

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

备注:

       这种解决办法可以在 Web 应用程序中调用我们封装好的方法,但是如果我们通过以下办法就不能。

                 BufferedInputStream in1 = (BufferedInputStream) PropertiesReader.class                     .getClassLoader().getResourceAsStream(propPath);

       这种方法只能用于和当前的 ClassLoader 是在同一个 ClassLoader 的情况,不能应用于 Web 应用程序,因为在 Web 应用程序中,我们用到了多个 ClassLoader

       Web 应用中的 ClassLoader 如下:

loader  ---------  WebappClassLoader

  delegate: false

  repositories:

    /WEB-INF/classes/

----------> Parent Classloader:

StandardClassLoader

  delegate: true

  repositories:

    file:D:\jakarta-tomcat-5.0.28\shared\classes\

----------> Parent Classloader:

StandardClassLoader

  delegate: true

  repositories:

    file:D:\jakarta-tomcat-5.0.28\common\classes\

    file:D:\jakarta-tomcat-5.0.28\common\lib\ant-launcher.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\ant.jar

     file:D:\jakarta-tomcat-5.0.28\common\lib\commons-collections-3.1.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\commons-dbcp-1.2.1.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\commons-el.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\commons-pool-1.2.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\jasper-compiler.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\jasper-runtime.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\jsp-api.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\mysql-connector-java-3.1.10-bin.jar

 

    file:D:\jakarta-tomcat-5.0.28\common\lib\naming-common.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\naming-factory.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\naming-java.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\naming-resources.jar

    file:D:\jakarta-tomcat-5.0.28\common\lib\servlet-api.jar

----------> Parent Classloader:

sun.misc.Launcher$AppClassLoader@15601ea

绿色字体的部分,我们可以看到,有两个 ClassLoader:WebappClassLoader StandClassLoader.

当我们调用

loader.getResource("com\\yourcompany\\struts\\ApplicationResources.properties");

的时候,由 WebappClassLoader 来取得了资源的位置:

url ---------------  file:/D:/jakarta-tomcat-5.0.28/webapps/StrutsDemo/WEB-INF

/classes/com/yourcompany/struts/ApplicationResources.properties

  
   (以上是我的个人理解,如有不当,请批评指正)



|----------------------------------------------------------------------------------------|
                           版权声明  版权所有 @zhyiwww
            引用请注明来源 http://www.blogjava.net/zhyiwww   
|----------------------------------------------------------------------------------------|
posted on 2006-10-23 15:08 zhyiwww 阅读(4091) 评论(2)  编辑  收藏

FeedBack:
# re: 在Web应用中如何取得.Properties文件定义的属性
2006-10-24 15:41 | itVincent
关于你的问题,写了一下我的一些个人见解http://www.blogjava.net/itvincent/archive/2006/10/24/76990.html  回复  更多评论
  
# re: 在Web应用中如何取得.Properties文件定义的属性
2006-10-24 21:05 | zhyiwww
我又作了一点测试,写了一点总结.详细见
http://www.blogjava.net/zhyiwww/archive/2006/10/24/77070.html  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: