给小白的Java EE生存指南(3) : XML

Java EE工程师实战能力地图:环境配置、JVM调优与云原生落地 Java EE是企业级Java应用开发的核心技术体系,其本质是规范、运行时与工程实践的深度协同。理解JDK版本演进与字节码兼容性,是规避'不支持发行版本'等编译错误的前提;掌握JVM内存模型与GC机制,则能精准诊断OutOfMemoryError七类场景并实施G1调优;而Servlet容器选型、HikariCP连接池配置及Jakarta EE 9+迁移,直接决定系统在云原生环境中的稳定性与扩展性。本文聚焦真实工程现场高频痛点,融合java环境变量配置、java: outofmemoryerror等典型问题, 阅读详情

前两篇文章 《给小白的Java EE生存指南(1)》 和《给小白的Java EE生存指南(2)》 (注:回复关键字“小白”即可查看)基本上把Web编程所依赖的基础技术(HTTP,HTML, WEB服务器,浏览器)的来龙去脉介绍完了, 从这篇开始 ,正式开始进入应用程序的开发领域。

其实Web应用程序开发也有个极为常见的技术: XML . 很多小白在问,为什么有XML, 要XML干嘛?不是有HTML了吗 ? 晕倒

对一项技术我的风格是喜欢刨根问底, 不但要知道how, 还要知道why , 了解了一个技术的成因, 才能真正掌握。

假设你用Java 写了一个很棒的Web应用, 这个程序可以在线购书, 在互联网刚起步的时代这个应用火的一塌糊涂 , 后来有个出版社看到了机遇, 就想和你搞合作: 我这儿也有个Web应用,可以给你提供很多书籍的资源, 你能不能开发个程序把这些书的信息读出来,放到你的网站上?

这没啥难的, 首先得定义一下你的应用和出版社的应用中间怎么进行数据交换, 你要定义一个格式,像这样:

[isbn|书名|作者|简介|价格]

例如: [978-7-229-03093-3|三体|刘慈欣|中国最牛的科幻书|38.00]

数据虽然紧凑, 但是每个字段是什么含义,不好理解, 你想起了HTML的标签好像不错,不如学习HTML改进一下:

<book>

<isbn>978-7-229-03093-3</isbn>

<name>三体</name>

<author>作者</author>

<introduction>中国最牛的科幻书</introduction>

<price>38.00</price>

</book>

由于HTML的标签<head>,<title>,<tr><td>...... 是有限的,而你的标签确实可以随意扩展的,想写什么写什么 所以你就把它称为 Extensible Markup Language, 简称XML

现在每个字段的含义很明确, 人读起来也很爽了, 但是毕竟是程序在处理出版社发过来的数据, 万一他们的数据里少了一些重要字段该怎么办, 能不能自动的检测出来?

所以你需要设计一套校验规则, 能让程序自动校验一段xml 文本是不是你期望的, 这个规则可以像这样:

<!ELEMENT book (isbn, name, author, introduction, price)>

<!ELEMENT price (#PCDATA)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT isbn (#PCDATA)>

<!ELEMENT introduction (#PCDATA)>

<!ELEMENT author (#PCDATA)>

其中第一行的意思是 xml 需要有个 book 标签(元素), 它包含了几个子标签 , 并且这几个标签必须都得有,并且按次序出现。

其他行表示每个标签都是文本就可以了。

你把这个东西起名为文档类型定义 Document Type Definition, 简称DTD 。

这样就不怕出版社使坏了, 对他们发过来的数据, 在真正的处理之前, 你写了个程序, 调用用DTD一验证就知道是不是合法的, 少了个字段什么的一下子就能查出来,巨爽。

后来又有人发明了DTD的改进版XML Schema ,那就是后话了。

慢慢的你就发现,XML极为灵活,描述一个东西非常方便, 除了应用之间交互数据之外,用来描述你的系统的配置信息也大有永无之地。

原来你为了让代码有可移植性(说白了就是在别人的机器上安装时不用费那么大劲),把数据库的ip , 用户名, 密码 都写在了一个文本文件中, 这样就可以只改配置而不用改动代码了

ip=192.168.0.1

name=test

user=liuxin

password=liuxin

但是碰到复杂的,尤其是层次化的配置用文本文件就捉襟见肘了,例如:

form1.name=login

form1.class=com.test.login

form1.property1.name=ok

form1.property1.type=java.lang.String

form1.property2.name=failure

form1.property2.type=java.lang.String

form2.name=logout

form2.class=com.test.logout

form2.property1.name=ok

form2.property1.type=java.lang.String

form2.property2.name=failure

form2.property2.type=java.lang.String

是不是看的头大?

改成xml 描述看看, 是不是就容易理解多了:

<form name="login" class="com.test.login">

<property name="ok" type="java.lang.String" />

<property name="failure" type="java.lang.String" />

</form>

<form name="logout" class="com.test.logout">

<property name="ok" type="java.lang.String" />

<property name="failure" type="java.lang.String" />

</form>

其实不光是你, 现在绝大多数Java 应用程序的配置文件都是xml , 已经成为事实的标准了。

总结:XML主要用于程序之间的数据交换, 以及描述程序的配置信息。

历史知识:

早在1969年,IBM公司就开发了一种文档描述语言GML用来解决不同系统中文档格式不同的问题,这个语言在1986年演变成一个国际标准(ISO8879),并被称为SGML,SGML是很多大型组织,比如飞机、汽车公司和军队的文档标准,它是语言无关的、结构化的、可扩展的语言,这些特点使它在很多公司受到欢迎,被用来创建、处理和发布大量的文本信息。

在1989年,在CERN欧洲粒子物理研究中心的研究人员开发了基于SGML的超文本版本,被称为HTML。HTML继承了SGML的许多重要的特点,比如结构化、实现独立和可描述性,但是同时它也存在很多缺陷:比如它只能使用固定的有限的标记,而且它只侧重于对内容的显示。

同时随着Web上数据的增多,这些HTML存在的缺点就变的不可被忽略。W3C提供了HTML的几个扩展用来解决这些问题,最后,它决定开发一个新的SGML的子集,称为XML。

-----------------------------------------------------------------------------------

码农翻身公共号(coderising) : 由工作15年的IBM架构师创建,分享编程和职场的经验教训。

回复下面的关键字,查看更多文章

神一样的程序员 键盘侠 留学 读书 调试 烂代码 小白 培训 数据结构 代码腐化 无聊 迷茫 刚工作 死锁 简历 真实项目

加入码农翻身QQ群:135769418 每周日晚9点至10点定期授课,不容错过。

长按二维码, 关注"coderising"

0?wx_fmt=jpeg

Java EE工程实战:从类加载隔离到JTA事务的生产级避坑指南 Java EE不是Java语法的延伸,而是运行在Servlet容器中的企业级规范体系。它通过类加载隔离保障模块独立性,依托生命周期托管实现资源自动回收,并借助JNDI上下文绑定统一管理数据源等外部依赖。其技术价值在于支撑高并发、可伸缩、可维护的Web服务,典型应用场景包括电商订单系统、金融支付网关和SaaS多租户平台。深入理解ClassLoader机制、Servlet线程模型与JTA分布式事务原理,是跨越‘能写代码’到‘能扛流量’的关键断层。本文聚焦真实项目中高频出现的ClassNotFoundExcept 阅读详情

相关推荐

JetBrains全家桶生存指南:Toolbox部署、学生认证与AI Assistant实战

JetBrains IDE 并非独立编辑器,而是基于统一 IntelliJ Platform 构建的开发操作系统。其核心原理在于平台内核、插件架构与许可证体系的高度耦合,导致版本混搭易引发 ABI 不兼容、配置序列化冲突及 AI 功能灰显等工程问题。技术价值体现在原子化环境管理、智能许可证绑定与静默热更新能力,广泛应用于多语言栈开发(PHP/Java/.NET/Ruby)、高校教学场景及企业级标准化部署。本文聚焦 JetBrains Toolbox 强制接入逻辑、学生认证白名单审核机制及 AI Assist

angou6476的博客 575

给小白的Java EE指南

前言这是写给零基础小白的一系列文章。 为啥叫生存指南呢, 因为Java发展了20年, 现在已经不仅仅是一个单纯的语言了, 而是一套完整的生态系统, 其中的术语像 HTML...

码农翻身 313

2026年AI编程工具选型指南:告别Copilot依赖

AI编程工具已从基础代码补全演进为影响开发主权、数据主权与决策主权的关键基础设施。其核心原理在于将大语言模型能力与本地代码理解、策略治理、执行可见性深度耦合,技术价值体现在合规可控、成本优化与复杂场景适配三大维度。典型应用场景包括遗留系统现代化改造、跨技术栈胶水开发、金融级安全合规生成等高要求工程现场。本文聚焦‘GitHub Copilot替代方案’与‘AI编程工具’两大热词,基于真实生产环境横评Tabby、Continue.dev、CodeWhisperer Pro及Bloop四大主流方案,揭示上下文锚定

weixin_30235225的博客 399

给小白的Java EE指南(5) : AJAX

本文是给小白的Java EE生存指南的第5篇, 讲一下前端工程师必备的AJAX的来龙去脉。回到2001年, 当时的老刘还是小刘, 在计算所跟着老板和四川的一个公司合作,做...

码农翻身 317

【Java基础】Hibernate之360度环视

在介绍Hibernate之前,先介绍一下JDBC,Java Data Base Connectivity——Java数据库连接,是一种用于执行SQL语句的Java API,是一套访问数据库的标准,提供了一组接口,可以为多种关系数据库提供统一访问,是Java语言访问数据库用到的东西。     短短几句说完JDBC回来继续说Hibernate,Hibernate是当今很流行的一个ORM框架,是J

不忘初心 1834

Spring 4.3.30 全量离线开发包:含源码、API文档、XSD规范与全部模块jar(Java 6+兼容)

开箱即用的 Spring Framework 4.3.30 官方完整分发包,专为无网络或本地化开发场景设计。根目录结构清晰,docs 文件夹内置完整参考手册(spring-framework-reference)和离线可用的 javadoc-api;libs 目录提供所有核心及扩展模块的二进制 jar,包括 spring-core、spring-context、spring-web、spring-webmvc、spring-jdbc、spring-orm、spring-tx、spring-aop、sprin

vulkan6gpu的博客 188

java ee cookie_【Java EE】Java小技巧:关于Cookie的操作 - 思诚科技(seecen)

测试环境:JDK1.5、Tomcat5.51.设置Cookie1Cookiecookie=newCookie("key","value");2cookie.setMaxAge(60);//设置60秒生存期,如果设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效。3cookie.setPath("/test/test2");//设置Cookie路径,不设置的话为当前路径(对于...

weixin_32257101的博客 136

基于单目视觉的四旋翼定点降落——如何通过mavros控制pixhawk(二)

    一直拖了这么久没有更新,怪我太懒啦~~~ 今天要特别感谢舒仔仔同学,我的好队友帮我写了这篇博文。这篇文章主要讲了如何通过mavros来控制pixhawk。硬件逻辑是这样子,我们先搞一个odroid(土豪上TX2),再用usb线将odroid与pixhawk连接。所以,odroid发送控制指令来控制pixhawk飞行。pixhawk与外界的通信协议是mavlink。ROS下面有个包叫mavr...

zhengyuxin0507的博客 1万+

Java Web1 - 入门

Java Web 的构成 Servlet Html 页面(JSP、静态文档 图片 等) 实用类 web.xml描述Web应用的信息 其他资源 它可以在 Servlet 容器中运行

qq_1403034144的博客 935

瑞萨单片机-硬件I2C从设备

瑞萨单片机上实现I2C从机,根据主机发来的数据,从机返回或者保存数据2、R5F1115AxFL最多支持3个从设备地址(即可以作为三个从设备)3、从接收模式:直接将数据保存到RAM中,接收完再处理4、从发送模式:按照I2C读取传感器数据经验,主机读取从设备时,从设备需要立刻返回数据的,但是程序要如何实现一收到指令就返回特定的数据?(时钟拉伸)这里先跳过,我们先实现返回固定的数据。

qq_27893147的博客 3220

systrace分析 之 问题初步定位

如下surfaceflinger空缺点,上面对应的bufferTX 中有buffer,但VSYNC-SF 过来后,SurfaceFlinger却没有去取,检查测试app “android.settings”, 也没有GPU completion 时间长的问题,所以该部分可以请SurfaceFlinger的owner 进一步确认为何不取buffer。. GPU拿的是acquireFence HWC拿的是releaseFence, GPU是绘图,HWC是合成显示,这两个是互相等待的关系,

yangzex的专栏 3197

java ee基础面试

1.Servlet的生命周期 初始化:Web容器加载servlet,调用init()方法 处理请求:当请求到达时,运行其service()方法。service()自动派遣运行与请求相对应的doXXX(doGet或者doPost)方法。 销毁:服务结束,web容器会调用servlet的distroy()方法销毁servlet。 2.get提交与post提交

qq_34931262的博客 841

Microchip Studio 7.0 从下载到项目调试:AVR开发者的完整入门指南(附常见问题解决)

本文为AVR开发者提供了Microchip Studio 7.0从下载安装到项目调试的完整入门指南。详细介绍了如何获取安装包、创建第一个AVR工程项目,并配置编译与调试环境。同时,文章重点解决了开发过程中常见的编译错误和仿真问题,帮助开发者快速上手并高效使用这一官方集成开发环境。

joy55的博客 336

Weld(CDI)教程

为什么80%的码农都做不了架构师?>>> ...

weixin_34416754的博客 305

DexProtector内存校验绕过与DEX提取实战

DEX文件是Android应用的核心执行单元,其动态加载与运行时保护机制直接关系到App安全强度。DexProtector作为主流商业加固方案,摒弃传统文件级防护,转而依托ART虚拟机下的匿名内存映射段(anonymous mmap)构建多维校验体系——涵盖字节码完整性校验、内存页属性检测及运行时环境感知。其技术价值在于将防护锚点从静态APK迁移至动态内存态,大幅提升逆向门槛。典型应用场景包括金融类App的防篡改加固、游戏客户端的反外挂保护,以及政企应用的合规性安全增强。本文聚焦DexProtector v

weixin_30315435的博客 714

1小时读完100篇文献的正确打开方式

各位同仁好,我是七哥。一个在高校里从事人工智能 相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude 等大模型 学术实操相关问题,多多交流,相互成就,共同进步。文献阅读与整理一般都是最先开始、却也最容易被低估的一步。很多学术同仁一开始就陷入越读越多、越读越乱的状态:论文下载了一大堆,但真正能用来支撑自己观点的内容却始终难以提炼出来。一方面,我们需要通过文献了解该研究领域的整体发展脉络,把握当前学界已经讨论到什么程度;

智能AI让学术科研更容易 50

Spring AI 2.0都来了,你的Spring Boot工程还在手搭?

摘要:SpringAI 2.0正式发布,将AI集成提升为Spring生态核心能力,但许多Java团队仍受困于SpringBoot 2.x升级3.x的复杂适配问题。飞算JavaAI推出智能引导工具,30秒自动生成适配SpringBoot 3.x的完整工程脚手架(含依赖配置、安全框架等),解决从javax到jakarta命名空间迁移等痛点。该工具与SpringAI形成互补,前者解决工程搭建效率问题,后者专注AI能力对接。目前提供9.9元/月服务,帮助开发者快速构建符合最新标准的SpringBoot项目。

CalEx_Tech的博客 346

真格量化-bs套利

#!/usr/bin/env python # coding:utf-8 from PoboAPI import * import datetime import time import numpy as np from copy import * #开始时间,用于初始化一些参数 def OnStart(context) : context.myacc = None #登录交易账号 if context.accounts["回测期权"].Login() : co.

qq_26742269的博客 1322

Spring框架-IOC容器的Bean管理(基于xml配置方式)

1.Spring框架的简介。 什么是Spring框架:  Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBe...

weixin_43328816的博客 746

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 350

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

码农翻身部分章节连接,小说式编程,java,数据库。。。

大话编程 我是一个java class 张大胖学数据库 TCP/IP 之 大明王朝的邮差 TCP/IP 之 大明内阁 TCP/IP 之 蓟辽督师 CPU 阿甘 CPU 阿甘之烦恼 CPU 阿甘:函数调用的秘密 张大胖的socket 张大胖学递归 学习面向对象的令狐冲 数据库村的旺财和小强 小李的数据库之旅(上) 小李的数据库之旅(下) 漫画:什么是机器学习 那些烦人的同步和互斥问题 IE为什么把Chrome和火狐打伤了 对浏览器村的第二次采访 节约标兵IE的自述 EMail 诞生记(上) EMail 诞生记

zzz的博客 211

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MyBatis-Plus版本兼容性:从“版本地狱“到“版本天堂“的实战指南

如果你曾经在凌晨3点被一个奇怪的`NoSuchMethodError`异常惊醒,或者在项目升级时发现MyBatis-Plus突然"罢工",那么这篇文章就是为你准备的。我们不是在讨论枯燥的技术规格,而是在探讨如何避免那些让开发者崩溃的"版本地狱"时刻。 ## 一个真实的故事:当升级变成噩梦 上周,我们的团队决定将Spring Boot从2.x升级到3.x。一切看起来都很美好——新的特性、更好的性

gitblog_00434的博客 1093

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

面对SOA开发 Java SE 6的提升与不足

    Java Platform Standard Edition 6 (Java SE 6)本周发布,Sun Microsystems Inc.公司大力宣传Java SE 6在SOA开发方面的性能(什么是SOA开发),同时,有两位分析师说Java SE 6可以满足所有面向服务项目开发人员的需求,它为在Web 2.0规范中关于企业版(Java Enterprise Edition)生存能力的争论...

wdiy 144

别再复制粘贴了!手把手教你配置Maven 3.9.6的settings.xml(从镜像到代理保姆级教程)

本文详细解析了Maven 3.9.6中settings.xml文件的个性化配置方法,从镜像选择到代理设置,再到本地仓库优化,帮助开发者避免常见配置误区,提升构建效率。特别针对国内开发者推荐了阿里云镜像等实用配置,并提供了高级调优技巧和排错指南。

weixin_28745821的博客 242

Tomcat:一个强大的Java Web应用服务器详解

Apache Tomcat是一个开源的Java Servlet容器和Web服务器,由Apache软件基金会开发,支持Java Servlet、JSP、EL和WebSocket等Java EE规范。Tomcat自1999年诞生以来,经历了多个版本的演进,逐渐成为轻量级且功能强大的Web容器。其核心架构包括Server、Service、Connector、Engine、Host和Context等组件,具有轻量级、跨平台、可嵌入和高度可配置等特性。Tomcat的安装和使用相对简单,支持多种部署方式,并且可以通过配

Leaton的博客 2531

2026精选课题-基于spring mvc和mybatis的食品商城系统的设计与实现

本文介绍了一个基于SpringMVC和MyBatis的食品商城系统开发项目,面向高校师生提供毕设辅导和技术支持。系统采用经典JavaEE三层架构,包含用户认证、商品展示、购物车管理、订单处理等核心功能模块,同时提供后台管理功能。项目技术栈包括SpringBoot、Vue、MySQL等主流技术,注重系统安全性、性能优化和用户体验。该系统不仅具有技术实践价值,还能促进农产品电商发展,为高校计算机专业学生提供完整的毕设案例参考。

hungelianshu123的博客 653
上一篇: 从现在开始,丰富你的简历
下一篇: 给小白的Java EE生存指南(4) : 一只叫Tom的猫
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值