商业网站开发的实训小结怎么写,网站开发财务预算,永康公司网站建设,平面设计作品图片大全文章目录一、特殊文件概述二、Properties属性文件2.1 文件特点2.2 Properties类解析2.3 写入属性文件三、XML文件详解3.1 XML核心特性3.2 XML解析#xff08;Dom4J#xff09;3.3 XML写入3.4 XML约束#xff08;了解#xff09;四、日志技术#xff08;Logback#xff09…
文章目录一、特殊文件概述二、Properties属性文件2.1 文件特点2.2 Properties类解析2.3 写入属性文件三、XML文件详解3.1 XML核心特性3.2 XML解析Dom4J3.3 XML写入3.4 XML约束了解四、日志技术Logback4.1 日志体系结构4.2 Logback快速入门4.3 日志配置文件logback.xml4.4 日志级别六、总结在Java开发中处理特殊文件、使用日志技术和实现多线程是必备的核心技能。本文将深入解析Properties属性文件、XML文件、Logback日志框架以及多线程的实现方式结合理论讲解和代码示例帮助开发者全面掌握这些关键技术。 一、特殊文件概述
普通文本文件如.txt缺乏结构化格式不便于程序处理数据。而特殊文件通过预定义格式解决此问题
Properties文件键值对存储常用于配置文件XML文件结构化数据存储支持复杂关系核心学习目标 理解文件特点与应用场景掌握程序读写技术日志记录与问题排查
二、Properties属性文件
2.1 文件特点
后缀.properties格式keyvalue每行一个键值对注释以#开头键不可重复值可重复禁止行尾分号/空格会被识别为值的一部分
2.2 Properties类解析 // 读取属性文件
Properties prop new Properties();
prop.load(new FileReader(config.properties));// 获取值
String value prop.getProperty(username);// 遍历所有键值对
方式1SetString keys prop.stringPropertyNames();for (String key : keys) {String value properties.getProperty(key);System.out.println(key ---- value);}方式2
prop.forEach((k, v) - System.out.println(k : v));2.3 写入属性文件 Properties prop new Properties();
prop.setProperty(ip, 192.168.1.1);
prop.setProperty(port, 8080);// 写入文件第二个参数为注释
prop.store(new FileWriter(server.properties), Server Config);注意store()方法的注释参数必须非空 三、XML文件详解
3.1 XML核心特性
文档声明首行固定格式 ?xml version1.0 encodingUTF-8?单根标签有且仅有一个根元素标签规则 成对出现tag/tag属性可自定义user id1正确嵌套禁止交叉嵌套 特殊字符处理!-- 使用转义符 --
data3 lt; 5/data!-- CDATA区避免转义 --
code![CDATA[if(ab cd)]]/code3.2 XML解析Dom4J
步骤
导入Dom4J的JAR包创建SAXReader解析器解析为Document对象
导入Dom4J的步骤 SAXReader reader new SAXReader();
Document doc reader.read(data.xml);// 获取根元素
Element root doc.getRootElement();// 遍历子元素
ListElement users root.elements(user);
for (Element user : users) {String name user.elementText(name);String id user.attributeValue(id);System.out.println(id : name);
}3.3 XML写入
推荐使用StringBuilder拼接避免Dom4J复杂API
StringBuilder sb new StringBuilder();
sb.append(?xml version\1.0\ encoding\UTF-8\?\n);
sb.append(books\n);
sb.append(\tbook\n);
sb.append(\t\ttitleJava Core/title\n);
sb.append(\t/book\n);
sb.append(/books);Files.write(Paths.get(books.xml), sb.toString().getBytes());3.4 XML约束了解
DTD约束简单数据类型限制!ELEMENT student (name, age) 表示student 标签下面只有 name和age 标签
!ELEMENT name (#PCDATA)Schema约束支持复杂数据类型xs:element nameage typexs:integer/四、日志技术Logback 4.1 日志体系结构
#mermaid-svg-JMzwY42r7Jnry3iA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JMzwY42r7Jnry3iA .error-icon{fill:#552222;}#mermaid-svg-JMzwY42r7Jnry3iA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JMzwY42r7Jnry3iA .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-JMzwY42r7Jnry3iA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JMzwY42r7Jnry3iA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JMzwY42r7Jnry3iA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JMzwY42r7Jnry3iA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JMzwY42r7Jnry3iA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JMzwY42r7Jnry3iA .marker.cross{stroke:#333333;}#mermaid-svg-JMzwY42r7Jnry3iA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JMzwY42r7Jnry3iA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JMzwY42r7Jnry3iA .cluster-label text{fill:#333;}#mermaid-svg-JMzwY42r7Jnry3iA .cluster-label span{color:#333;}#mermaid-svg-JMzwY42r7Jnry3iA .label text,#mermaid-svg-JMzwY42r7Jnry3iA span{fill:#333;color:#333;}#mermaid-svg-JMzwY42r7Jnry3iA .node rect,#mermaid-svg-JMzwY42r7Jnry3iA .node circle,#mermaid-svg-JMzwY42r7Jnry3iA .node ellipse,#mermaid-svg-JMzwY42r7Jnry3iA .node polygon,#mermaid-svg-JMzwY42r7Jnry3iA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JMzwY42r7Jnry3iA .node .label{text-align:center;}#mermaid-svg-JMzwY42r7Jnry3iA .node.clickable{cursor:pointer;}#mermaid-svg-JMzwY42r7Jnry3iA .arrowheadPath{fill:#333333;}#mermaid-svg-JMzwY42r7Jnry3iA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JMzwY42r7Jnry3iA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JMzwY42r7Jnry3iA .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-JMzwY42r7Jnry3iA .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-JMzwY42r7Jnry3iA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JMzwY42r7Jnry3iA .cluster text{fill:#333;}#mermaid-svg-JMzwY42r7Jnry3iA .cluster span{color:#333;}#mermaid-svg-JMzwY42r7Jnry3iA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JMzwY42r7Jnry3iA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}日志接口SLF4JJCLLogbackLog4jJUL4.2 Logback快速入门
步骤
导入三个JAR包 slf4j-api.jarlogback-core.jarlogback-classic.jar 配置文件logback.xml放于src目录代码实现
private static final Logger LOGGER LoggerFactory.getLogger(类名);public static void main(String[] args) {LOGGER.debug(调试信息);LOGGER.info(业务操作记录);LOGGER.error(错误堆栈, exception);
}4.3 日志配置文件logback.xml
核心配置项
!-- 输出到控制台 --
appender nameCONSOLE classch.qos.logback.core.ConsoleAppenderencoderpattern%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder
/appender!-- 输出到文件 --
appender nameFILE classch.qos.logback.core.FileAppenderfileapp.log/fileencoderpattern%date %level [%thread] %logger{10} %msg%n/pattern/encoder
/appender!-- 设置日志级别 levelINFO 表示只记录info级别和info级别以上的日志--
root levelINFOappender-ref refCONSOLE/appender-ref refFILE/
/root4.4 日志级别 优先级从低到高
TRACE DEBUG INFO WARN ERROR仅输出≥配置级别的日志配置levelWARN时只记录WARN和ERROR日志 六、总结
Properties文件轻量级键值对存储适合简单配置XML文件 结构化数据存储Dom4J解析标准注意特殊字符处理 日志技术 Logback为核心框架通过配置文件控制输出目标与级别 掌握这些技术能显著提升程序健壮性、可维护性和执行效率。在实际开发中建议根据需求灵活组合使用如用Properties管理配置、Logback记录运行日志等。