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

<pre>

day06

昨天内容回顾

(1)jdbc对数据库进行crud操作

(2)preparedStatement

(3)批处理

(4)事务

 思维导图

1xml简介和应用

*什么事xml:eXtensible Markup Language,可扩展标记型语言

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

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

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

*xml做什么事情

**html封装数据

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

*xml是w3c组织发布技术,有1.0和1.1版本,一般都使用1.0版本

*xml的应用:

第一个:系统之间传输数据

*qq之间传输数据分析

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

第三个:用于配置文件中

2xml的语法(看懂)

(1)文档声明

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

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

**属性:version,xml的版本,一般都使用1.0版本

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

standalone:xml是否独立存在(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> --> -->

(5)CDATA区

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

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

3xml的解析

(1)xml解析的分类有三个:

第一个:dom解析

第二个:sax解析

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

**前两个解析掌握原理

**pull解析熟练掌握代码

(2)dom解析的原理

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

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

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

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

(3)sax解析的原理

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

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

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

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

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

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

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

*sun公司提供:jaxp

*dom4j组织:dom4j

*jdom组织:jdom

*xml解析的技术有 dom、sax和pull

*xml解析器有:jaxp、dom4j、jdom

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();

}

(2)pull序列化

*把内存中(集合里面)的数据,放到本地磁盘(生成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

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

(2)cs结构和bs结构

*cs:client server,客户端服务器

=QQ、迅雷、电驴...

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

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

*bs:broswer server,浏览器服务器

=网页、支付宝...

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

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

(3)web通信

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

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

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

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

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

上午内容的总结

(1)xml基本语法(看懂)

(2)xml的解析

**解析技术:dom、sax和pull

(3)dom解析的原理

(4)sax解析的原理

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

*使用pull方式解析xml

*pull序列化的操作

(6)web相关概念介绍

*静态资源和动态资源

*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:直接关闭启动的窗口

(4)tomcat的目录结构

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

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

*lib:放jar包目录

*logs:tomcat日志文件目录

*temp:临时文件目录

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

*work:jsp编译成servlet,放置编译成servlet目录

(5)tomcat产生的问题

*在安装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)开放式目录部署

*在tomcat的webapps下面创建文件夹,

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

名称

WEB-INF

web.xml

可选的文件夹

lib:jar包

classes:java编译成class文件放置目录

(2)虚拟路径(****)

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

*通过虚拟路径进行配置,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下面的所有内容都放到tomcat的webapps目录下面,把webroot变成了项目名称

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

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

(3)两个名称的问题

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

10http协议

(1)什么是http协议:

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

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

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

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

(2)http协议特点:

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

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

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

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

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

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

(5)分别使用get和post提交表单,查询数据的格式

*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

(6)http请求有三部分组成

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

*请求头(类似key-value)

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

*在html提交表单方式有很多种,常用的有get和post

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

第一个:Referer:防盗链

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

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

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

(7)http的响应

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,用于文件下载的操作

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

今天内容的总结

(1)xml基本语法(看懂)

(2)xml的解析

**解析技术:dom、sax和pull

(3)dom解析的原理

(4)sax解析的原理

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

*使用pull方式解析xml

*pull序列化的操作

(6)web相关概念介绍

*静态资源和动态资源

*cs结构和bs结构

*web通信

(7)常见的web服务器

(8)tomcat的安装、启动和关闭

(9)tomcat目录结构

*bin 、conf、webapps

(10)tomcat两个问题解决

*安装jdk,配置环境变量

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

(11)发布项目到tomcat

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

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

*虚拟路径有两种配置

**server.xml的host里面配置

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

**找到文件夹 conf\Catalina\localhost

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

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

(12)myeclipse整合tomcat

*集成过程

*在myeclipse中启动tomcat和关闭tomcat

*在myeclipse中部署项目到tomcat

*两个名称的区别

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

(14)http请求的组成

(15)http响应的组成

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

完成的任务

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

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

(3)熟悉tomcat配置虚拟路径

</pre>

时间: 2024-10-13 06:06:09

【黑马程序员】第6课:XML+web服务器的相关文章

应试教育之后,我在黑马程序员找到突破口

正在上高三的弟弟前几天打电话告诉我说"姐姐,我们现在晚自习要上到晚上十一点,今年6月的高考把班级每个学生都弄得人心惶惶--"我突然想起自己当年的高考来-- 高考,于我而言已经是六年前的事情了.但每每提及高考,我仍然会从心底升起一层压力,偶尔在工作或生活中遇到难题,晚上做梦都会梦到自己坐在考场里答题的场景,由此可见高考成了我挥之不去的梦魇.再加之最近应试教育的负面新闻频出,我在搜索引擎中键入"应试教育"四个字,出现的新闻都是:"应试教育还在消磨孩子的个性&q

【黑马程序员】第12课:文件上传&文件下载&注解

<pre> day12 上节内容回顾 1.jstl的标签 *if  choose *forEach <c:forEachvar="l" items="${list}"> 2.jsp开发模式 *模型一 *模型二(mvc模式) **mvc模式 ***m:模型,使用javabean ***v:视图,使用jsp ***c:控制器,使用servlet *dao模式:数据访问对象,专注于对数据库的操作 **首先创建接口,在接口里面定义操作数据库的方法 *

黑马程序员——网络编程篇

------- android培训.java培训.期待与您交流! ---------- 概述   1.网络模型        (1).OSI参考模型        (2).TCP/IP参考模型   2.网络通讯要素         (1).IP地址        (2).端口号         (3).传输协议    3.过程        1,找到对方IP. 2,数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识. 为了方便称呼这个数据,叫做端口(逻

黑马程序员:从零基础到精通的前端学习路线

随着互联网的深入发展,前端开发工程师一跃成为市场上非常抢手的人才.很多同学,包括以前做UI的.Java的.或者对于IT完全零基础的同学都想学习前端.下图是网上流传甚广的一张前端学习思维导图,很多初学者表示看到这些密密麻麻的知识点就已经晕了.确实,前端是一门涵盖面很广的学科.但是想学前端的你也不用慌张,内容虽多但有迹可循,只要循序渐进就不怕学不好前端! 那么前端开发到底需要学什么?应该怎么学?接下来黑马程序员前端学院教你如何从零基础学习前端. 一.前端开发入门 在入门阶段,你首先要学会最基本的技能

黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 2.常见的软件:系统软件:如:DOS,Windows,Linux等.应用软件:如:扫雷,迅雷,QQ等. 3.什么是开发?制作软件. 二.基础知识:人机交互方式 4.软件的出现实现了人与计算机之间的更好的交互. 5.交互方式:图形化界面:这种方式简单直观,使用者易于接受,容易上手操作.命令行方式:

黑马程序员_Java高新技术

1  JDK5的新特性 1.1 静态导入       在API中那些不需要new对象的类,可以在类文件的开头,import static java.lang.Math.*;这里把Math中的所有的静态方法都导入了,在类中不需要调用Math类就能直接用Math的方法了 package cn.wjd.staticimport; import static java.lang.Math.*; public class StaticImport { public static void main(Str

黑马程序员____第一阶段Java开发前奏(1)

  黑马程序员____第一阶段Java开发前奏(1) ⒈软件开发:        软件是由一系列按照特定顺序组织的计算机数据和指令的集合,软件开发就是制作软件.软件的出现实现了人与计算机之间的交互.    ⒉人机交互方式:        图形化界面和命令行方式,图形化界面简单直观,使用者易于接受,容易上手操作.命令行方式需要有一个控制台,输入特定的指          令,让计算机完成一些操作,较为麻烦,需要记住一些命令.    3.常用的DOS命令:     dir:列出当前目录下的文件以及文

黑马程序员前端培训:用好课程打造高薪学员

黑马程序员前端培训:用好课程打造高薪学员   前端开发无疑是互联网行业的新贵.目前,前端开发工程师的薪资在8000-25000之间.黑马程序员顺应市场需求,推出前端与移动开发课程,致力于培养既懂前端又懂后端,既能开发网页端,也能开发移动端的Web全栈开发工程师. 作为IT教育的老牌机构,黑马程序员深知好的课程体系是教学的根本.只有优质的课程,才能打造出拿高薪的学员! 黑马程序员前端课程由资深课程研发团队,历时三年精心打造打磨而成,课程体系贯穿全栈工程师所需具备的综合技术能力. 黑马程序员前端课程

黑马程序员--Java基础--01基本概念

1.Java的三大技术架构 JAVAEE(Java Platform Enterprise Edition):  开发企业环境下的应用程序,主要针对web程序开发: JAVASE(Java Platform Standard Edition): 完成桌面应用程序的开发,是其他两者的基础 JAVAME(Java Platform Micro Edition): 开发电子消费产品和嵌入式设备,如手机中的程序 我对三大技术构架理解 1.三大技术是指哪三大技术呢? 答:三大技术分别指JAVAEE,JAV

Java程序员的10道XML面试题

如今,面对web开发人员的Java各种面试中,XML面试题在各种编程工作的面试中很常见.XML是一种成熟的技术,经常作为从一个平台到其他平台传输数据的标准.XML面试问题包括用于转换XML文件的XSLT技术,以及XPATH,XQuery等各种XML技术和XML基础知识. 笔者从论坛收集看到常见的XML面试问答题.这些问题大部分在Java面试中会问到,同时在C,C++,Scala或其他语言的编程面试中同样很有用处.作为编程人员所需要的技能之一,在任何技术工作面试之前准备一些XML问题是很有意义的.