1. xml介绍
XML 指可扩展标记语言(EXtensible Markup Language),也是一种标记语言,很类似 HTML.它的设计宗旨是传输数据,而非显示数据它;标签没有被预定义,需要自行定义标签。
XML 被设计为具有自我描述性,是 W3C 的推荐标准,在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。
xml的作用:
XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。简单的说,我们在开发中使用XML主要有以下两方面应用:
a.XML做为数据交换的载体,用于数据的存储与传输
b.XML做为配置文件
2. 书写规范
注意事项:
xml必须有根元素(只有一个)
xml标签必须有关闭标签
xml标签对大小写敏感
xml的属性值须加引号
特殊字符必须转义
xml中的标签名不能有空格
空格/回车/制表符在xml中都是文本节点
xml必须正确地嵌套
我们将符合上述书写规则的XML叫做格式良好的XML文档。
组成部分:
在讲述XML组成部分前,我们必须对XML的树型结构有所了解.下面是一个简单的XML文件内容
<bookstore>
<book category="COOKING">
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
对于一个xml文件,首先必须要有根元素,该元素是所有其它元素的父元素。而在xml中所有元素形成了一棵树。父,子及同胞等术语描述了元素之间的关系。所有的元素都可以拥有子元素。相同层级上的子元素成为同胞。
所有元素都可以拥有文本内容和属性。
Root 根元素
Element 元素
Attribute 属性
Text 文本
在开发中,我们将上述内容也统称为Node(节点)。
接下来,我们就分析一下,对于一个xml文档它的主要组成部分有哪些?
文档声明
作用:它的作用就是声明当前文件是一个xml文件.必须放在文档的第一行;必须是以<?xml开始, 以 ?>结束.它可以存在三个属性.version encoding standalone
nversion:版本 version="1.0"
nencoding:编码 utf-8 gb2312 gbk iso8859-1
nstandalone:不常用,标识当前xml文件是否是一个独立文档.
注意:
在书写xml文件时要注意编码问题,必须保证文件编码与文件内容编码一致
元素
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
简单说,元素就是我们所说的标签,
标签必须结束。
<a>内容</a>
<a/>
标签可以嵌套,但是必须合理嵌套
<a><b><c></c></b></a>
对于合法的xml文档,它必须只能有一个根元素.
Xml中的空格与换行会被保留
<网址>www.itcast.cn</网址>
上行xml代码,在解析时得到网址中的内容就是www.itcast.cn
<网址>
www.itcast.cn
</网址>
上行xml代码,在解析时得到网址中的内容是\r\nwww.itcat.cn\r\n
XML 元素必须遵循以下命名规则:
名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
可使用任何名称,没有保留的字词。
属性
属性值必须使用引号引起来.
在实际开发中,标签的属性一般做为子元素存在.
例如:<input type='text'/>
可以使用子元素来对属性进行修改
<input>
<type>text1</type>
<type>text2</type>
</input>
注释.<!--注释-->与html中一样.
CDATA区域
这个区域中的信息会按照原样输出,不会被解析器解析.CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束,如果是一些特殊符号我们也可以使用转义字符.例如:> <等
3. xml约束介绍
约束xml编写什么样内容.
xml的约束有两种:
DTD约束和SCHEMA约束
应用:
DTD:struts、hibernate等
Schema:web项目、spring等
4. xml约束--DTD
入门案例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE bookstore[
<!ELEMENT bookstore (book+)>
<!ELEMENT book (title,author,year,price)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST book category CDATA #REQUIRED>
<!ATTLIST title lang CDATA #REQUIRED>
]>
<bookstore>
<book category="COOKING">
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
DTD与XML关联
xml和dtd约束 建立联系
内部关联
格式:<!DOCTYPE 文档根节点 [语法]>
我们上面入门案例中使用的就是内部关联
外部关联
本地文件
格式: <!DOCTYPE 文档根节点 SYSTEM "DTD文件的本地URL">
例如:<!DOCTYPE bookstore SYSTEM "../dtd/bookstore2.dtd">
网络(公共)文件
格式:<!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">
例如:<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
DTD详解
元素
声明元素格式
格式1: <!ELEMENT 元素名称 类别>
格式2: <!ELEMENT 元素名称 (元素内容)>
符号描述
符号 | 符号类型 | 描述 |
---|---|---|
? | 问号 | 表示该对可以出现,但只能出现一次 |
* | 星号 | 表示该对象可以出现0次或多次 |
+ | 加号 | 表示该对象可以出现1次或多次 |
() | 括号 | 用来给元素分组 |
| | 竖条 | 表示在列出的对象中选择一个 |
, | 逗号 | 表示该对象必须按照指定顺序出现 |
元素类别 #PCDATA 必须用括号引起来
属性
格式:
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
5. xml约束--SCHEMA
XML Schema 是基于 XML 的 DTD 替代者,用来描述XML 文档的结构.
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD).
Schema与dtd区别:
XML从SGML中继承了DTD,并用它来定义内容的模型,验证和组织元素。同时,它也有很多局限:
• DTD不遵守XML语法;
• DTD不可扩展;
• DTD不支持名称空间的应用;
• DTD没有提供强大的数据类型支持,只能表示很简单的数据类型。
Schema完全克服了这些弱点,使得基于Web的应用系统交换XML数据更为容易。下面是它所展现的一些新特性:
• Schema完全基于XML语法,不需要再学习特殊的语法;
• Schema能用处理XML文档的工具处理,而不需要特殊的工具;
• Schema大大扩充了数据类型,支持boolean、numbers、dates and times、URIs、integers、decimal numbers和real numbers等;
• Schema支持原型,也就是元素的继承。如:我们定义了一个“联系人”数据类型,然后可以根据它产生“朋友联系人”和“客户联系”两种数据类型;
• Schema支持属性组。我们一般声明一些公共属性,然后可以应用于所有的元素,属性组允许把元素、属性关系放于外部定义、组合;
• 开放性。原来的DTD只能有一个DTD应用于一个XML文档,现在可以有多个Schema运用于一个XML文档。
入门案例
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<bookstore xmlns="http://www.example.org/bookstore2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/bookstore2 bookstore2.xsd">
<book category="COOKING">
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005-10-10</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005-01-01</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003-09-09</year>
<price>39.95</price>
</book>
</bookstore>
约束文件 xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/bookstore2"
elementFormDefault="qualified">
<element name="bookstore">
<complexType>
<sequence maxOccurs="3">
<element name="book">
<complexType>
<sequence>
<element name="title">
<complexType>
<simpleContent>
<extension base="string">
<attribute name="lang" type="string" />
</extension>
</simpleContent>
</complexType>
</element>
<element name="author" type="string" />
<element name="year" type="date" />
<element name="price" type="double" />
</sequence>
<attribute name="category" type="string" use="required" />
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
URL名称空间
编写了一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束.
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/bookstore2"
elementFormDefault="qualified">
xsd文件中的 xmlns是一个固定值,引用的官方规定的自定义schema文档如何编写
targetNamespace给当前的约束文档起个名字,便于xml文件引用(唯一)
elementFormDefault元素用于指定局部元素是否受到该schema定targetNamespace所指定的名称空间限定,如果该值是 unqualified,实例xml的根元素必须有名称空间的的限定,这个名称空间必须是schema中定义的targetNameSpace。但是其下子元素无须也不允许用名称空间前缀限定目标名称空间。 子元素的名称空间为空名称空间;如果该值是 qualified,实例xml根元素及其下所有子元素都必须通过名称空间前缀限定目标名称空间。这个名称空间必须是schema中定义的targetNameSpace
名称空间的名字语法容易让人混淆,尽管以 http:// 开始,那个 URL 并不指向一个包含模式定义的文件。事实上,这个 URL:http://www.example.org/bookstore2根本没有指向任何文件,只是一个分配的名字。
在XML Schema中,每个约束模式文档都可以被赋以一个唯一的名称空间,名称空间用一个唯一的URI(Uniform Resource Identifier,统一资源标识符)表示。 在Xml文件中书写标签时,可以通过名称空间声明(xmlns),来声明当前编写的标签来自哪个Schema约束文档。
<bookstore xmlns="http://www.example.org/bookstore2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/bookstore2 bookstore2.xsd">
xmlns:名称空间,和xsd中的targetNamespace保持一致
schemaLocation此属性有两个值。第一个值是需要使用的名称空间。第二个值是供名称空间使用的 XML schema 的位置,两者之间用空格分隔。
注意,在使用schemaLocation属性时,也需要指定该属性来自哪里。
元素
XML Schema规范中将元素分为两种类型
简单类型元素(<simpleType>):简单类型元素只能包含字符内容。这些字符可以被约束为特殊的预定义类型或派生类型。例如,可以指定一个简单元素的内容必须是日期、整数、字符串或者仅仅是一个字符或者一系列字符。
复杂类型元素(<complexType>):复杂类型元素是包含子元素内容或者属性的元素,常用
<element name=”元素名称”> 确定元素
<sequence> 确定顺序
属性
格式:
<attribute name=”名称” type=”类型” use=”属性选项”>
例如:
<attribute name="id" type="string" use="required"/>
用attribute元素的use属性来定义是否是必须的属性
required是必须值
optional是可选值
prohibited是无属性值
缺省值如何定义
<attribute name="quantity" type="integer" default="1"/>
1. xml解析介绍
XML解析方式分为两种:dom和sax
dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的解析XML 的一种方式。
sax: (Simple API for XML) 不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。
XML解析开发包
JAXP(SUN) JDOM DOM4J pull xstream
DOM和SAX只是XML解析方式,没有API
JAXP是 Sun 提供的一套XML解析API,JAXP很好的支持DOM和SAX解析方式
DOM和SAX区别
DOM
支持回写
会将整个XML载入内存,以树形结构方式存储
XML比较复杂的时候,或者当你需要随机处理文档中数据的时候不建议使用
SAX
相比DOM是一种更为轻量级的方案
采用串行方法读取 --- 逐行读取
编程较为复杂
无法修改XML数据
2. dom4j介绍与查询操作
Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性.Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司部分技术也使用Dom4j
使用Dom4j开发,需下载dom4j相应的jar文件
dom4j的查询操作
解析xml获取Document
import java.net.URL;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
public class Foo {
public Document parse(URL url) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(url);
return document;
}
}
节点操作
1.获取文档的根节点.
Element root = document.getRootElement();
2.取得某个节点的子节点.
Element element=node.element(“书名");
3.取得节点的文字
String text=node.getText();
4.取得某节点下所有名为“member”的子节点,并进行遍历.
List nodes = rootElm.elements("member");
for (Iterator it = nodes.iterator(); it.hasNext();)
{ Element elm = (Element) it.next(); // do something}
节点对象属性
1.取得某节点下的某属性
Element root=document.getRootElement(); //属性名name
Attribute attribute=root.attribute(“属性”);//getValue()
2.取得属性的文字
String text=attribute.getText(); === getValue();
3.取得某属性的文字
String value=node.attributeValue(“属性”);
3. dom4j-xpath使用
XPath 是一门在 XML 文档中查找信息的语言
XPath 可用来在 XML 文档中对元素和属性进行遍历
XPath简化了Dom4j查找节点的过程
使用XPath必须导入jaxen-1.1-beta-6.jar否则出现NoClassDefFoundError: org/jaxen/JaxenException
在DOM4J中使用XPATH:
获取所有符合条件的节点
selectNodes(String xpathExpression) 返回List集合
获取符合条件的单个节点
selectSingleNode(String xpathExpression) 返回一个Node对象。
如果符合条件的节点有多个,那么返回第一个。
1. web相关概念
WEB
web即表示网页的实际上指的是:网络上看到的所有的资源
资源分为:
1.静态web资源:展示信息,数据信息不能通过程序改变
2.动态web资源:显示的信息 可以通过程序改变,并且可以和用户交互
静态web资源开发技术:Html
动态web资源开发技术:JSP/Servlet,ASP,.net,PHP等
在Java中,动态web资源开发技术统称为Javaweb,我们课程的重点也是教大家如何使用Java技术开发动态的web资源,即动态web页面。
CS与BS结构
C/S结构:即Client/Server (客户端/服务器) 结构
是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务。开发比较容易,操作简便,但应用程序的升级和客户端程序的维护较为困难。
B/S结构:即Browser/Server (浏览器/服务器) 结构
是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现。客户端基本上没有专门的应用程序,应用程序基本上都在服务器端。由于客户端没有程序,应用程序的升级和维护都可以在服务器端完成,升级维护方便。
Web开发如何通信
基于请求(request)与响应(response)
2. web服务器介绍
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。WebLogic是美商Oracle的主要产品之一,系并购BEA得来。是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.1.3) 版。
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere 提供了可靠、灵活和健壮的软件。WebSphere Application Server 是该设施的基础,其他所有产品都在它之上运行,支持JAVAEE规范
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是8.0。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选,它还是一个Servlet和JSP容器
3. tomcat的安装与目录介绍
Tomcat安装
Tomcat官方站点:http://tomcat.apache.org/
获取Tomcat安装程序包
tar.gz(zip)文件是Linux操作系统下的安装版本
exe文件是Windows系统下的安装版本
zip文件是Windows系统下的压缩版本
安装Tomcat --- 必须配置JAVA_HOMEØ
Tomcat测试
双击 bin 目录下的 startup.bat 文件
输入 http://localhost:8080/
显示如下界面代表安装成功
Tomcat安装相关问题
没有JAVA_HOME环境配置 闪退
端口冲突
a)修改tomcat的端口
在tomcat安装目录 下conf 下有一个server.xml文件
<Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
b)在cmd打开的窗口中输入 netstat –aov
查看到占用端口的程序的PID 在任务管理器中找到PID对应的程序结束进程。
注意:有的时候这个进程是一个系统进程,结束不了,只能采用第一种方式。
CATALINA_HOME问题,CATALINA_HOME配置的是tomcat的根目录
Tomcat退出
在bin目录 shutdown.bat
直接关闭窗口
ctrl+c
Tomcat目录结构
4. web的目录介绍
开发web应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错。
5. 发布web应用至tomcat
Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。
虚似目录的映射有三种方式:
让tomcat自动映射: tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚拟目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问(直接把我们的项目放到webapps文件夹里面)
在server.xml文件的host元素中配置,
在文件中<Host>标签,
在</Host>结束前
<Context path=”/访问的虚拟路径” docBase=”应用所在位置”/>
在Tomcat6中,不再建议在server.xml文件中配置context元素,
在tomcat/conf/Catalina/localhost目录下新建一个aaa.xml文件
在文件中写入
<Context docBase=”应用所在位置” />
其实xml文件的名称 aaa就是上一种方式中 path的值.
6. myeclipse和tomcat整合
(1)点击服务启动与关闭的图标
(2)configure server
(3)点击servers
(4)找到tomcat
(5)找到相应的版本
(6)选择Enable
(7) 点击第一个Browse...
(8)找到解压的tomcat的根目录
其他的自动生成。(ok)
(9)点击发布项目的图标按钮
(10)选择项目
(11)点击add按钮
(12)选择我们自己的服务器
(13)finish
(14)点击启动按钮
选择我们的服务器 选择start
部署项目的目录介绍:
add:把我们的项目添加到tomcat里面
remove:从我们tomcat里移除项目
Redeploy:重新发布
Browse:打开项目在服务器的目录。
7. war文件生成(web应用项目)
通过myeclipse生成
手动压缩成zip文件,修改后缀名
通过jdk中jar命令进入ja项目目录 运行jar cvf myweb.war */
1. http介绍
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法.HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求
它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
2. Httpwatch
通过httpwatch抓取传输的信息
3.http协议格式
html请求格式
http响应格式
请求头
Accept: text/html,image/* --支持数据类型
Accept-Charset: ISO-8859-1 --字符集
Accept-Encoding: gzip --支持压缩
Accept-Language:zh-cn --语言环境
Host: www.itcast.com:80 --访问主机
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --缓存文件的最后修改时间
Referer: http://www.itcast.com/index.jsp --来自哪个页面、防盗链
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Cookie
Connection: close/Keep-Alive --链接状态
Date: Tue, 11 Jul 2000 18:23:51 GMT --时间
响应头
Location: http://www.it315.org/index.jsp --跳转方向
Server:apache tomcat --服务器型号
Content-Encoding: gzip --数据压缩
Content-Length: 80 --数据长度
Content-Language: zh-cn --语言环境
Content-Type: text/html; charset=GB2312 --数据类型
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT --最后修改时间
Refresh: 1;url=http://www.it315.org --定时刷新
Content-Disposition: attachment; filename=aaa.zip --下载
Set-Cookie:SS=Q0=5Lb_nQ; path=/search
Expires: -1 --缓存
Cache-Control: no-cache --缓存
Pragma: no-cache --缓存
Connection: close/Keep-Alive --连接
Date: Tue, 11 Jul 2000 18:23:51 GMT
修改项目的名称