xml及javaweb基础.docx

上传人:b****8 文档编号:9041264 上传时间:2023-02-02 格式:DOCX 页数:48 大小:41.95KB
下载 相关 举报
xml及javaweb基础.docx_第1页
第1页 / 共48页
xml及javaweb基础.docx_第2页
第2页 / 共48页
xml及javaweb基础.docx_第3页
第3页 / 共48页
xml及javaweb基础.docx_第4页
第4页 / 共48页
xml及javaweb基础.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

xml及javaweb基础.docx

《xml及javaweb基础.docx》由会员分享,可在线阅读,更多相关《xml及javaweb基础.docx(48页珍藏版)》请在冰豆网上搜索。

xml及javaweb基础.docx

xml及javaweb基础

目录

第一章eclipse使用和基础知识2

第一节eclipse的使用2

第二节JDK5.0新特性3

一、静态导入4

二、自动装箱/拆箱4

三、增强for循环4

四、可变参数5

五、枚举5

六、反射(一般是做框架用的)6

七、内省(Instrospector)7

第二章xml语言7

第一节xml语言和作用7

一、概述7

二、xml语法8

第二节DTD约束9

一、语法9

第三节dom解析11

一、dom和sax概述11

二、使用jaxp对XML文档进行Dom解析11

三、考生成绩管理系统14

第四节sax解析18

一、sax解析原理与案例18

二、dom4j解析XML文档21

三、XPaht提取XML文档数据23

第五节schema约束23

一、schema概述23

二、名字空间的概念24

三、schema基本语法25

第三章tomcat服务器及http26

第一节tomcat服务器26

一、tomcat服务器安装26

二、web应用和虚拟目录的使用27

三、web应用的组织机构27

四、配置虚拟主机27

五、web资源访问流程28

六、其他知识28

第二节http29

一、http协议概述29

二、请求行和请求方式29

三、http常用请求头各个头字段详解29

四、HTTP响应状态行详解30

第一章eclipse使用和基础知识

第一节eclipse的使用

1、Badversionnumberin.classfile错误的版本号

编译的环境过高,而运行环境却过低,解决方案就是将编译环境和运行环境变为一致。

注意:

若是运行环境比编译环境过高是不会出现此问题的。

改变编译环境的方法:

右击工程名-->选择“Properties”-->选择“javaCompiler”-->点击ConfigureWorkspaceSettings...-->弹出Preferences(Filtered)对话框,选择编译器版本

改变运行环境的方法:

右击工程名-->选择“Properties”-->选择“JavaBuildPath”-->选择Libraries-->Remove运行环境,AddLibrary添加新的版本的运行环境

2、DebugAs

首先是设置断点

F5(stepinto)跳入F6(stepover)跳下一行F7(stepreturn)跳回

droptofram:

跳到当前方法的第一行resume:

跳到下一个断点,如果没有下一个断点,则程序会执行结束。

watch:

观察变量或者表达式的值

断点注意的问题:

1、断点调试完成后,要在breakpoint视图中清除所有断点。

2、断点调试完成后,一定要记得结束运行断点的jvm。

3、eclipise快键键的使用

windows-->Preferences输入key可以在里面配置快键键

Alt+/内容提示Ctrl+1快速修复ctrl+shift+o导包

ctrl+shift+f快速排版Alt+方向键向前向后ctrl+shift+/添加注释

ctrl+shift+\去除注释F2查看方法说明重置透视图windows下的菜单

ctrl+shift+xctrl+shift+y大小写ctrl+alt+向下键(有些不能用)复制行

ctrl+T查看类的继承关系Alt+向上,向下ctrl+shift+t查看源代码

ctrl+shift+l查看所有快键键

4、junit测试框架

假设有这么一个类:

classPerson{

publicvoideat(){

System.out.println("eat");

}

publicvoidrun(){

System.out.println("run");

}

publicintxx(){

return2;

}

}

要是测试上面的类,一般的做法就是使用main()方法,这样做着实太费事,此时我们可以新建一个测试类。

classDemo{

privatePersonperson=null;

@beforeClass

publicstaticvoidbeforeclass(){

System.out.println("会在类加载时运行,且在测试内只运行一次");

}

@befor

publicvoidbefore(){

person=newPerson();

}

@Test

publicvoidrunTest(){

p.run();

}

publicvoidxxText(){

Assert.assertEquals("1",p.xx())

}

建立测试类,在方法前加入@Test,在右边视图中选择方法,右击runas——>JunitTest;要是测试所有的方法,就点击测试类,右击runas——>JunitTest。

@before----方法会在每个测试方法运行时执行一次,一般用于初始化资源

@after----方法会在每个测试方法结束后执行一次,一般用于释放资源

@beforeClass----方法是静态的,类加载的时候运行,只运行一次

@afterClass----方法是静态的,类释放的时侯运行,只运行一次

Assert断言

|--Assert.assertEquals("1",p.run())在执行p.run()下的方法时,期望方法的返回值是1,若返回值不为1,则测试不通过。

|--Assert.assertArrayEquals(newint[]{1,1},newint[]{1,2})测试不通过,因为期望返回的值int[]{1,1}和实际返回的值int[]{1,2}不同。

|--断言下还有很多其他的功能,这里不再一一介绍。

第二节JDK5.0新特性

JDK5.0新增了很多新的java特性,利用这些新语法可以帮助开发人员编写更加高效,清晰,安全的代码。

一、静态导入

静态导入用于简化程序对类静态属性和方法的调用

语法为:

importstatic包名.类名.静态属性|静态方法

例如:

importstaticjava.lang.System.out

二、自动装箱/拆箱

自动装箱:

指开发人员可以把一个基本数据类型直接赋值给对应的包装类。

自动拆箱:

指开发人员可以把一个包装类对象直接赋值给对应的基本数据类型。

典型应用:

Listlist=newArrayList();

list.add

(1);

intj=(Integer)list.get(0);

三、增强for循环

引入增强for循环的原因:

在JDK5以前的版本中,遍历数组或者集合中的元素,需要先获得数组的长度或者集合的迭代器比较麻烦。

JDK5中定义了一种新的语法:

增强for循环,以简化此类操作。

增强for循环只能用在数组或者实现iterable接口的集合类上。

其语法格式为:

for(变量类型变量:

需要迭代的数组或者集合){}

Mapmap=newHashMap();

//传统方式1//传统方式2

Setset=map.keySet();Setset=map.entrySet();

Iteratorit=set.iterator();Iteratorit=set.iterator();

while(it.hasNext()){while(it.hasNext()){

Stringkey=(String)it.next();Map.Entryentry=(Entry)it.next();

Stringvalue=(String)map.get(key);Stringkey=(String)entry.getKey();

}Stringvalue=(String)entry.getValue(value)

}

//增强for循环1

for(Objectobj:

map.keySet()){

Stringkey=(String)obj;

Stringvalue=(String)map.get(key);

}

//增强for循环2

for(Objectobj:

map.entrySet()){

Map.Entryentry=(Entry)obj;

Stringkey=(String)entry.getKey();

Stringvalue=(String)entry.getValue();

}

使用增强for循环需要注意的问题:

增强for循环只适合取数据;要修改数组或者集合中的数据,要用传统方式。

四、可变参数

从JDK5开始,java允许为方法定义长度可变的参数,语法:

publicvoidfoo(int...args){}

注意事项:

1、调用可变参数的方法是,编译器将自动创建一个数组保存传递给方法的可变参数,因此,程序员可以再方法体中以数组的形式访问可变参数。

2、可变参数只能处于参数列表的最后,一个方法最多只能有一个长度可变的参数。

五、枚举

1、一些程序在运行时,它需要的数据不能是任意的,而必须是一定范围的值,JDK5以前采用自定义类来解决,JDK5以后可以直接采用枚举解决。

枚举出现之前,得这样写代码

classGrade{

privateGrade(){}

privatestaticfinnalGradeA=newGrade();

privatestaticfinnalGradeB=newGrade();

privatestaticfinnalGradeC=newGrade();

}

枚举出现以后,就可以这样写了:

enumGrade{

A,B,C;

}

2、一个枚举也可以有构造函数、字段和方法。

下面的代码是定义枚举的构造函数、方法和字段,去封装更多的信息

enmuGrade{

A("100-90"),B("89-80"),C("79-70");//封装每个对象对应的分数

privateStringvalue;

privateGrade(Stringvalue){this.value=value;}

publicStringgetValue(){returnthis.value}

}

3、带抽象方法的枚举

enmuGrade{

A("100-90"){

publicabstractStringchinaValue(){return"优";}

},

B("89-80"){

publicabstractStringchinaValue(){return"良";}

},

C("79-70"){

publicabstractStringchinaValue(){return"中";}

};

privateStringvalue;

privateGrade(Stringvalue){this.value=value;}

publicStringgetValue(){returnthis.value}

publicabstractStringchinaValue();//抽象方法,因为有抽象方法,所以新建对象的时候得复写其抽象方法。

}

4、枚举的常用方法和其它细节

a、枚举类也是一种特殊形式的java类

b、枚举类中声明的每一个枚举值代表枚举类的一个实例对象

c、与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数。

但是枚举类的构造函数必须是私有的(这点不难理解)

d、枚举类也可以实现接口

e、JDK5中还扩展了swith语句,它除了可以接受int,byte,char,short外,还可以接受一个枚举类型的对象

f、若枚举类只用一个枚举值,则可以当做单例设计模式使用。

g、java中声明的枚举类。

均是java.lang.Enmu类的孩子,他继承了Enum类的所有方法,常用方法:

name()返回枚举的名称;

ordinal()返回枚举常量的序数;序号从0开始。

valueof(ClassenumClass,Stringname)返回带指定名称的枚举类型的枚举常量;其实可以通俗的认为将字符串转变为枚举,一般可以用来检测该字符串是否为合法的枚举值。

values()此方法虽然在JDK文档中查不到,但是每个枚举类都具有该方法,它用于遍历枚举的所有枚举值。

例如:

Grade[]g=Gread.values();

六、反射(一般是做框架用的)

一个类有多个组成部分,例如:

成员变量,方法,构造函数等。

反射就是加载类,并剖析出类的各个组成部分。

1、加载类

java中有一个Class类用于代表某一个类的字节码。

Class类即然代表某个类的字节码,他当然就要提供加载某个字节码的方法:

forName()。

forName()方法用于加载某个类的字节码在内存中,并使用class对象进行封装。

获得class对象总共有三种方式:

类名.class;对象.getClass();Class.forName("");

2、Class对象提供了如下常用方法:

getConstructor()getMethod()getMethods()getField()

getDeclaredConstructor()getDeclaredMethod()getDeclaredField()

这些方法分别用于从类中解剖出构造函数、方法和成员变量。

七、内省(Instrospector)

1、为什么要学内省?

开发框架中,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术来完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性。

2、内省访问javaBean属性的两种方式

a、通过PropertyDescriptor类操作Bean的属性

b、通过Instrospector类获得Bean对象的BeanInfo,然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的get/set方法,然后通过反射机制来调用这些方法。

3、代码示例

一个javaBean

ClassPerson{

privatestringname;

privateStringpassword;

privatrintage;

一些get和set方法...

publicvoidsetAA(){}

}//注意:

这个javaBean有哪些属性是通过有多少个get或者set来确定的,上面的这个javaBean中有五个属性,除了三个及其AA外,还有一个是从Object中继承的class属性(因为有getClass()方法)。

第二章xml语言

第一节xml语言和作用

一、概述

xml(extensiblemarkuplanguage)可扩展标记语言。

出现的根本目标是为了描述现实生活中有关系的数据,例如国家--省份--城市这样的关系。

它允许用户自定义标签。

一个标签用于描述一段数据,一个标签可分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其他标签描述其他数据,以此来实现数据关系的描述。

xml技术除了用于保存有关系的数据之外,还经常用作于软件配置文件,以描述程序模块之间的关系。

在一个软件系统中,为提高系统的灵活性,它所启动的模块通常由其配置文件决定。

写好的配置文件可以在浏览其中打开以检查其正确性。

二、xml语法

一个xml文件分分为如下几个部分

1、文档声明

在编写XML文档时,需要先使用文档声明,声明XML文档的类型。

最简单的声明语句为:

xmlversion="1.0"?

>

用encoding属性说明文档的字符编码,用standalone属性说明文档是否独立

xmlversion="1.0"encoding="UTF-8"standalone="yes"?

>

备注:

上面所有的字符包括空格都得为半角的英文,否则会出现错误。

编写好的xml文件还可在eclipse中打开以检查其正确性。

2、元素

XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式,例如a、包含体标签:

;b、简写为

一个标签中也可以嵌套若干个子标签,但所有的标签都必须是合理的嵌套。

格式良好的XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子孙标签。

对于XML标签中出现的所有空格和换行,在XML解析程序中都会当做标签内容进行处理,即空格和换行会当成原始内容进行处理。

一个XML标签元素可以包含字母,数字,以及其他一些可见字符,但是必须遵守一些规范:

区分大小写;不能以数字或者下划线开头;不能以xml或者XML等开头;不能包含空格;名称中间不能包含冒号。

3、属性

一个标签可以包含有多个属性,每个属性都有他自己的名称和取值例如

属性值一定要用双引号或者单引号引起来。

定义属性必须遵循与标签相同的命名规范。

在XML技术中,标签属性所代表的信息,也可以被改为用子元素的形式来描述,例如:

text

4、注释

--注释-->;注意XML声明之前不能有注释,注释不能嵌套。

5、CDATA区、特殊字符

在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,可以将这些内容放在CDATA区中,对于CDATA区域中的内容,XML解析程序不会处理,而是直接原封不动的输出,定义格式为:

[CDATA[内容]]>。

对于一些单个字符,若想显示其原样样式,也可以使用转义的形式进行处理:

&--&<--<>-->"--"'--&apos

6、处理指令(processinginsruction)

处理指令,简称PI,用来指挥解析引擎如何解析XML文档内容。

例如在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示XML文档中的内容。

xml-stylesheettype="text/css"href="1.css"?

>。

处理指令必须以

作为开头,以?

>作为结束。

xmlversion="1.0"?

>声明语句就是最常见的处理指令。

第二节DTD约束

在XML技术中,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。

常用的XML约束技术有XMLDTD和XMLSchema。

本节先介绍DTD约束。

一、语法

1、DTD约束既可以作为一个单独的文件编写,也可以在XML文件内编写。

2、XML文件使用DOCTYPE声明语句来指明它所遵循的DTD文件,DOCTYPE有两种形式:

a、当引用的文件在本地时,采用如下的方式

DOCTYPE文档根节点SYSTEM"DTD文件的URL">

b、当引用的文件是一个公共的文件时,采用如下方式:

DOCTYPE文档根节点PUBLIC"DTD名称""DTD文件的URL">

3、元素定义

在DTD文档中使用ELEMENT声明一个XML元素,语法格式为:

ELEMENT元素名称元素类型>;元素类型可以直接是元素内容或者类型

(1)如果为元素内容,直接使用()括起来,例如

ELEMENT书架(书名,作者,售价)>,

ELEMENT书名(#PCDATA)>

元素内容可以使用如下方式来描述内容的组成关系:

a、用逗号分隔,表示内容的出现顺序必须与声明时一致

ELEMENTMYFILE(TITLE,AUTHOR,EMAIL)>

b、用|分隔,表示任选其一,即多个只能出现一个

ELEMENTMYFILE(TITLE|AUTHOR|EMAIL)>

注意:

1、在元素内容中可以使用+*?

等符号表示元素出现的次数,+代表一次或者多次;?

代表0次或者一次;*代表0次或者多次。

如果后面没有设置,则代表必须出现一次。

2、可以使用圆括号()批量设置,例如:

ELEMENTMYFILE((TITLE*,AUTHOR?

EMAIL)*|COMMENT)>

(2)如果为元素类型,则直接书写,DTD规范定义了两种类型EMPTY和ANY

4、属性定义(attribute)

XML文档中的标签属性需要通过ATTLIST为其设置属性。

【语法格式】

ATTLIST元素名

属性名1属性值类型设置说明

属性名1属性值类型设置说明

......

>

【属性值类型】CDATA,ENUMERATEN,ID,ENTITY(见标题5)

【设置说明】#REQUIRED必须设置该属性;#IMPLIED可以设置也可以不设置;#FIXED说明该属性有一个固定值,在XML文件中不能为该属性值设置其它值。

但需要该属性提供这个值;直接使用默认值:

在XML中可以设置该值也可以不设置该属性值,若没有设置使用默认值。

【举例】

ATTLIST页面作者

姓名CDATA#IMPLIED

职务信息CDATA#FIXED"工程师"

个人爱好CDATA"上网"

>

5、属性值类型定义

(1)ENUMERATED

属性的类型可以是一组取值的列表,在XML文件中,设置的属性值只能在这个列表中的某个值(枚举)。

xmlversion="1.0"encoding="gk2312"standalone="yes"?

>

DOCTYPE购物篮[

ELEMENT肉EMPTY>

ATTLIST肉品种(鸡肉|牛肉|猪肉|鱼肉)"鸡肉">

]>

(2)ID

表示属性的设置值为一个唯一值。

ID属性的值只能有字母、下划线开始,不能出现空白

xmlversion="1.0"encoding="gk2312"standalone="yes"?

>

DOCTYPE联系人列表[

ELEMENT联系人列表ANY>

ELEMENT联系人(姓名,EMAIL)>

ELEMENT姓名(#PCDATA)>

ELEMENTEMALI(#PCDATA)>

ATTLIST联系人编号ID#REQURED>

]>

(3)ENTITY实体类型

实体就是用于为一段内容创建一个别名,以后在XML文档中就可以使用别名应用这段内容了。

在DTD定义中,一条

ENTITY...>语句用于定义一个实体。

实体分为两种类型,引用实体和参数实体

a、引用实体

引用实体主要在XML文档中

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1