Servlet读取文件的最好的方式

在java web 开发的时候不可避免的会读取文本信息,但是方式不同,所付出的代价也是不一样的,今天学到了一个比较好的实用性的技巧,拿来与大家分享一下。

读取属性配置文件


之所以说成是读取属性(properties)文件,是因为它在开发中使用的频率较高,而且也不像读取xml文件那样的复杂。下面请看


先是目录结构:
目录结构


下面看一看目标文件的内容吧db.properties文件:

driver = com.mysqy.jdbc.Driver
url = jdbc:mysql://localhost:3306
user = root
password = mysql
  • 常规方式

FileInputStream  fis = new FileInputStream(new File("db.properties"));System.out.println(fis);

小结:
采用这个方式会很繁琐,而且对于文件的操作也不是很方便,我们需要手动的处理很多信息。

  • java web 方式

response.getWriter().append("Served at: ").append(request.getContextPath());FileInputStream fis = (FileInputStream) this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");Properties properties = new Properties();properties.load(fis);String url = properties.getProperty("url");System.out.println(url);

运行结果:

jdbc:mysql://localhost:3306

小结:

  1. 采用这个方式是利用了在web项目中ServletContext这个类的共享信息的特征
  2. 读取文件的目录是相对于这个项目本身的相对的路径,这样显得更加的灵活
  3. 使用Properties类进行对属性值的获取,其底层是map的键值对的实现原理
  4. 使用属性配置文件的好处在于,在修改代码的时候只需要修改文件中的信息即可。代码的可维护性大大的得到了增强

  • 使用类装载器进行读取类路径下文件信息(src路径下的配置文件) 的方法

ClassLoader loader = MyServlet.class.getClassLoader();InputStream is = (InputStream) loader.getResourceAsStream("db.properties");Properties properties = new Properties();properties.load(is);String password = properties.getProperty("password");System.out.println("java web项目获得的类路径下的文件的属性配置文件信息是:"+ password);

程序运行结果是:

java web项目获得的类路径下的文件的属性配置文件信息是:mysql


这样也可以达到相同读取文件信息的效果!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Form.php 日期表单,Bootstrap日期和时间表单组件使用方法

提取其中的主要文件js/bootstrap-datetimepicker.js和css/bootstrap-datetimepicker.min.css1.引入bootstrap.min.css,因為其樣式包含在此文件中2.引入jquery.js,因為bootstrap是依賴於jquery的3.引入bootstrap.min.js以上是必備內容4.引入日期組件的css…

amp; 的意思

&amp是什么意思? <bean> <property name"jdbcUrl" value"jdbc:mysql://127.0.0.1:3306/spring?useUnicodetrue&amp;characterEncodingutf8"> </property> </bean> 这里面的&amp;是什么意思? 解答&#xff1a; &…

Bootstrap 排版

2019独角兽企业重金招聘Python工程师标准>>> Bootstrap 使用 Helvetica Neue、 Helvetica、 Arial 和 sans-serif 作为其默认的字体栈。 使用 Bootstrap 的排版特性&#xff0c;您可以创建标题、段落、列表及其他内联元素。 标题 Bootstrap 中定义了所有的 HTML 标题…

基于小波包的图像压缩及matlab实现,基于小波包的图像压缩及matlab实现精选.doc...

基于小波包的图像压缩及matlab实现精选基于小波包的图像压缩及matlab实现摘要&#xff1a;小波包分析理论作为新的时频分析工具&#xff0c;在信号分析和处理中得到了很好的应用&#xff0c;它在信号处理、模式识别、图像分析、数据压缩、语音识别与合成等等许多方面都取得了很…

为div添加滚动效果:

为div添加滚动效果: .xxxx{  width: 100%;height: 100%;overflow: hidden;overflow-y: auto;} 代码片段 <div class"xxxx"><div>aaa</div><div>aaa</div><div>aaa</div><div>aaa</div><div>aaa</d…

php读取子目录下文件内容,php小代码----目录下读取子文件或子目录_PHP教程

php小代码----目录下读取子文件或子目录rootPath $rootPath;if (is_dir($this->rootPath)) {$this->rootPath pathinfo($this->rootPath, PATHINFO_DIRNAME) . DIRECTORY_SEPARATOR . pathinfo($this->rootPath, PATHINFO_BASENAME);$this->opDirectory dir(…

Apache Lens —— 统计数据分析查询接口

Lens 提供了一个统一数据分析接口。通过提供一个跨多个数据存储的单一视图来实现数据分析任务切分&#xff0c;同时优化了执行的环境。无缝的集成 Hadoop 实现类似传统数据仓库的功能。 该项目主要特性&#xff1a; 简单元数据层为数据存储提供抽象视图层 单一的共享模式服务器…

js文件中调用另一个js文件:

document.write("<script languagejavascript src/UEditor/uparse.js></script");转载于:https://www.cnblogs.com/flywing/p/3998261.html

JDK8新特性-java.util.function-Predicate接口

上篇主要对Function函数进行了简单了解&#xff0c;本篇则主要了解Predicate。该函数的主要作用其实就是判定输入的对象是否否和某个条件&#xff0c;然后将其布尔值返回。 主要使用方法如下&#xff1a; //唯一的抽象方法 boolean test(T t); //且操作&#xff0c;既满足A也满…

linux查服务器总内存大小,在linux 下怎么查看服务器的cpu和内存的硬件信息

1&#xff0c;Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息。但是对于双核的cpu&#xff0c;在cpuinfo中会看到两个cpu。常常会让人误以为是两个单核的cpu。其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg中找到. …

ZIP打包解包

linux zip命令的基本用法是&#xff1a; zip [参数] [打包后的文件名] [打包的目录路径] linux zip命令参数列表&#xff1a; -a 将文件转成ASCII模式-F 尝试修复损坏的压缩文件-h 显示帮助界面-m 将文件压缩之后&#xff0c;删除源文件-n 特定字符串 不压缩具有特定字尾字符串…

HTML5 上传图片预览

html5出现之前如果需要上传图片预览 一般都是先上传到服务器然后远程预览 html5出现之后 有个filereader 解决了这问题 //选中图片之后$("#fileAddPic").on(change, function (e) {var files e.target.files || e.dataTransfer.files;onSelect(files);})//选中图片…

博客园自动显示随笔标签

title: 博客园自动显示随笔标签 date: 2018-01-03 20:52:22 tags: 浏览器脚本 categories: 前端 在添加随笔页自动显示已有标签&#xff0c;不用点击插入已有标签 效果如图 安装链接https://greasyfork.org/zh-CN/scripts/36809-%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%98%BE%E7%A4%BA…

linux 进程代码,怎样从Linux终端管理进程:10个你必须知道的命令

Linux终端有一系列有用的命令。它们可以显示正在运行的进程、杀死进程和改变进程的优先级。本文列举了一些经典传统的命令和一些有用新颖的命令。本文提到的命令会实现某个单一功能。它们可以结合起来——这也是Unix设计程序的理念。其它命令&#xff0c;例如htop,会在命令的上…

c# datagridviewcomboboxcell值无效的解决办法

一直认为是数据库存储的数据和datagridviewcomboboxcell对不上导致&#xff0c;今天碰到两者对应上了&#xff0c;预览的时候还是提示错误&#xff0c; 查看了下网上其他大神的解决方法&#xff0c;是数据库字段类型有误&#xff0c;查看了下&#xff0c;当下拉菜单中包含中文字…

python object类

这个应为写得&#xff0c;写得蛮啰嗦的&#xff0c;建议耐心的人看看&#xff1a;http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html 知乎&#xff1a;http://www.zhihu.com/question/19754936 新式类&#xff0c;不学也没关系。看了一堆…

linux符号命令,Linux_几个符号命令(示例代码)

一、管道符号 | (将前面命令的输出结果传给后面的命令)[[email protected] ~]$ cat /etc/passwd | grep "^root"root:x:0:0:root:/root:/bin/bash二、重定向符号 [>] [[[email protected] ~]# df > /usr/tmp/df.txt # >:输入重定向 即将命令结果重定向给df.…

pycharm 安装 tensorflow

1. 安装python 3.5 链接&#xff1a;https://www.python.org/downloads/release/python-352/ 1.1如果之前安装了其他版本的&#xff0c;可以在你需要的项目中&#xff0c;导入本地需要的解释器 如果遇到安装包不知道安装位置&#xff0c;在C盘中搜索&#xff0c;然后将python3…

HashTable 源码解读

很多人都知道HashTable与HashMap的关系&#xff0c;HashTable是线程安全的&#xff0c;HashMap是非线程安全的。在介绍完HashMap之后&#xff0c;趁热介绍一下HashTable。在HashTable中没有像HashMap中那么多关于数据结构的内容。HashTable是线程安全的&#xff0c;因为其源码的…