package com.itheima.servlet.cfg;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import java.util.ResourceBundle; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class LoaderCfgServletDemo1 extends HttpServlet { //第一种方式,可以加载所有目录下的内容,但只用于web项目
//test11();
//test12();//ppp
//test13();
//第二种方式 ResouceBundle专门用于读取properties文件的,
//只用于加载类路径classes目录下的文件
//java项目和web项目都可以用
//test21();
//test22();//基名 ppp //第三种方式 就是用ClassLoader类加载器
//得到类加载器的方法 LoaderCfgServletDemo1.class.getClassLoader()
//类加载器一上来定位的目录是classes
//test31();
//test32();
//test33();
//曾经的回顾
//test34(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//test11();
//test12();
//test13();
//test21();
//test22();
//test31();
//test32();
//test33();
//test34();
}
//pp
public void test34() throws IOException, FileNotFoundException {
ClassLoader cl = LoaderCfgServletDemo1.class.getClassLoader();
URL url = cl.getResource("cfg.properties");//协议+主机名(包含端口)+资源地址
//System.out.println(url.getPath()); Properties p = new Properties();
p.load(new FileInputStream(url.getPath()));
System.out.println(p.getProperty("p"));
}
//pppp
public void test33() throws IOException, FileNotFoundException {
ClassLoader cl = LoaderCfgServletDemo1.class.getClassLoader();
//这是相对于classes这个目录而言,找它的上一级
InputStream is = cl.getResourceAsStream("../cfg.properties");
Properties p = new Properties();
p.load(is);
System.out.println(p.getProperty("p"));
}
//pp
public void test32() throws IOException, FileNotFoundException {
ClassLoader cl = LoaderCfgServletDemo1.class.getClassLoader();
InputStream is = cl.getResourceAsStream("cfg.properties");//如何写路径
Properties p = new Properties();
p.load(is);
System.out.println(p.getProperty("p"));
}
//ppp
public void test31() throws IOException, FileNotFoundException {
ClassLoader cl = LoaderCfgServletDemo1.class.getClassLoader();
InputStream is = cl.getResourceAsStream("com/itheima/servlet/cfg/cfg.properties");//如何写路径
Properties p = new Properties();
p.load(is);
System.out.println(p.getProperty("p"));
}
//ppp
public void test22() throws IOException, FileNotFoundException {
ResourceBundle rb = ResourceBundle.getBundle("com.itheima.servlet.cfg.cfg");//基名(包名.文件名(不带扩展名))
System.out.println(rb.getString("p"));
}
//pp
public void test21() throws IOException, FileNotFoundException {
ResourceBundle rb = ResourceBundle.getBundle("cfg");//基名
System.out.println(rb.getString("p"));
}
public void test13() throws IOException, FileNotFoundException {
//1第一种 ,用/代表当前应用 pppp
String path =getServletContext().getRealPath("/WEB-INF/cfg.properties");
//System.out.println(path);
Properties p = new Properties();
p.load(new FileInputStream(path)); System.out.println(p.getProperty("p"));
}
public void test12() throws IOException, FileNotFoundException {
//1第一种 ,用/代表当前应用 ppp
String path =getServletContext().getRealPath("/WEB-INF/classes/com/itheima/servlet/cfg/cfg.properties");
//System.out.println(path);
Properties p = new Properties();
p.load(new FileInputStream(path)); System.out.println(p.getProperty("p"));
}
private void test11() throws IOException, FileNotFoundException {
//1第一种 ,用/代表当前应用 pp
String path =getServletContext().getRealPath("/WEB-INF/classes/cfg.properties");
//System.out.println(path);
Properties p = new Properties();
p.load(new FileInputStream(path));
System.out.println(p.getProperty("p"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
} }

java 学习笔记 读取配置文件的三种方式的更多相关文章

  1. Java学习笔记——显示当前日期的三种方式

    一.Date类:这是一种过时的表达方式 import java.util.Date; Date date = new Date(); System.out.println((1900+date.get ...

  2. Servlet读取配置文件的三种方式

    一.利用ServletContext.getRealPath()[或getResourceAsStream()] 特点:读取应用中的任何文件.只能在web环境下. private void text3 ...

  3. Spring Boot 入门系列(二十五)读取配置文件的几种方式详解!

    在项目开发中经常会用到配置文件,之前介绍过Spring Boot 资源文件属性配置的方法,但是很多朋友反馈说介绍的不够详细全面.所以, 今天完整的分享Spring Boot读取配置文件的几种方式! S ...

  4. Java反射获取class对象的三种方式,反射创建对象的两种方式

    Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName ...

  5. java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService

    前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...

  6. java加载配置文件的三种方式

    比如我们要加载db.properties文件 如图: 比如我们要加载source目录下的db.properties文件.就有以下几种方式 第一种是文件io流: public static void l ...

  7. 【java多线程】多线程的创建三种方式--笔记

    申明:线程的概念以及进程的相关概念,可以参考网络上其他资料,这里只讨论多线程是怎么实现. 一.多线程的简单理解 明白什么是多线程,小生通俗一点的理解为:在一个程序里,我想同时让这个程序完成多个任务. ...

  8. Spring学习之实例化bean的三种方式

    实例化bean的三种方式 构造器实例化bean Person.java public class Person { private String name; private Integer age; ...

  9. Java中 实现多线程成的三种方式(继承,实现,匿名内部类)

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. FormData 上传多种格式的文件

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. 201521123033《Java程序设计》第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind answer: 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的co ...

  3. 201521123036 《Java程序设计》第5周学习总结

    本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 接口(interface):对行为的抽象 方法声明和常量值的集合 方法声明:接口中所有 ...

  4. 201521145048 《Java程序设计》第3周学习总结

    1. 本章学习总结 学会了对于一个基本类的创建,需要有属性(private public protected),方法( 静态方法 非静态方法),构造函数,main函数,在定义属性时一般使用privat ...

  5. Maven常见错误以及解决方案【转载】

    常见的Maven错误 当遇到401错误的时候,看看自己当前使用的Maven是集成的还是自己下载的,然后去配置setting.xml文件

  6. jquery-easyUI第二篇【综合案例】

    基于easyUI开发的一个综合案例模版 <%@ page language="java" pageEncoding="UTF-8"%> <!D ...

  7. mybatis-主配置文件介绍

    mybatis下载地址:http://code.google.com/p/mybatis/ 学习手册地址:http://mybatis.github.io/mybatis-3/zh/index.htm ...

  8. 关于Tomcat一些启动错误的解决方法

    一.Eclipse tomcat 启动超时: 错误内容: Server JBoss v4.0 at localhost was unable to start within 50 seconds. I ...

  9. 读Zepto源码之Gesture模块

    Gesture 模块基于 IOS 上的 Gesture 事件的封装,利用 scale 属性,封装出 pinch 系列事件. 读 Zepto 源码系列文章已经放到了github上,欢迎star: rea ...

  10. canvas浅谈 实现简单的自旋转下落

    旋转和平移是2个基础的动画效果,也是复杂动画的基础. 如果是普通的页面只要设置transform属性很容易实现平移+旋转的组合效果,达到自旋转下落的效果.因为操作的直接是动作元素本身很容易理解. 但是 ...