美文网首页Java Web
day03-Properties&xml配置文件&MySQL基础

day03-Properties&xml配置文件&MySQL基础

作者: 建国同学 | 来源:发表于2020-03-21 20:09 被阅读0次

一、配置文件

硬编码

  1. 写死到java程序中,并且可能经常性的改动.改动之后需要做大量的工作(编译,部署...),这个现象就叫做硬编码

  2. 如何解决硬编码?
    将频繁改动的,写死到java代码中的数据,写在一个公共的文件中,
    后缀为properties,XML,文件放到resources炸药包文件夹内
    这种文件成为配置文件

二、properties需要注意的地方,解析properties的工具类的操作

注意:properties有工具类,XML没有 

基本语法:

  1. 配置文件需要跟随着字节码走.需要放在source folder(炸药包)中.如果直接放在source folder中的文件,是会跟着字节码复制到字节码输出路径中的(项目开发好之后,给别人的只有字节码和配置文件).
  2. 在配置文件中,所有的数据都是字符串类型,不需要使用[ 引号 ]
  3. 在配置文件中,不需要使用[ 空格 ]

解析properties操作

/**
     *  FileInputStream方式
     *  绝对路径
     */
    @Test
    public void testGetUserInfoFormProperties() throws Exception {
        // 1.读取配置文件,转成输入流
        InputStream inputStream = new FileInputStream(
                new File("C:/Users/12252/Desktop/WolfCode/codeWork2/day03/resources/user.properties"));
        // 创建以一个Properties的工具类
        Properties p = new Properties();
        // 调用load方法读取流中的数据 相当于把流中的数据写入到了p对象
        p.load(inputStream);
        // 2.从Property对象中获取数据       get方法:是map的     getProperties方法:是properties的
        // properties 这个工具类的本质是map 
        String username = p.getProperty("username");
        String password = p.getProperty("password");
        System.out.println(username);
        System.out.println(password);
    }
    
    /**
     * getContextClassLoader方式
     *  没有盘符,相对路径,只要放到resources文件就可以读取
     */
    @Test
    public void testGetUserInfoFormProperties2() throws Exception {
        // 读取配置文件,转成输入流                                         
        InputStream inputStream = Thread.currentThread()
                .getContextClassLoader()//getContextClassLoader方法表示去bin目录下去寻找对应名字的配置文件  
                .getResourceAsStream("user.properties");
        // 创建以一个Properties的工具类
        Properties p = new Properties();
        // 调用load方法读取流中的数据 相当于把流中的数据写入到了p对象
        p.load(inputStream);
        // 从p对象中获取数据 get 方法是map的     getProperties 方法是properties 的
        // properties 这个工具类的本质是map 
        String username = p.getProperty("username");
        String password = p.getProperty("password");
        System.out.println(username);
        System.out.println(password);
    }

三、XML的语法结构

  1. 文档内容和文件本身编码格式一定要为UTF-8
  2. 严格区分大小写
  3. 标签允许嵌套,但是不允许交叉嵌套
  4. 有且仅有一个标签直接属于XML文档.即根标签

四、XML的文档结构(如何用java去看XML)

  • XML文档结构


    XML文档.png

五、如何获取Document对象

  • 两种方式获取:


    image.png

六、DOM解析

  1. 先把XML文档加载到内存中,形成一个Document对象.
  2. 找到根节点.
  3. 通过根节点找到第二个联系人节点.
  4. 通过第二个联系人节点,找到名字节点.
  5. 通过名字节点,找到对应的文本内容.
    这种形成一颗树状结构的方式去获取XML文档中的数据的解析方式,称之为DOM解析
File file = new File("C:/Users/12252/Desktop/WolfCode/codeWork2/day03/resources/contacts.xml");

    // 获取第二个联系人的名字
    @Test
    public void testGetLinkman() throws Exception {
        // 1.获取Document对象
        Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);
        // 2.根据Document对象获取contacts元素
        Element root = document.getDocumentElement();
        // 3.根据根(contacts)元素 获取第二个联系人元素(linkman)
        Element linkmanEle = (Element) root.getElementsByTagName("linkman").item(1);
        // 4.根据linkman 元素获取到子元素(name元素)
        Element nameEle = (Element) linkmanEle.getElementsByTagName("name").item(0);
        // 5.获取name元素中的内容
        String name = nameEle.getTextContent();
        System.out.println(name);
    }

相关文章

网友评论

    本文标题:day03-Properties&xml配置文件&MySQL基础

    本文链接:https://www.haomeiwen.com/subject/kityyhtx.html