JavaWeb-特殊文件(propertis与XML)

news2024/12/25 8:56:09

 

 

目录

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"));
    }
}


 

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

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

相关文章

linux定时备份MySQL数据库循环删除前30天的备份文件

linux定时备份MySQL数据库循环删除前30天的备份文件 一、 检查有没安装crond,如果没有&#xff0c;先安装 1、先检查一下有没有cron rpm -qa|grep cron如果输入上面命令有如下显示&#xff0c;则不需要安装 2、没有安装的话&#xff0c;就使用一下命令安装 yum -y install …

【第三阶段】kotlin语言的内置函数let

1.使用普通方法对集合的第一个元素相加 fun main() {//使用普通方法对集合的第一个元素相加var list listOf(1,2,3,4,5)var value1list.first()var resultvalue1value1println(result) }执行结果 2.使用let内置函数对集合的第一个元素相加 package Stage3fun main() {//使用…

python 打印一个条形图

背景 在python 中&#xff0c;使用 matplot 生成图表是一个很常用的方法&#xff0c;但在一些轻量级需求场合&#xff0c;例如仅做一个打印预览&#xff0c;或者快速查看&#xff0c;这些场景下调用 matplot 生成图表&#xff0c;略显繁琐。 今天介绍一个通过 DebugInfo 模块…

NC65 树表型参照 搜索全部 按钮点击事件后获取sql的方法

NC65 树表型参照 搜索全部 按钮点击事件后获取sql的方法。 /*** 返回 UIbtnLocQuery 特性值。* * return nc.ui.pub.beans.UIButton*/ /* 警告&#xff1a;此方法将重新生成。 */ private nc.ui.pub.beans.UIButton getUIbtnLocQuery() {// 搜索全部 按钮return getButtonPan…

Shell语法揭秘:深入探讨常见Linux Shell之间的语法转换

深入探讨常见Linux Shell之间的语法转换 一、引言二、Linux常用Shell&#xff1a;Bash、Zsh、Ksh、Csh、Tcsh和Fish的简介2.1、Bash、Zsh、Ksh、Csh、Tcsh和Fish的特点和用途2.2、语法差异是常见Shell之间的主要区别 三、变量和环境设置的语法差异3.1、变量定义和使用的不同语法…

【雷达】接收和去噪L波段雷达接收到的信号研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

mongodb集群

端口192.168.115.3 192.168.115.4 1192.168.115.5 下载MongoDB软件包版本为4.2.14并安装 rpm -ih --force --nodeps *.rpm 2创建文件夹mkdir -p /opt/local/mongo-cluster/conf 3.在目录里创建配置文件cd /opt/local/mongo-cluster/conf …

kubernetes--技术文档-真--集群搭建-三台服务器一主二从(非高可用)-三服务器位于同交换机中

在使用k8s之前如果不太熟悉k8s的可以先看这个文章&#xff1a; kubernetes--技术文档--基本概念--《10分钟快速了解》_一单成的博客-CSDN博客 三节点相同安装操作&#xff1a; 1、设置hosts解析 根据角色在三个服务器中运行&#xff0c;设置自己的hostname。 标识&#xf…

CG MAGIC分享如何3d Max新版本如何能在旧版本中打开呢?

三维行业来说&#xff0c;无论是三维软件还是插件&#xff0c;都是在持续更新功能的。 3d Max这款软件&#xff0c;自然也不例外&#xff0c;不断推出新版本以提供更多强大的功能和工具。 随着新版本的发布&#xff0c;旧版本用户可能面临一个问题&#xff1a; 3d Max新版本…

高速道路监控:工业路由器助力高速监控远程管理与维护

工业路由器在物联网应用中扮演着重要的角色。物联网的发展使得大量设备和传感器能够互联互通&#xff0c;而工业路由器作为连接这些设备和网络的中间桥梁&#xff0c;承担着数据传输和安全管理的重要责任。 工业路由器能够为高速监控提供网络功能&#xff0c;实现户外无线网络部…

Go语言里面的各种疑难杂症

什么是闭包&#xff1f;闭包有什么缺陷&#xff1f; func AddUpper() func(int)int{var n int 10return func (x int) int{n nxreturn n} }func main(){f : AddUpper()fmt.Println(f(1))//11fmt.Println(f(2))//13fmt.Println(f(3))//16 }&#xff08;1&#xff09; AddUpper…

Three.js 实现模型材质分解,拆分,拆解效果

原理&#xff1a;通过修改模型材质的 x,y,z 轴坐标 positon.set( x,y,z) 来实现拆解&#xff0c;分解的效果。 注意&#xff1a;支持模型材质position 修改的材质类型为 type“Mesh” ,其他类型的材质修改了position 可能没有实际效果 在上一篇 Three.js加载外部glb,fbx,gltf…

小研究 - Android 字节码动态分析分布式框架(二)

安卓平台是个多进程同时运行的系统&#xff0c;它还缺少合适的动态分析接口。因此&#xff0c;在安卓平台上进行全面的动态分析具有高难度和挑战性。已有的研究大多是针对一些安全问题的分析方法或者框架&#xff0c;无法为实现更加灵活、通用的动态分析工具的开发提供支持。此…

代码生成综述

代码生成大模型属于LLM模型的一个子类&#xff0c;理论来讲也是属于语言模型的一种特例。代码本身其实也是一种特殊的语言表示&#xff0c;所以代码模型的实现应该是具备通用自然语言和代码两部分的能力。实际的代码模型也是有两条路径来实现&#xff0c;让训练好的NLP LLM模型…

IPv4,IPv6,TCP,路由

主要回顾一下TCP&#xff0f;IP的传输过程&#xff0c;在这个过程中&#xff0c;做了什么事情 ip : 网际协议,IP协议能让世界上任意两台计算机之间进行通信。 IP协议的三大功能&#xff1a; 寻址和路由传递服务&#xff1a;不可靠&#xff08;尽最大努力交付传输数据包&…

数据仓库一分钟

数据分层 一、数据运营层&#xff1a;ODS&#xff08;Operational Data Store&#xff09; “面向主题的”数据运营层&#xff0c;也叫ODS层&#xff0c;是最接近数据源中数据的一层&#xff0c;数据源中的数据&#xff0c;经过抽取、洗净、传输&#xff0c;也就说传说中的 ETL…

模板方法模式(十六)

相信自己&#xff0c;请一定要相信自己 上一章简单介绍了代理模式(十五), 如果没有看过, 请观看上一章 一. 模板模式 引用 菜鸟教程里面的 模板模式介绍: https://www.runoob.com/design-pattern/template-pattern.html 在模板模式&#xff08;Template Pattern&#xff09;…

什么是PPS和TOD时序?授时防护设备是什么?

介绍 PPS和TOD PPS和TOD是两种用于精确时间同步的技术&#xff0c;它们在许多领域都有广泛的应用&#xff0c;总的来说&#xff0c;PPS和TOD被广泛应用于各种需要高度精确时间同步的领域&#xff0c;包括通信、测量、测试、系统集成和计算机网络等。 一、PPS PPS&#xff08…

Zookeeper集群单节点启动成功但未同步其他节点数据

首先排查节点启动是否正常&#xff1a; 在zookeeper的bin目录下执行&#xff1a;sh zkServer.sh status 判断当前节点数据leader 还是follower 节点都启动正常&#xff0c;但某一个zookeeper集群节点&#xff08;下面简称“异常节点”&#xff09;不同步其他节点数据&#xf…

redis高级----------主从复制

redis的四种模式&#xff1a;单例模式&#xff1b;主从模式&#xff1b;哨兵模式&#xff0c;集群模式 一、主从模式 单例模式虽然操作简单&#xff0c;但是不具备高可用 缺点&#xff1a; 单点的宕机引来的服务的灾难、数据丢失单点服务器内存瓶颈&#xff0c;无法无限纵向扩…