【黑马程序员】第6课:XML+web服务器
<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,下面的Catalinalocalhost 在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="浏览器访问的路径"> **找到文件夹 confCatalinalocalhost 在创建一个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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 企业级分布式NoSQL数据库 SequoiaDB
- Metasploit4.2pro MSF连接postgresql编码错误问题
- Rails 3不会用rvm安装sqlite3-ruby gem?
- objective-c – UITableView didSelectRowAtInde
- autotools – 是否有一个终端工具来为Vala项目自
- NoSQL数据库之Redis数据库管理三(list类型)
- Template /template/ajax/head.ftl not found.
- Sqlite及其.net provider简介和中文编码问题
- 如何在C#中使用HTML源代码在Xamarin.Forms页面中
- ruby-on-rails – 嵌套表单和update_attributes