JavaWeb-特殊文件(propertis与XML)

 

 

目录

Properties文件

 一.properties介绍

二.properties使用

三.解决中文乱码问题

XML文件

一.XML介绍

二.XML文件的语法规则

三.XML的使用


Properties文件

 一.properties介绍

1.什么是properties文件

Properties文件是一种常用的配置文件格式,用于存储键值对(key-value pairs)的数据。它通常以文本文件的形式存在,其中每一行都包含一个键值对,通过等号(=)或冒号(:)进行分隔。属性文件主要用于在软件开发中保存和读取配置信息,例如应用程序的参数、数据库连接信息、国际化资源等。

2.properties文件的特点

  1. 键值对:每个属性都由唯一的键和对应的值组成。
  2. 无序:属性文件中的键值对是无序的,没有固定顺序。
  3. 简单易读:属性文件使用简单的文本格式,易于编辑和阅读。
  4. 支持注释:可以通过在行首添加注释符号(#或!)来添加注释,注释内容将被忽略。
  5. 支持层级结构:键值对中的键可以使用点号(.)进行分割,创建层级结构。

注意:

1.输入格式只能是键值对即键=值 如name = 张三

2.键的名字不能重复,比如不能重复两个name

3.文件的后缀名一般是.propertis结尾

3.properties的核心作用

properties由键值对可以看出这本质是java中集合框架的Map,但是一般不会当集合来使用

其核心作用是:properties是用来代表属性文件的,通过Properties可以读写属性文件里面的内容


二.properties使用

创建properties文件

 然后设置内容为 键名=键值,如下

age=15
email=123456@qq.com
name=张三
slary=15000

 4.程序获取Properties内容

通过构造器Public Properties()构建Properties对象

写入常用方法

方法描述
load(InputStream is)从输入流中加载Properties文件。
load(Reader reader)从Reader对象中加载Properties文件。
getProperty(String key)根据指定的键获取相应的属性值。
setProperty(String key, String value)设置指定键的属性值。
stringPropertyNames()返回一个包含所有属性名的Set集合,每个属性名都是字符串类型。

案例代码:

package PropertiesTest;

import java.io.FileReader;
import java.util.Properties;

public class javaDemo {
    public static void main(String[] args) {
//        创建Resource对象
        Properties properties = new Properties();
//        加载Properties内容
        try {
            properties.load(new FileReader("E:\\javatest\\src\\test.properties"));
//            获取键对应的值
            String name = properties.getProperty("name");
            System.out.println(name);
//            设置对应的键值
            properties.setProperty("name","黄小龙");
            String name2  = properties.getProperty("name");
            System.out.println(name2);
//            输出所有内容
            System.out.println(properties);
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}

 写出常用方法:

方法描述
setProperty(String key, String value)设置指定键的属性值。
store(OutputStream os, String comment)将Properties对象中的键值对存储到输出流,并可添加注释。
store(Writer w, String comment)将Properties对象中的键值对存储到Writer对象,并可添加注释。

案例代码:

package PropertiesTest2;


import java.io.FileReader;
import java.io.FileWriter;
import java.util.Properties;

public class javaDemo {
    public static void main(String[] args)throws Exception {

//        创建properties对象
        Properties properties = new Properties();
//        加载原本拥有的键值对(防止覆盖原来内容)
        properties.load(new FileReader("E:\\javatest\\src\\test.properties"));

//        设置需要存储的键值对
        properties.setProperty("slary","15000");
        properties.setProperty("婚姻情况","未婚");
        properties.setProperty("财产状况","破产");

//        将设置的键值对存储到属性文件中去
        properties.store(new FileWriter("E:\\javatest\\src\\test.properties"),"补充其个人信息");
    }
}

三.解决中文乱码问题

5.解决中文乱码问题

第一次运行时候获取键对应的value时候中文的返回值为???

问题原因就在于编码格式不同导致不同编码使用时候无法识别

找到设置

 找到编辑器->的文件编码,按照如下即可


XML文件

一.XML介绍

1.什么是XML文件

XML(可扩展标记语言)是一种用于存储和传输数据的文本格式。它被设计用于结构化数据的描述和交换,广泛应用于互联网和其他领域。XML文件使用自定义的标签来表示数据的不同部分,并使用起始标签和结束标签包围数据。

2.XML的特点

  1. 可读性:XML文件使用纯文本格式,易于阅读和理解。它使用标签和元素对数据进行结构化描述。

  2. 可扩展性:XML文件是可扩展的,可以根据需要定义自己的标签和结构。这使得XML非常灵活,适用于各种数据表示需求。

  3. 自描述性:XML文件包含了标签和属性,这些标签和属性可以提供关于数据内容、结构和类型的附加信息。这使得XML文件能够自描述其所包含的数据。

  4. 平台无关性:XML文件不依赖于任何特定的操作系统或编程语言。它是一种通用的数据格式,可以在不同平台和环境中使用和解析。

3.XML的作用

xml经常用来作为系统的配置文件,或者作为一种特殊的数据结构,在网络中进行传输。

比如说在Maven中配置jar包,在JavaWeb配置Web.xml,在Mybatis中配置数据库连接等等。


二.XML文件的语法规则

1.设置抬头声明

<?xml version="1.0" encoding="UTF-8" ?>
<!--抬头声明必须放在第一行-->
<!--根标签只有一个-->

version:XML的默认版本号

encoding:本XML的编码方式

2.XML注释

中通过<!--注释内容-->

3.特殊字符转换

在XML中书写 '>','<','&',等特殊字符可能会出现冲突报错,所以需要将其转换成对应的特殊字符,如下。

原始字符转义字符字符含义
<&lt;小于
>&gt;大于
&&amp;和号
'&apos;单引号
"&quot;双引号

4.<![CDATA{   }]>随意书写区域

 <user id="1">
        <name>黄飞宏</name>
        <age>19</age>
        <salary>3000</salary>
        <![CDATA[ 随意书写区域  ]]]>
    </user>

三.XML的使用

首先需要创建xml文件,并设置内容

<?xml version="1.0" encoding="UTF-8" ?>
<Users>
    <user>
        <name>黄飞宏</name>
        <age>50</age>
        <adress>广东</adress>
    </user>
    <user>
        <name>张三</name>
        <age>21</age>
        <adress>广西</adress>
    </user>
</Users>

1.下载解析器

由于正常下用io流访问xml文件十分麻烦,所以可以使用开源的框架,比如Dom4j框架

如果有Maven的话,可以直接导入jar包,会自动在中央仓库中下载对应的jar包,十分方便

Maven构建工具下载与配置(图文详细)_Alphamilk的博客-CSDN博客

 <dependencies>
      <dependency>
          <groupId>dom4j</groupId>
          <artifactId>dom4j</artifactId>
          <version>1.6.1</version>
      </dependency>
  </dependencies>

如果没有Maven构建工具的同学则需要到对应的官网去下载对应的jar包,并在src下创建lib目录后手动将jar包复制进去

2.使用解析器

首先需要创建解析器,并解析文件

//        创建一个Dom4框架的解析器
        SAXReader saxReader = new SAXReader();

//        使用saxReader对象将对象解析成为一个可读的Document对象
        Document document = saxReader.read("E:\\MyBaits-project01\\src\\main\\resources\\Test.xml");

解析后的Document对象被Element对象接收

//        从文档对象解析XML文件的全部数据
//        获取根标签
        Element root = document.getRootElement();
//        获取根标签名字
        System.out.println(root.getName());

3.Element提供的方法

方法名描述
getName()获取当前元素的名称
elements()获取当前元素的所有子元素
elements(String name)获取当前元素指定名称的子元素列表
attributeValue(String name)获取当前元素指定属性的值
elementText(String childElementName)获取当前元素指定子元素的文本内容

 案例代码:

package com.alphamilk.mybatis;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.Iterator;
import java.util.List;


public class App {
    public static void main(String[] args) throws Exception{
//        创建一个Dom4框架的
        SAXReader saxReader = new SAXReader();

//        使用saxReader对象将对象解析成为一个可读的Document对象
        Document document = saxReader.read("E:\\MyBaits-project01\\src\\main\\resources\\Test.xml");

//        从文档对象解析XML文件的全部数据
//        获取根标签
        Element root = document.getRootElement();
//        获取根标签名字
        System.out.println(root.getName());

//        获取根标签下的所有子标签
        List<Element> list = root.elements();
        Iterator<Element> iterator = list.iterator();
//        输出所有子标签
        while (iterator.hasNext()){
            System.out.println(iterator.next().getName());
        }

//        获取user标签下的user标签name的内容,如果有多个则取第一个user
        Element user = root.element("user");
        System.out.println(user.elementText("name"));
    }
}


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win11 docker-desktop安装记录

win11安装Docker踩坑实录 马上开始正式工作了&#xff0c;需要用到docker&#xff0c;以前在win10上安装过&#xff0c;新电脑是win11&#xff0c;心想肯定会遇到坑&#xff0c;就浅浅记录一下 首先看一下安装要求 需要wsl2 那么就先进行 wsl的更新 wsl --update注意这里网络…

c++ qt--信号与槽(一) (第三部分)

c qt–信号与槽(一) &#xff08;第三部分&#xff09; 一.用qt自带的方法添加信号槽 1.第一种 1.如何添加 2.在何处进行绑定 2.第二种 1.如何添加 2.在何处进行绑定 而且会在mainwindow.h中添加槽函数的声明&#xff0c;在mainwindow.cpp中添加槽函数的定义 在mainwindow…

php_webshell免杀--从0改造你的AntSword

0x00 前言&#xff1a; 为什么会有改造蚁剑的想法&#xff0c;之前看到有做冰蝎的流量加密&#xff0c;来看到绕过waf&#xff0c;改造一些弱特征&#xff0c;通过流量转换&#xff0c;跳过密钥交互。 但是&#xff0c;冰蝎需要反编译去改造源码&#xff0c;再进行修复bug&am…

16.5.6 【Linux】一个网络服务案例及登录文件协助

setroubleshoot --> 错误讯息写入 /var/log/messages 几乎所有 SELinux 相关的程序都会以 se 为开头&#xff0c;这个服务也是以 se 为开头。troubleshoot是错误克服&#xff0c;因此setroubleshoot要启动。这个服务会将关于 SELinux 的错误讯息与克服方法记录到 /var/log/…

【AI】即使AI 时代,程序员也无需焦虑

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…

TMP: 利用std::tuple完成运行期的if...else替换

code client code 参考链接&#xff1a; std::tuple std::tuple_size std::tuple_element

【python】Leetcode(primer-set)

文章目录 78. 子集&#xff08;集合的所有子集&#xff09;90. 子集 II&#xff08;集合的所有子集&#xff09;792. 匹配子序列的单词数&#xff08;判断是否为子集&#xff09;500. 键盘行&#xff08;集合的交集&#xff09;409. 最长回文串&#xff08;set&#xff09; 更多…

【腾讯云Cloud Studio实战训练营】React 快速构建点餐页面+Python 拼图小游戏

文章目录 一、腾讯云 Cloud Studio 概述1.1 腾讯云 Cloud Studio 简介1.2 腾讯云 Cloud Studio 功能特点1.3 腾讯云 Cloud Studio 产品优势 二、Cloud Studio界面功能介绍2.1 注册登录2.1.1 新注册用户有免费的3000分钟体验 2.2 界面功能介绍2.2.1 空间模板2.2.2 开发空间关闭空…

储能运行约束的Matlab建模方法

最近一段时间有很多人问我最优潮流计算中储能系统的建模方法。部分朋友的问题我回复了&#xff0c;有些没有回消息的&#xff0c;我就不再一一回复了&#xff0c;在这里我写一篇博客统一介绍一下。 1.储能系统介绍 首先&#xff0c;让【GPT】简单介绍一下储能系统&#xff1a;…

Centos7 交叉编译QT5.9.9源码 AArch64架构

环境准备 centos7 镜像 下载地址&#xff1a;http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ aarch64交叉编译链 下载地址&#xff1a;https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/ QT5.9.9源代码 下载地址&#xff1…

RK3588平台开发系列讲解(AI 篇)RKNN-Toolkit2 模型的加载

文章目录 一、Caffe模型加载接口二、TensorFlow模型加载接口三、TensorFlowLite模型加载接口四、ONNX模型加载五、ONNX模型加载六、PyTorch模型加载接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 RKNN-Toolkit2 目前支持 Caffe、TensorFlow、TensorFlowLite、ONN…

回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现WOA-RF鲸鱼优化算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览…

VMware 修改ip地址 虚拟机静态ip设置 centos动态ip修改为静态ip地址 centos静态ip地址 vmware修改ip地址

虚拟机的centos服务器经常变换ip&#xff0c;测试起来有些麻烦&#xff0c;故将动态ip修改为静态ip 1. 查看vmware 虚拟机网络配置&#xff1a; 点击编辑&#xff0c;打开虚拟网络配置 2. 选中nat模式&#xff0c;点击nat设置&#xff0c;最终获取网关ip: 192.168.164.2 3. 进…

七大排序算法详解

1.概念 1.排序的稳定性 常见的稳定的排序有三种&#xff1a;直接插入排序&#xff0c;冒泡排序&#xff0c;归并排序 对于一组数据元素排列&#xff0c;使用某种排序算法对它进行排序&#xff0c;若相同数据之间的前后位置排序后和未排序之前是相同的&#xff0c;我们就成这种…

压力检测器的基本信息是什么

压力检测器利用了传感器技术、电路处理技术、无线传输技术&#xff0c;能够精准测量气体或者液体等介质的压力&#xff0c;并将测得的数据上传至监控平台。 压力检测器能够适用于供水厂、污水处理厂、消防水系统、输油管道、输气管道等相关场景&#xff0c;拥有自动补偿功能、…

Log4Qt日志框架(1)- 引入到QT中

Log4Qt日志框架&#xff08;1&#xff09;- 引入到QT中 1 下载源码2 简介3 加入到自己的项目中3.1 使用库文件3.2 引入源文件 4 说明 1 下载源码 github&#xff1a;https://github.com/MEONMedical/Log4Qt 官方(版本较老)&#xff1a;https://sourceforge.net/projects/log4q…

暄桐展览| 我们桐学有自己的习作展(1)

林曦老师《从书法之美到生活之美》的第五阶课程《静定的滋养2021》已告一段落。570天的用功&#xff0c;桐学们的技艺都有了水涨船高的进益。      无论书法课&#xff08;全阶和五阶&#xff09;还是国画课&#xff0c;暄桐都有一套完整系统的教学体系&#xff0c;也会在桐…

Linux下的Shell基础——正则表达式入门(四)

前言&#xff1a; 正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文本编辑器里&#xff0c;正则表达式通常被用来检索、替换那些符合某个模式的文本。 在Linux 中&#xff0c;grep&#xff0c;sed&#xff0c;awk 等文本处理工具都支持…

Java可视化物联网智慧工地SaaS平台源码:人脸识别考勤

基于微服务JavaSpring Cloud Vue UniApp MySql实现的智慧工地云平台源码 智慧工地是指利用云计算、大数据、物联网、移动互联网、人工智能等技术手段&#xff0c;为建筑施工现场提供智能硬件及物联网平台的解决方案&#xff0c;以实现建筑工地的实时化、可视化、多元化、智慧化…