<pre>
day06
昨天内容回顾
(1)jdbc对数据库进行crud操作
(2)preparedStatement
(3)批处理
(4)事务
思维导图
1、xml简介和应用
*什么事xml:eXtensible Markup Language,可扩展标记型语言
**标记型语言:使用标签进行操作
***在html中每个标签有特定的含义
**在xml中,标签是自己定义的标签 <aa> <猫>
*xml做什么事情
**html封装数据
**xml主要的功能不是显示数据,就是存储数据(作为传输格式)
*xml是w3c组织发布技术,有1.0和1.1版本,一般都使用1.0版本
*xml的应用:
第一个:系统之间传输数据
*qq之间传输数据分析
第二个:表示生活中有关系的数据
第三个:用于配置文件中
2、xml的语法(看懂)
(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[内容]]>
3、xml的解析
(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
4、pull解析(**************)
*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();
5、web相关概念介绍
*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通信
6、web服务器介绍
(1)什么是服务器
*硬件:一台配置比较高的电脑
*软件:在一台电脑上安装了一个服务器软件,这台电脑称为服务器
*问题:打开浏览器,输入一个地址,访问到我的电脑上的文件,使用网络编程
(2)常见的web服务器
*tomcat服务器:Apache组织开发开源的服务器
*weblogic服务器:bea公司产品,收费软件
*websphere服务器:ibm公司的产品,收费的软件
7、tomcat服务器的安装和目录结构
(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
9、myeclipse集成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里面的名称(通过浏览器访问的名称)
10、http协议
(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>