- web程序设计基础知识
(一)基础知识
1.1课程性质:
主要内容包括Servlet、JSP、JavaBean、JDBC等技术;
本课程是在《网页设计》、《Java面向对象程序设计》、《数据库原理及应用》三门课的内容的基础上开设的课程,为后继课程《Web开发框架技术》的学习奠定了理论和实践的基础
1.2目标
掌握三层架构的基本知识,具备三层架构软件设计理念
1.3什么是Web应用
Java Web应用由一组Servlet,HTML页,类,以及其他可以被绑定的资源构成,他可以在各种供应商提提供的实现Servlet规范的Servlet容器中运行
1.4 Web应用程序包含内容
Servlet,JSP,实用类,静态文档(如HTML,图片等),描述web应用的信息(web.xml)
1.5 Web应用程序的原理及组成部分
浏览器,HTML,HTTP,Web服务器软件,数据库
1.6静态web和动态web的区别
可交互性、是否可以对数据库进行操作
1.7 JavaEE的简要介绍
JavaEE是对JavaSE技术的眼神和扩展,分了四层:客户层组件,Web层组件,企业信息系统层组件;JavaEE的容器是一组提供服务的管理器,运行在客户端的容器,运行在JavaEE服务期短的容器
- XML(DTD,Schema)
2.1 XML概述
在现实生活中,很多事物之间的关联关系可以用树状结构图来描述,可以很直观地描述层次之间的关系,但是对于程序而言,解析图片内容非常困难,采用XML文件来保存这种具有树状结构的数据是最好的选择
XML是Extensible Markup Language,可扩展标记语言,文件后缀名为:.xml
HTML是用来显示数据,XML是用来存储和传输数据
为了便于不同应用,不同平台之间的数据共享和通信
具体的作用点为:(1)可以作为一种简单的数据库,存储并检索数据;
- 传输约定格式的文件
- 做软件的配置【配置文件:保存软件设置的文件】
XMl的哥哥HTML
- HTML可以有多个根元素,而格式良好的XML只能有一个根元素
- HTML中空格是自动过滤的,而XML中空格不会自动删除
- HTML中的标记是预定义的,而XML中的标记可以根据需要自己定义,并且可扩展
XML的闺蜜JSON
JSON:JavaScript Object Notation,Java对象表示法,作用也是存储和交换文本信息
两者比较:JSON比xml更小,更快,更易解析,所以也更受欢迎
两者作用范围:JSON适用于简单的传值,XML适用于更广阔范围
2.2 XML语法
2.2.1文档的声明:
- 在一个完整的XML文档中,必须包含一个XML文档的声明,且该声明必须位于文档的第一行,这个声明表示该文档是一个XML文档,以及遵循哪个XML版本的规范
- XML文档声明的语法格式如下所示:
<? xml 版本信息 [ 编码信息 ] [ 文档独立性信息 ] ?>
标绿的地方不能有空格
例:<?xml version=”1.0” encoding=”UTF-8” standalone=”yes” ?>
Version:版本说明 encoding:编码方式
standalone:是否为独立的文档 yes:是 no:依赖于外部文档
2.2.2 元素定义
根元素:没有嵌套其他的元素在内
空元素:例如<img></img>可以简写成<img/>
2.2.3属性定义
属性是对元素的进一步说明和描述,在一个元素中可以有多个属性
在XML文件中命名规则与HTML相同,但是属性值必须用双引号或者单引号引起来,否则视为错误。正确写法:<售价 单位=”元”>68</售价>
2.2.4注释
<!--注释信息-->
2.3 DTD约束
2.3.1什么是约束
如一本书在编写代码时赋予了两种价格,这样就很难在前端区分哪个是会员价,不恰当
2.3.2 DTD约束
DTD是早期出现的XML约束模式语言,根据他的语法创建的文件称为DTD文件,在DTD文件中,可以包含元素的定义,元素之间关系的定义,元素属性的定义和实体与符号的定义
2.3.3引入DTD约束的两种方式:
- 引入本地的DTD文件:
<!DOCTYPE 根元素名称 SYSTEM “外部DTD文件的URL”>
- 引入公共的DTD文件:Internet上的一个绝对URL地址
<!DOCTYPE 根元素名称 PUBLIC “DTD名称” “外部的DTD文件的URL”>
如果希望引入一个公共的DTD文件,则需要在DOCTYPE声明语句中使用PUBLIC属性,具体示例如下:
<!DOCTYPE web-app PUBLIC
“-//Sun Microsystem, Inc.//DTD Web Application 2.3//EN”
“http://java.sun.com//dtd//web-app_2_3.dtd”>
其中第一个引号里边的是DTD的名称,用来说明DTD符合的标准,所有者的名称以及对DTD描述的文件进行说明,虽然DTD名称看上去比较复杂,但这完全是由DTD文件发布者去考虑的事情,XML文件的编写者只要把DTD文件发布者事先定义好的DTD表示名称复制进去就可以了
如果是采用内嵌式的方式,可以定义完整语句的语法格式如下:
<?xml version=”1.0” encoding=”UTF-8” standalone=”yes” ?>
<!DOCTYPE 根元素名{
DTD定义语句
``````
}>
2.3.4 DTD语法
DTD的结构一般由元素类型定义,属性定义,实体定义,记号(notation)定义等构成,一个典型的文档类型定义会把将来要创建的XML文档的元素结构,属性类型,实体引用等预先进行定义。接下来,针对DTD结构中所涉及的语法进行详解
- 元素定义
在XML文档中,每一条<!ELEMENT``>语句用于定义一个元素,其基本的语法格式如下所示:<!ELEMENT 元素名称 元素内容>
元素名称是自定义的名称,用于定义被约束XML文档中的元素;
元素内容是对元素包含内容的声明,包括数据类型和符号两部分,共有5种形式:
#PCDATA:表示元素中潜逃的内容是普通文本字符串,其中,关键字PCDATA是Parsed Character Data的简写,例如<!ELEMENT 书名(#PCDATA)>表示书名所嵌套的内容是字符串类型
子元素:说明元素包含的元素,它通常用一对圆括号()将元素中要嵌套的一组子元素括起来,例如<!ELEMENT 书(书名,坐着,售价)>表示元素书中要嵌套书名,坐着,售价等子元素
混合内容:表示元素包含的内容既可以包含字符数据,也可以包含子元素。混合内容必须被定义零个或多个,例如:<!ELEMENT 书(#PCDATA|书名)*>表示书中嵌套的子元素书名包含零个或者多个,并且书名是字符串文本格式
EMPTY:表示该元素及不包含字符数据,也不包含子元素,是一个空元素。如果在文档中元素本身已经表明了明确的含义,就可以在DTD中用关键字EMPTY表明空元素。例如:<!ELEMENT br EMPTY>,表明br是一个没有内容的空元素
ANY:表示该元素可以包含任何的字符数据和子元素。例如,<!ELEMENT 联系人 ANY>表示联系人可以包含任何形式的内容。但在实际开发者,应该尽量避免使用ANY,因为除了根元素之外,其他使用ANY的元素都将失去DTD对XML文档的约束效果
在定义元素时元素内容中可以包含一些符号,不同的符号具体有不同的作用,具体如下:
①问号【?】:表示该对象可以出现0次或者1次
②星号【*】:表示该对象可以出现0次或多次
③加号【+】:表示该对象可以出现1次或者多次
④竖线【|】:表示列出的对象中选择1个
⑤逗号【,】:表示对象必须按照指定的顺序出现
⑥括号【()】:用于给元素进行分组
- 属性定义
①设置说明
在定义元素的同时还能为元素定义属性,定义属性的基本语法格式如下:
定义元素的属性时,有4中设置说明可以选择,具体如表所示:
#REQUIRED:表示元素的该属性是必须的
#IMPLIED:表示元素可以包含该属性,可也以不包含该属性
#FIXED:表示一个固定的属性默认值,在XML文档中不能将该属性设置为其他值,使用FIXED关键字时,还要为该属性提供一个默认值,当XML文档中没有定义该属性时,其值将自动被设置为DTD中定义的默认值
默认值:和FIXED一样,如果元素不包含该属性,该属性将被自动设置为DTD中定义的默认值,不同的是,该属性的值是可以改变的,如果XML文件中设置了该属性,新的属性值会覆盖DTD中定义的默认值
②属性类型
在DTD中定义元素的属性时,有10种属性类型可以选择,常见的几种属性类型介绍如下:
CDATA:最常用的属性类型,表明该属性类型是字符数据,与元素内容说明中的#PCDATA相同。当然,在属性设置值中出现的特殊字符,也需要使用其转义字符序列来表示,如&表示字符(&),用<表示字符(<)等
Enumerated(枚举类型):在声明属性时,可以限制属性的取值只能从一个列表中选择,这类属性属于Enumerated(枚举类型)。需要注意的是,在DTD定义中并不会出现关键字Enumerated。