美文网首页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