JavaWeb-特殊文件(propertis与XML)

news/2024/11/16 13:46:01/

 

 

目录

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的内容,如果有多个则取第一个userElement user = root.element("user");System.out.println(user.elementText("name"));}
}


 


http://www.ppmy.cn/news/1050084.html

相关文章

Matlab使用

Matlab使用 界面介绍 新建脚本&#xff1a;实际上就是新建一个新建后缀为.m的文件 新建编辑器&#xff1a;ctrlN 打开&#xff1a;打开最近文件&#xff0c;以找到最近写过的文件 点击路径&#xff0c;切换当前文件夹 预设&#xff1a;定制习惯用的界面 常见简单指令 ;…

layui框架学习(37:学习laytpl基本语法)

layui中的模板引擎模块laytpl属于轻量的 JavaScript 模板引擎&#xff0c;支持在页面中将指定的数据按指定的模板进行展示或处理&#xff0c;此处的模板是指一段包含html和脚本的文本&#xff08;感觉类似asp.net core中的razor标记语言&#xff0c;在网页中嵌入基于服务器的代…

在线求助。。npm i 报错,连公司内部网,无法连外网

各位前端朋友 &#xff0c;有没有遇到我这种npm i 报错的问题。 公司内网&#xff0c;无法连外网&#xff0c;使用公司内部的Nexus镜像源 我在公司内网执行npm i 报错&#xff0c;报network连接失败。 我都已经在npm设置了内部镜像源&#xff0c;它为啥还要去外网下载呢。而…

测试框架pytest教程(6)钩子函数hook

在pytest中&#xff0c;"hook"是用于自定义和扩展测试流程的机制。它允许你在特定时间点插入自己的代码&#xff0c;以便对测试进行修改、补充或拦截。 pytest的hook是基于Python的插件系统实现的&#xff0c;使用特定的命名规范和装饰器来定义钩子函数。你可以在py…

欧拉计划44题

Pentagon numbers Pentagonal numbers are generated by the formula, . The first ten pentagonal numbers are: 1,5,12,22,35,51,70,92,117,145,… It can be seen that . However, their difference, 70−2248, is not pentagonal. Find the pair of pentagonal numbers, a…

课程项目设计--spring security--用户管理功能--宿舍管理系统--springboot后端

写在前面&#xff1a; 还要实习&#xff0c;每次时间好少呀&#xff0c;进度会比较慢一点 本文主要实现是用户管理相关功能。 前文项目建立 文章目录 验证码功能验证码配置验证码生成工具类添加依赖功能测试编写controller接口启动项目 security配置拦截器配置验证码拦截器 …

初学者SpringBoot+Vue打通前后端详细步骤(从零开始)

目录 前言介绍 一、整体流程介绍 二、后端SpringBoot项目创建 三、前端Vue项目创建 四、前后端连接 &#xff08;一&#xff09;后端配置 &#xff08;二&#xff09;前端配置 &#xff08;三&#xff09;前端页面与后端实体属性绑定并发起请求 五、前后端打通页面 前…

7-10 查验身份证

分数 15 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c…