【HM】第6课:XML+web服务器

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

<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>






      本文转自屠夫章哥  51CTO博客,原文链接:http://blog.51cto.com/4259297/1669571,如需转载请自行联系原作者





相关文章
|
2月前
|
XML JSON 前端开发
【Web前端揭秘】XML与JSON:数据界的双雄对决,你的选择将如何改写Web世界的未来?
【8月更文挑战第26天】本文深入探讨了XML和JSON这两种广泛使用的数据交换格式在Web前端开发中的应用。XML采用自定义标签描述数据结构,适用于复杂层次数据的表示,而JSON则以键值对形式呈现数据,更为轻量且易解析。通过对两种格式的示例代码、结构特点及应用场景的分析,本文旨在帮助读者更好地理解它们的差异,并根据实际需求选择最合适的数据交换格式。
50 1
|
2月前
|
缓存 NoSQL 数据库
高性能Web服务器架构设计
【8月更文第28天】在当今互联网时代,网站的响应速度直接影响用户体验和业务成功率。因此,构建一个高性能的Web服务器架构至关重要。本文将从硬件配置、软件架构以及网络设置三个方面探讨如何提高Web服务器的性能,并提供一些实际的代码示例。
127 0
|
2月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
76 0
|
2月前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
37 0
|
2月前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
34 0
|
2月前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
40 0
|
2月前
|
JavaScript 前端开发 UED
服务器端渲染新浪潮:用Vue.js和Nuxt.js构建高性能Web应用
【8月更文挑战第30天】在现代Web开发中,提升应用性能和SEO友好性是前端开发者面临的挑战。服务器端渲染(SSR)能加快页面加载速度并改善搜索引擎优化。Vue.js结合Nuxt.js提供了一个高效框架来创建SSR应用。通过安装`create-nuxt-app`,可以轻松创建新的Nuxt.js项目,并利用其自动路由功能简化页面管理。Nuxt.js默认采用SSR模式,并支持通过`asyncData`方法预取数据,同时提供了静态站点生成和服务器端渲染的部署选项,显著提升用户体验。
61 0
|
2月前
|
数据可视化 Python
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
34 0
|
29天前
|
数据可视化 图形学 UED
只需四步,轻松开发三维模型Web应用
为了让用户更方便地应用三维模型,阿里云DataV提供了一套完整的三维模型Web模型开发方案,包括三维模型托管、应用开发、交互开发、应用分发等完整功能。只需69.3元/年,就能体验三维模型Web应用开发功能!
64 8
只需四步,轻松开发三维模型Web应用
|
19天前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
73 6