方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。因为是用ServletContext读取文件路径,所以配置文件可以放入在web-info的classes目录中,也可以在应用层级及web-info的目录中。文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在web-info及webroot下面等。因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xml和properties。缺点:不能在servlet外面应用读取配置信息。

具体举例如下:

//ServletContext.getRealPath(name)读取路径

privatevoidtest1(HttpServletRequest request, HttpServletResponseresponse)

throwsServletException,IOException {

//response.setContentType("text/html;charset=utf-8");

String path = "/WEB-INF/jdbc_connection.properties";//读取WEB-INF中的配置文件

String realPath = getServletContext().getRealPath(path);//getServletContext()相当于http://localhost/demo05

//所以后面的path只需要以应用demo/开头具体的部署目录路径即可,如上面的/web-in…

System.out.println(realPath);

InputStreamReader reader = newInputStreamReader(newFileInputStream(realPath),"utf-8");

Properties props = newProperties();

props.load(reader); //load个人建议还是用Reader来读,因为reader体系中有个InputStreamReader可以指定编码

String jdbcConValue = props.getProperty("jdbc_con");

System.out.println(jdbcConValue);

System.out.println("加载src包下的资源------------------------");

path = "/WEB-INF/classes/com/test/servlet/jdbc_connection.properties";//读取WEB-INF中的配置文件

realPath=getServletContext().getRealPath(path);

System.out.println(realPath);

reader = newInputStreamReader(newFileInputStream(realPath),"utf-8");

props.load(reader); //load个人建议还是用Reader来读,因为reader体系中有个InputStreamReader可以指定编码

jdbcConValue = props.getProperty("jdbc_con");

System.out.println("second::"+jdbcConValue);

}

方式二:采用ResourceBundle类读取配置信息,此种方式的优点是:可以以完全限定类名的方式加载资源后,直接的读取出来,且可以在非Web应用中读取资源文件。缺点:只能加载类classes下面的资源文件且只能读取.properties文件。若资源文件的编码是utf-8等其它的非is0-8859-1的编码时,需要将读取出来的value先进行getBytes(“iso-8859-1”)编码得到原文,而用newString(bs[],”utf-8”)进行解码。

具体举例如下:

//ResourceBundler读取资源

privatevoidtest2(HttpServletRequest request, HttpServletResponseresponse)throwsServletException, IOException {

//读取src下面包的配置文件,似乎没有什么好办法可以读取Bundle中是utf-8编码的资源文件

ResourceBundlerb = ResourceBundle.getBundle("com.test.servlet.jdbc_connection");

String jdbcConValue = rb.getString("jdbc_con");

System.out.println(jdbcConValue);//呵呵,搞定了。资源文件中是utf-8编码的,但是ResourceBundler默认是按iso-8859-1解码的

byte[] buf = jdbcConValue.getBytes("iso-8859-1");//所以读取到了,要用iso-8859-1进行解码得到原本的byte后,再用utf-8进行编码

System.out.println(newString(buf,"utf-8"));//这里再用utf-8进行解码就Ok。.

}

方式三:采用ClassLoader方式进行读取配置信息,此种方式的优点是:可以在非Web应用中读取配置资源信息,可以读取任意的资源文件信息。缺点:只能加载类classes下面的资源文件。

具体举例如下:

//ClassLoader读取资源

privatevoidtest3(HttpServletRequest request, HttpServletResponseresponse)throwsServletException, IOException {

ClassLoader cl = ServletReadConfig.class.getClassLoader();

InputStream in = cl.getResourceAsStream("com/test/servlet/jdbc_connection.properties");

Properties props = newProperties();

props.load(in); //load个人建议还是用Reader来读,因为reader体系中有个InputStreamReader可以指定编码

String jdbcConValue = props.getProperty("jdbc_con");

byte[] resoucreBytes = jdbcConValue.getBytes("iso-8859-1");

System.out.println(newString(resoucreBytes,"utf-8"));

System.out.println("----------ClassLoader读取资源读取,用Reader来传递进Properties---------------");

InputStream in2 = cl.getResourceAsStream("com/test/servlet/jdbc_connection.properties");

Reader reader = newInputStreamReader(in2,"utf-8");//直接用转换流来搞定

Properties props2 = newProperties();

props2.load(reader);

jdbcConValue = props2.getProperty("jdbc_con");

System.out.println(jdbcConValue);

}

java读取配置文件方法_java 三种读取配置文件的方式相关推荐

  1. java 工厂模式实现_Java三种实现工厂模式的方法

    学习工厂模式的时候就曾思考过这么写的好处,再手动敲了代码后发现自己更糊涂了,后来搜索例子和各种文案才有点概念,特此记录一下个人的理解 工厂模式的好处: 1.减少了重复代码 2.让创建对象于使用方法分离 ...

  2. java go md5_Go语言中三种不同md5计算方式的性能比较

    前言 本文主要介绍的是三种不同的 md5 计算方式,其实区别是读文件的不同,也就是磁盘 I/O, 所以也可以举一反三用在网络 I/O 上.下面来一起看看吧. ReadFile 先看第一种, 简单粗暴: ...

  3. python怎么读取txt文件-Python三种读取txt文件方式

    # -*- coding: utf-8 -*- file =open('/Users/april_chou/Desktop/WorkSpace/Selenium/seleniumTest/test.t ...

  4. php读取文件内容不全,php读取文件内容的三种方法

    //**************第一种读取方式***************************** 代码如下: header("content-type:text/html;chars ...

  5. python一次性读取整个文件-python逐行读取文件内容的三种方法

    一.使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. 二.需要导入import os 三.下面是逐行读取文件内容的三种方法: ...

  6. php远程读取几行文件,PHP读取远程文件的三种方法

    PHP读取远程文件的三种方法 (2008-08-01 14:29:55) 标签: php 下载远程文件 it HP读取远程文件的几种方法,做采集的第一步就是读取远程文件- 1.file_get_con ...

  7. python读取图像数据流_浅谈TensorFlow中读取图像数据的三种方式

    本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片.大量图片,和TFRecorder读取方式.并且还补充了功能相近的tf函数. 1.处理单张图片 我们训练完模型之后,常常要用图片 ...

  8. TensorFlow中读取图像数据的三种方式(转)

    附加一个链接关于DatasetAPI:https://zhuanlan.zhihu.com/p/30751039 本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片.大量图片,和 ...

  9. HTML读取xml文件的三种办法

    刚开始学这里的时候有点懵,以前没学过.但是学安卓动画(Animation)的时候接触过xml文件,总体来说不难. 一般来说xml文件用来储存数据,然后html读取它,主要介绍三种读取方式 利用CSS读 ...

  10. java map集合遍历方法,Java的Map集合的三种遍历方法

    集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ 1. package com.myTest.MapText; import java.util.Collection; i ...

最新文章

  1. MySQL中的子查询
  2. Python隐藏属性
  3. 内存泄漏了,咋回事?
  4. Linux中内联函数,Windows 7上的内联函数的doParallel问题(适用于Linux)
  5. web前端常用代码于面试等资源
  6. 路由器mysql密码重置密码_【验证】mysql root密码恢复
  7. 【C语言】求s(n)=a+aa+aaa+...+aa...a的值
  8. javascript基础修炼(11)——DOM-DIFF的实现
  9. 局域网访问提示无法访问检查拼写_关于海康视频监控异地访问设置一些细节的说明...
  10. 设计模式12_外观模式
  11. [转]查看linux服务器硬盘IO读写负载
  12. Win32汇编——文件操作
  13. 天勤计算机考研高分笔记(一)绪论1数据结构
  14. linux dev/zero,/dev/zero是什么意思
  15. C语言lcd实现奥运五环编程,如何用C语言程序来设计奥运五环图案
  16. mariadb审计插件
  17. Java imageio底层_java - Java中的ImageIO问题 - 堆栈内存溢出
  18. ie6,ie7常见兼容性问题总结
  19. 专访:台湾这家设计公司如何hold住甲方爸爸?
  20. AdGuard 2.5.1.913 nightly 广告拦截工具

热门文章

  1. Visio 2003 Professional 安装序列号
  2. 最强大脑-高效记忆方法
  3. MSDN2008中文版下载地址
  4. 股票分时数据HTML,股票历史分时数据
  5. 3500份课程课后习题答案与大家分享~~
  6. cocos2d-x学习资源整理(持续更新)
  7. cs231n 作业环境搭建
  8. 你们要的Android计算器,今天它来了~
  9. vbs实现恶搞无限弹窗,复制粘贴就能用
  10. Hadoop快速入门——第一章、认识Hadoop与创建伪分布式模式