WEB入门

XML以及相关技术

为了实现实现的不同路径执行不同的资源,需要使用XML文件进行配置。而为了限定XML的内容,我们需要使用XML约束(DTD或schema)为了获得xml的内容,我们需要使用dom4j进行解析。

XML

Extensible Markup Language,可扩展标记语言。语法上和HTML相似,但HTML中的元素是固定的,而XML中的标签是可以由用户去自定义的。

常见的应用

配置文件
在这里插入图片描述
存放数据
在这里插入图片描述

XML语法

  • XML文档声明
<?xml version="1.0" encoding="UTF-8"?>
 - 1.文档声明必须为<?xml 开头,以 ?> 结束
 - 2.文档声明必须从文档的0行0列位置开始
 - 3.文档声明只有两个属性:
 - 		version:当前版本,只选1.0版(必选);
 - 		encoding:指定当亲啊文档的编码。默认utf-8(可选);	
  • 元素element
    在这里插入图片描述

  • 属性
    在这里插入图片描述

  • 注释
    XML的注释与HTML相同,即以"< !-- " 开始,以" – >"结束

  • 转义字符
    在这里插入图片描述

  • CDATA区
    如果转义字符大量出现在xml文档中,会使xml文档的可读性大幅度降低,这时如果使用CDATA段就会更好一些。
    在CDATA段中的<、>、‘、"、&等都无需使用转义字符。这可以提高xml文档的可读性
    在CDATA段中不能包含]]>,即CDATA段的结束定界符。

DTD约束

常见的xml约束DTD和Schema

什么是DTD

DTD(Document Type Definition)文档类型定义,用来约束xml文档。规定xml文档中元素的名称、子元素的名称以及顺序,元素的属性等

DTD重点要求

开发中、很少自己编写文档。通常都是通过框架提供的DTD约束文档,编写对应的XML文档。常见的框架使用DTD约束有:struts2、hibernate等
在这里插入图片描述

案例实现

在这里插入图片描述
在这里插入图片描述

DTD语法(了解)

文档声明

在这里插入图片描述

元素声明

定义元素语法:<!ELEMENT 元素名 元素描述>
元素名:自定义
元素描述包括:符号和数据类型
常见符号:?* + () | ,
常见类型:#PCDATA表示内容是文本,不能是子标签
在这里插入图片描述
实例

<! ELEMENT web-app (servlet *,servlet-mapping*,welcome-file-list?)>
	web-app 包括3个标签,且必须顺序出现
	servlet-mapping 个数任意
	servlet-mapping 个数任意
	welcome-file-list 最多只能出现一次
<! ELEMENT servlet (servlet -name,description?,(servlet-class|jsp-file))>
	servlet 有3个子标签,且必须顺序出现
	servlet-name 有且只有一个
	description 可选一次
	servlet-class和jsp-file二选一,且只能出现一次
<! ELEMENT servlet-name (#PCDATA)>
	servlet-name的标签必须是文本
<! ELEMENT welcome-file-list (welcome-file+)>
	welcome-file-list 至少有一个子标签welcome-file		
属性声明
属性的语法:(attribute)
	<!ATTLIST 元素名
		属性名 属性类型 约束
		属性名 属性类型 约束
		...
	>
	元素名:属性必须是给元素添加、所有必须先确定元素名
	属性名:自定义
	属性类型:ID、 CDATA、枚举...
		ID:ID类型的属性用来标识元素的唯一性
		CDATA:文本类型
		枚举:(e1|e2|...)多选一
实例
	<!ATTLIST web-app version CDATA #IMPLIFD>
		给web-app添加version属性,属性值必须是文本,且可选。
		<web-app version="2.3">和<web-app>都符合约束

Schema

新的XML约束文件,是DTD的替代者,扩展名是xsd而不是xml、dtd且支持名称空间。

Schema重点要求

与DTD一样,要求可以通过schema约束文档编写xml文档。
格式:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

案例实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

命名空间(语法)

什么是命名空间

在这里插入图片描述

约束文档和XML关系

在这里插入图片描述

声明命名空间
  • 默认命名空间:,使用<标签>
  • 显示命名空间: <xxx xmlns:别名="">,使用<别名:标签>
    实例:web-app_2_5.xsd
    在这里插入图片描述
    实例:web.xml
    在这里插入图片描述

dom4j 解析

XML解析概述

为不同问题提供不同的解析方式,并提交对应的解析器,方便开发人员操作xml

解析方式和解析器

常见的解析方式

  • DOM:要求解析器把整个XML文档装载到内存,并且解析成一个Documnt对象。
    优点:元素与元素之间保留结构关系、所以可以进行增删改查操作。
    缺点:XML文档过大,可能出现内存溢出显现
  • SAX:是一种速度更快更有效的方法。它逐行扫描文档,一边扫描一边解析。并以事件驱动的方式进行具体解析,每执行一行都将触发对应的事件。
    优点:处理速度快,可以处理大文件
    缺点:只能读,逐行后将释放资源。
    常见的解析器:
    在这里插入图片描述

DOM解析原理及结构模型

XML DOM 和HTML DOM类似,XML DOM将整个XML文档加载到内存,生成DOM树,并获得一个Document对象,通过Document对象就可以对DOM进行操作。

在这里插入图片描述
在这里插入图片描述
DOM中的核心概念就是节点,在XML文档中的元素、属性、文本等,在DOM中都是节点
在这里插入图片描述

API使用

要使用dom4j必须导入dom4j的jar包,dom4j必须使用核心类SaxReader加载xml文档获得Document,通过Document对象获得文档的根元素,然后就可以继续擦操作了,常用api如下:

  • SaxReader对象
    • read(…)加载执行xml文档
  • Document对象
    • getRootElement()获得根元素
  • Element对象
    • elements(…) 获得指定名称的所有子元素。可以不指定名称
    • element(…)获得指定名称第一个元素 ,也可以不指定名称
    • getName()获得当前元素的元素名
    • attributeValue(…)获得指定属性名的属性值
    • elementText(…)获得指定名称子元素的文本值
    • getText(…)获得当前元素的文本内容
实例

在这里插入图片描述
在这里插入图片描述

反射

为了实现后期程序的可扩展,以及不必把程序写死,开发中通常使用实现类的权限类名(cn.itcast.e_web.HelloMyServlet),通过反射加载字符串指定的类,并通过反射创建实例。

@Test
public void demo02() throws Exception{
	/*反射创建执行
	*1)Class.forName 返回指定接口或类的Class对象
	* 2)newInstance() 通过Class对象创建类的实例对象,相当于new Xxx();
	*/
	//3.获得字符串实现类实例
	Class clazz =Class.forName(servletClass);
	Myservlet myServlet =(Myservlet) clazz.newInstance();
	//4 执行对象的方法
	myServlet.init();
	myServlet.service();
	myServlet.destory();'
}

解析xml

使用反射我们已经可以创建对象的实例,此时我们使用的全限定类名,在程序中仍是写死的,我们将其配置到xml文档中。
xml文档内容:
在这里插入图片描述
解析实现
在这里插入图片描述
在这里插入图片描述

模拟浏览器路径

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值