微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【黑马程序员】第6课:XML+web服务器

<pre>

day06

昨天内容回顾

1jdbc数据库进行crud操作

2preparedStatement

3)批处理

4)事务

思维导图

wKioL1WSt4-Bp7myAAEwjqP1K9k206.jpg

1xml简介和应用

*什么事xmleXtensible MarkuP Language,可扩展标记型语言

**标记型语言:使用标签进行操作

***html中每个标签有特定的含义

**xml中,标签是自己定义的标签 <aa> <>

*xml做什么事情

**html封装数据

**xml主要的功能不是显示数据,就是存储数据(作为传输格式)

*xmlw3c组织发布技术,有1.01.1版本,一般都使用1.0版本

*xml的应用:

一个:系统之间传输数据

*qq之间传输数据分析

第二个:表示生活中有关系的数据

第三个:用于配置文件

2xml的语法(看懂)

1文档声明

*如果想要创建一个xml文档,首先必须要有一个文档声明

*格式: <?xml version="1.0" encoding="utf-8" ?>

**属性versionxml的版本,一般都使用1.0版本

encodingxml编码方式,一般使用utf-8

standalonexml是否独立存在(yes/no

*文档声明,必须要放到文档的第一行第一列

2)元素(标签

*有开始标签,必须要有结束标签 <name>zhangsan</name>

*标签可以嵌套,但是必须是合理的嵌套

**<a><b></b></a>

**这样写是不对的:<aa><bb></aa></bb>

*xml中只能有一个标签

*xml中区分大小写的,<p><P>含义是不一样的

*不能以数字或"_" (下划线)开头。不能这样写:<1a> <_aa>

*不能以xml(XML、或Xml )开头。不能这样写:<xmla>

*不能包含空格。不能这样写:<a b>

*名称中间不能包含冒号(:)。不能这样写:<a:b>

**xml中空格和换行都会当成内容来解析

3属性

*只能在某个标签上存在

**<mytag name=value/>属性值必须要使用引号包起来(单引号和双引号)

**xml标签上可以有多个属性,但是属性名称不能相同

**属性的命名也是遵循xml中元素的命名规范

4)注释

*html注释 <!-- -->

*xml中注释 <!-- -->

*xml中的注释不能嵌套 <!--<!--<a>11</a> -->-->

5CDATA

*标签里面的内容当做一个普通文本来显示,而不是当成标签来处理

*格式 <![CDATA[内容]]>

3xml的解析

1xml解析的分类有三个:

一个dom解析

第二个:sax解析

第三个:pull解析(****

**前两个解析掌握原理

**pull解析熟练掌握代码

2dom解析的原理

*根据xml的层级结构在内存中分配一个树形结构

**整个文档对象document、元素对象element属性对象、文本对象、这些对象的父对象是Node节点对象

*dom解析的优点:方便实现增加修改删除的操作

*dom解析的缺点:因为在内存中分配一个树形结构,如果文档过大,会造成内存溢出

3sax解析的原理

*采用事件驱动的方式,边读边解析

**当读到文档声明时候,自动调用事件,通过这个事件得到文档声明

***当读到开始标签时候,自动调用一个事件,通过这个事件得到开始标签

*sax解析读到特定的内容的时候,自动调用响应的事件

*sax解析的优点:不会造成内存的溢出

*sax解析的缺点:不能实现增加修改删除的操作

4)很多公司或者组织,根据这些解析技术,提供解析器

*sun公司提供:jaxp

*dom4j组织:dom4j

*jdom组织:jdom

*xml解析的技术有 domsaxpull

*xml解析器有:jaxpdom4jjdom

4pull解析(**************)

*pull解析原理:sax解析原理

*通过代码演示pull解析

**比如xml文件,把xml中的内容放到集合里面

1)如果想要使用pull解析xml,首先导入jar

**代码

/*

* 1、得到pull解析器工厂

* 2、通过pull工厂得到解析器

* 3、把要解析的xml文件放到pull解析器里面

* 4、进行解析

* */

XmlPullParserFactoryfactory = XmlPullParserFactory.newInstance();

XmlPullParserparser = factory.newPullParser();

parser.setInput(newFileInputStream("src/stu.xml"),"utf-8");

//开始解析

/*

* 如果没有解析到结束文档时候,一行一行向下执行

* */

List<Student>list = null;

Studentstu = null;

inttype = 0;

while((type=parser.getEventType())!=XmlPullParser.END_DOCUMENT){

//要得到解析的标签名称

StringtagName = parser.getName();

//使用switch语句进行判断

switch(type){

//执行到开始标签

caseXmlPullParser.START_TAG:

/*

* 判断是什么标签,如果是name或者age标签得到内容

* 1、如果判断标签students,创建list集合

* 2、如果表示是student,创建student对象

* 3、如果标签name 标签,得到name里面的值,把值设置到student对象里面

* 4、如果标签age 标签,得到age里面的值,把值设置到student对象里面

* */

if("students".equals(tagName)){

list = newArrayList<Student>();

}else if("student".equals(tagName)) {

stu= new Student();

}else if("name".equals(tagName)) {

//得到name的值

Stringname = parser.nextText();

stu.setName(name);

}else if("age".equals(tagName)) {

Stringage = parser.nextText();

stu.setAge(age);

}

break;

caseXmlPullParser.END_TAG:

/*

* 如果结束标签到了student

* stu对象放到list集合里面

* */

if("student".equals(tagName)){

list.add(stu);

}

break;

}

//向下解析

parser.next();

}

2pull序列化

*把内存中(集合里面)的数据,放到本地磁盘(生成xml文件

**代码

//创建Student对象

Studentstu = new Student("mary","90");

//得到pull解析器工厂

XmlPullParserFactoryfactory = XmlPullParserFactory.newInstance();

//得到序列化的接口

XmlSerializerserializer = factory.newSerializer();

OutputStreamout = new FileOutputStream("i:\\stu.xml");

serializer.setoutput(out,"utf-8");

//生成文档声明那一行

serializer.startDocument(null,true);

//生成students开始标签

serializer.startTag(null,"students");

//生成student开始和结束标签

serializer.startTag(null,"student");

//生成name的开始和结束

serializer.startTag(null,"name");

//生成内容

serializer.text(stu.getName());

serializer.endTag(null,"name");

//生成age的开始和结束

serializer.startTag(null,"age");

serializer.text(stu.getAge());

serializer.endTag(null,"age");

serializer.endTag(null,"student");

//生成students结束标签

serializer.endTag(null,"students");

//结束文档

serializer.endDocument();

5web相关概念介绍

*web:网页,javaweb:使用java开发网站(指的是动态网站)

1)静态资源和动态资源

**静态资源:html+css+js

**动态资源:数据的变化

2cs结构和bs结构

*csclient server,客户端服务器

=QQ、迅雷、电驴...

=优点:把软件安装到本地电脑,可以减轻服务器的压力

=缺点:服务器如果更新了,客户端也需要更新

*bsbroswer server,浏览器服务器

=网页、支付宝...

=优点:不需要安装软件,如果服务器更新了,不需要更新,只需要浏览器继续访问

=缺点:会造成服务器压力很大

3web通信

*比如现在通过浏览器地址栏,输入http://www.itheima.com

**输入的是一个域名,根据域名得到资源,

**把域名转换成ip地址,通过ip地址+端口号进行访问

**公共ip:直接访问网络的ip认端口80

=============================================================================

上午内容的总结

1xml基本语法(看懂)

2xml的解析

**解析技术:domsaxpull

3dom解析的原理

4sax解析的原理

5)熟练掌握pull解析的代码**********

*使用pull方式解析xml

*pull序列化的操作

6web相关概念介绍

*静态资源和动态资源

*cs结构和bs结构

*web通信

6web服务器介绍

1)什么是服务器

*硬件:一台配置比较高的电脑

*软件:在一台电脑上安装了一个服务器软件,这台电脑称为服务器

*问题:打开浏览器,输入一个地址,访问到我的电脑上的文件,使用网络编程

2)常见的web服务器

*tomcat服务器:Apache组织开发开源的服务器

*weblogic服务器:bea公司产品,收费软件

*websphere服务器:ibm公司的产品,收费的软件

7tomcat服务器的安装和目录结构

1)安装:使用压缩文件的方式进行安装,把文件解压到一个没有中文文件夹里面

2)启动tomcat

*是否安装成功:找到tomcat里面目录bin在这个目录里面找到一个文件 startup.bat,双击出现一个

黑窗口,出现提示信息,如果没有异常信息,同时在最下面出现ms,表示tomcat启动成功了。

*tomcat认的端口是8080

*访问:ip+端口号进行访问;如果访问的是本地的电脑的服务器,ip可以写成localhost或者127.0.0.1

**http://127.0.0.1:8080,出现了一个大猫的页面,表示tomcat安装成功了。

3关闭tomcat:直接关闭启动的窗口

4tomcat的目录结构

*bin*):放置tomcat启动和关闭文件目录

*conf**):放tomcat配置文件目录

*lib:放jar包目录

*logstomcat日志文件目录

*temp:临时文件目录

*webapps**):如果一个web项目想要在tomcat服务器里面运行,必须要放到webapps目录下面

*workjsp编译成servlet,放置编译成servlet目录

5tomcat产生的问题

*在安装tomcat之前,必须安装jdk,同时必须配置环境变量 JAVA_HOME

**查看错误:打开cmd查看,进入到启动的目录,cmd里面运行startup.bat,查看到错误

*端口冲突的问题

**找到tomcat目录 conf,找到server.xml修改端口

<Connector port="80"protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"/>

8、发布项目到tomcat

1)开放式目录部署

*tomcatwebapps下面创建文件夹,

*如果一个动态网站想要在tomcat里面运行,必须要遵循这样的目录结构

名称

WEB-INF

web.xml

可选的文件

libjar

classesjava编译成class文件放置目录

2)虚拟路径(****

*一个项目,项目很大,比如10g,需要把这个项目复制到tomcatwebapps下面

*通过虚拟路径进行配置,tomcat里面通过一些配置信息直接找到项目,不需要复制

*虚拟路径有两种配置方法

第一种:找到tomcat里面目录 conf,找到一个文件server.xml,进行相应的配置

下面的Host里面写标签

<ContextdocBase="项目的路径" path="通过浏览器访问的路径"></Context>

*<Context docBase="C:\bb"path="/demo"></Context>

*访问 http://127.0.0.1/demo/b.html

第二种:找到tomcat里面目录 conf,下面的Catalina\localhost

localhost创建一个xml文件,在文件里面配置虚拟路径,没有path

<?xmlversion="1.0"?>

<ContextdocBase="C:\cc"></Context>

*访问:通过xml文件名称进行访问的

http://127.0.0.1/itheima/c.html

9myeclipse集成tomcat

*为什么要使用myeclipse集成tomcat,方便开发

1)集成过程

*myeclipse中启动tomcat,选中tomcat,右键点击 run server,可以启动了

*myeclipse关闭tomcat服务器,右键点击stop server,点击红色按钮(非正常关闭服务器)

2)在myeclipse中部署项目(web项目)到tomcat里面

**会把web项目里面的webroot下面的所有内容都放到tomcatwebapps目录下面,把webroot变成了项目名称

**访问:ip:端口号/webapps下面目录名称/目录里面的文件

= http://127.0.0.1/day06-1/index.jsp

3)两个名称的问题

* 创建web项目时候有两个名称,上面那个名称是项目显示名称,下面的名称是部署到tomcat里面的名称(通过浏览器访问的名称

10http协议

1)什么是http协议:

**协议:双方达成的共同的目标

**http协议:在网络的操作过程中,产生请求和响应,遵循一定的数据格式,只有这种格式,服务器和浏览器才可以识别

***请求:打开浏览器,在浏览器的地址输入一个地址,回车,访问到某个服务器,这个过程称为请求

***响应:服务器根据请求的信息,把相关的内容显示到浏览器里面,这个过程称为响应

2http协议特点:

*基于请求和响应的操作(先有请求再有响应)

*基于tcp协议,认的端口 80

3)介绍软件httpwatch,查看当前请求和响应的数据的格式,使用范围:只能使用在ie浏览器

*安装完成之后,自动ie浏览器里面添加这个软件,如果在ie里面找不到httpwatch软件,使用快捷键 shift f2

4)使用软件查看请求和响应的数据格式

*html表单提交数据,如果是get请求数据放到请求的地址后面;如果是post请求,把提交的数据放到请求体里面

5)分别使用getpost提交表单,查询数据的格式

*get提交的数据的格式

GET/day07/form01.html?getusername=aaa HTTP/1.1

Accept:text/html,application/xhtml+xml,*/*

Referer:http://127.0.0.1/day07/form01.html

Accept-Language:zh-CN

User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; MAAU)

Accept-Encoding:gzip,deflate

Host:127.0.0.1

Connection:Keep-Alive

6http请求有三部分组成

*请求行(提交方式,路径,http版本)

*请求头(类似key-value

*请求体(post提交的数据放到这里面)

*html提交表单方式有很多种,常用的有getpost

**记住几个重要的请求头信息

一个Referer:防盗链

第二个:User-Agent获取当前使用的浏览器的类型

第三个:If-Modified-Since:用于查找本地缓存

(到讲到servlet时候再演示具体的效果

7http的响应

HTTP/1.1200 OK

Server:Apache-Coyote/1.1

Accept-Ranges:bytes

ETag:W/"748-1435654343910"

Last-Modified:Tue,30 Jun 2015 08:52:23 GMT

Content-Type:text/html

Content-Length:748

Date:Tue,30 Jun 2015 08:58:08 GMT

<!DOCTYPEhtml>

<html>

<head>

<title>form01.html</title>

<Meta http-equiv="keywords"content="keyword1,keyword2,keyword3">

<Meta http-equiv="description"content="this is my page">

<Metahttp-equiv="content-type" content="text/html;charset=UTF-8">

* 有三部分组成:

** 响应行(http版本,状态码,状态码描述)

***记住常用的状态码

200:请求成功

302重定向

404:资源找不到

500:服务器内部错误代码写错了)

503:服务器挂了

** 响应头(类似key-value

** 响应体:显示到浏览器页面上面的内容

* 记住重要的响应的头信息

一个Location,实现重定向的操作

第二个:Refresh页面定时跳转

第三个:Last-Modified,用于查找本地缓存

第四个:Content-disposition,用于文件下载的操作

=====================================================================================

今天内容的总结

1xml基本语法(看懂)

2xml的解析

**解析技术:domsaxpull

3dom解析的原理

4sax解析的原理

5)熟练掌握pull解析的代码**********

*使用pull方式解析xml

*pull序列化的操作

6web相关概念介绍

*静态资源和动态资源

*cs结构和bs结构

*web通信

7)常见的web服务器

8tomcat的安装、启动和关闭

9tomcat目录结构

*bin confwebapps

10tomcat两个问题解决

*安装jdk,配置环境变量

*端口冲突,修改端口(到server.xml进行修改

11)发布项目到tomcat

*开放式:直接复制项目到webapps下面

**如果是动态资源,遵循一定目录结构

*虚拟路径有两种配置

**server.xmlhost里面配置

<ContextdocBase="项目的路径" path="浏览器访问的路径">

**找到文件 conf\Catalina\localhost

在创建一个xml文件<ContextdocBase="项目的路径">

访问:通过xml文件名称进行访问

12myeclipse整合tomcat

*集成过程

*myeclipse中启动tomcat关闭tomcat

*myeclipse中部署项目到tomcat

*两个名称的区别

13http里面请求和响应的概念

14http请求的组成

15http响应的组成

========================================================

完成的任务

1)熟练掌握pull解析代码,我上课写的代码至少写三遍

2)把集合里面的数据序列化到本地磁盘xml文件中(使用pull解析)

3)熟悉tomcat配置虚拟路径

</pre>

原文地址:https://www.jb51.cc/xml/296554.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。