KISSY之IO前奏

今日任务:了解学习IO模块之前必备知识.

在学习Kissy的IO之前,咱们先来了解下ajax,http,json等知识,这些是学习IO模块的必备知识。这里只是给出了一些概念性的介绍,具体用法请大家找资料学习。如果已经对这些知识有所了解,那么恭喜你已经有了不错的基础。

一、Ajax

Ajax的全称是:AsynchronousJavaScript+XML,异步JacascriptAnd Xml,是指一种创建交互式网页应用的网页开发技术。它并不是一种新技术,而是整合了JavaScript、Xml、CSS等已有技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新,这意味着可以再不重新加载整个网页的情况下,对网页的某部分进行更新。Ajax的处理过程:一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如同名字所暗示的,它允许一个客户端脚本来执行HTTP请求,并且将会解析一个XML格式的服务器响应。Ajax处理过程中的第一步是创建一个XMLHttpRequest实例。使用HTTP方法(GET或POST)来处理请求,并将目标URL设置到XMLHttpRequest对象上。当你发送HTTP请求,你不希望浏览器挂起并等待服务器的响应,取而代之的是,你希望通过页面继续响应用户的界面交互,并在服务器响应真正到达后处理它们。要完成它,你可以向XMLHttpRequest注册一个回调函数,并异步地派发XMLHttpRequest请求。控制权马上就被返回到浏览器,当服务器响应到达时,回调函数将会被调用。

在JavaWeb服务器上,到达的请求与任何其它HttpServletRequest一样。在解析请求参数后,servlet执行必需的应用逻辑,将响应序列化到XML中,并将它写回HttpServletResponse。

二、HTTP

HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。

(1)HTTP请求格式

当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:

l   请求方法URI协议/版本

l   请求头(RequestHeader)

l   请求正文

下面是一个HTTP请求的例子:

GET/sample.jspHTTP/1.1

Accept:image/gif.image/jpeg,*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible;MSIE5.01;WindowNT5.0)

Accept-Encoding:gzip,deflate

username=jinqiao&password=1234

1)请求方法URI协议/版本

请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1

以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。

根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。

URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。

2)请求头(Request Header)

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

Accept:image/gif.image/jpeg.*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible:MSIE5.01:WindowsNT5.0)

Accept-Encoding:gzip,deflate.

3)请求正文

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:

username=jinqiao&password=1234

在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。

(2)HTTP请求方法我这里只讨论GET方法与POST方法

1)GET方法

GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如

Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB

从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大

2) POST方法

POST 方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。

  从编程的角度来讲,如果用户通过GET方法提交数据,则数据存放在QUERY_STRING环境变量中,而POST方法提交的数据则可以从标准输入流中获取。

3)HTTP应答

与HTTP请求相似,HTTP响应也由3个部分构成,分别是:

l 协议状态版本代码描述

l 响应头(Response Header)

l 响应正文

下面是一个HTTP响应的例子:

HTTP/1.1 200 OK

Server:Apache Tomcat/5.0.12

Date:Mon,6Oct2003 13:23:42 GMT

Content-Length:112

<html>
<head>

<title>HTTP响应示例<title>

</head>

<body>

Hello HTTP!

</body>

</html>
协议状态代码描述HTTP响应的第一行类似于HTTP请求的第一行,它表示通信所用的协议是HTTP1.1服务器已经成功的处理了客户端发出的请求(200表示成功):

HTTP/1.1 200 OK
响应头(Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等:

   Server:Apache Tomcat/5.0.12

Date:Mon,6Oct2003 13:13:33 GMT

Content-Type:text/html

Last-Moified:Mon,6 Oct 2003 13:23:42 GMT

Content-Length:112

响应正文响应正文就是服务器返回的HTML页面:

  <html>
<head>

<title>HTTP响应示例<title>

</head>

<body>

Hello HTTP!

</body>

</html>

响应头和正文之间也必须用空行分隔。  

l        HTTP应答码

   HTTP应答码也称为状态码,它反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型:

   1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中

   2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK

3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。

4XX-客户端错误(ClientError),表示客户端提交的请求有错误例如:404 NOT

Found,意味着请求中所引用的文档不存在。

5XX-服务器错误(ServerError)表示服务器不能完成对请求的处理:如 500

对于我们Web开发人员来说掌握HTTP应答码有助于提高Web应用程序调试的效率和准确性。

三、JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

Json语法规则:

JSON 语法是 JavaScript 对象表示语法的子集。

数据在名称/值对中;数据由逗号分隔;花括号保存对象;方括号保存数组。JSON 值可以是:数字(整数或浮点数),字符串(在双引号中),逻辑值(true 或 false),数组(在方括号中),对象(在花括号中),以及null。

例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它。

var people={

"programmers":[{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},

{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},

{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}

],

"authors":[

{"firstName":"Isaac","lastName":"Asimov","genre":"sciencefiction"},

{"firstName":"Tad","lastName":"Williams","genre":"fantasy"},

{"firstName":"Frank","lastName":"Peretti","genre":"christianfiction"}

],

"musicians":[

{"firstName":"Eric","lastName":"Clapton","instrument":"guitar"},

{"firstName":"Sergei","lastName":"Rachmaninoff","instrument":"piano"}

]

}

尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进JavaScript变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问programmers 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:people.programmers[0].lastName;

注意,数组索引是从零开始的。所以,这行代码首先访问 people变量中的数据;然后移动到称为programmers的条目,再移动到第一个记录([0]);最后,访问 lastName键的值。结果是字符串值 “McLaughlin”。

KISSY基础篇乄KISSY之IO前奏相关推荐

  1. KISSY基础篇乄KISSY之DOM(1)

    KISSY之DOM(1) 今日任务:了解学习DOM的基础知识以及学习拆合菜单实例 KISSY的DOM模块的子模块和方法众多,但又很重要,最好的情况是全部熟练掌握,当然一开始学是不可能全部记住DOM的方 ...

  2. KISSY基础篇乄KISSY之HelloWorld

    KISSY之HelloWorld 今日任务:使用kissy实现简单的hello World! 一.新建Kissy测试项目 打开STS,File->StaticWeb Project,命名其Pro ...

  3. KISSY基础篇乄KISSY之IO(2)

    第14天:KISSY之IO(2) 今日任务:创建Maven Project并学习IO模块. 这一节我们主要来看一下IO模块里的一些方法. 一.Maven Project (1)创建mavenproje ...

  4. KISSY基础篇乄KISSY之IO(1)

    KISSY之IO(1) 今日任务:了解学习IO模块. IO,即Ajax,只是KISSY中不存在名称为"ajax"的模块,必须使用名字"io". KISSY.us ...

  5. KISSY基础篇乄KISSY简介

    KISSY简介 今日任务:了解学习有关Kissy的一些知识,以便于后续的学习 一.相约KISSY,必先了解 KISSY 是一款跨终端.模块化.高性能.使用简单的 JavaScript 框架.除了完备的 ...

  6. KISSY基础篇乄KISSY之Event

    KISSY之Event事件 今日任务:了解学习Event事件的基础知识 Event 模块是KISSY最重要的模块之一,他包含自定义事件机制.事件对象封装.DOM事件封装.面向多终端的事件行为统一.下辖 ...

  7. KISSY基础篇乄KISSY之Seed

    KISSY之Seed 今日任务:了解Kissy的模块载入机制 首先恭喜你已经成功使用kissy想世界打了个招呼,不过这只是刚起步,咱们还有很多地方需要学习.在本节咱们就推开kissy的大门,看看房间里 ...

  8. KISSY基础篇乄KISSY之DOM(2)

    KISSY之DOM(2) 今日任务:深入学习DOM知识及进一步完善拆合菜单实例 在上一篇的教程中,明河使用KISSY.DOM的常用方法制作了一个拆合菜单,同时也演练到了几个常用方法,比如addClas ...

  9. KISSY基础篇乄KISSY之优化实例

    KISSY之优化实例 今日任务:拆合菜单代码优化重构 这一节我们主要来看一下拆合菜单进行代码优化重构后的效果. 一.测试页面代码 <div id="content"> ...

最新文章

  1. 排错经历:openstack搭建dashboard进入输入帐号密码登录后报错
  2. 超图 for javascript 版本入门程序讲解
  3. 2.2.2 定点数的运算(移位、原码和补码的加减乘除、溢出概念和判别方法)
  4. disk genius_如何预约Apple Store商店或Genius Bar
  5. RUNOOB python练习题13 水仙花数
  6. 前端学习(506):垂直居中的第二种方式
  7. ansible安装与配置文件
  8. protostuff java_protostuff 及其注意事项
  9. cmd cd 无法切换目录_如何获取用户主目录?os/user 就可以了,为什么要 gohomedir...
  10. PID控制算法介绍与C程序实现
  11. (附源码)计算机毕业设计ssm高校学科竞赛管理系统
  12. Unity粒子特效系列-闪星星的宝箱
  13. Redis:列表LPUSH、LPUSHX、RPUSH、RPUSHX、LPOP、RPOP命令介绍
  14. 迁移公众号和个人博客
  15. keil遇到FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘解决方法
  16. js 全屏移动漂浮框广告栏(3w)
  17. altium designer 快捷键
  18. 【论文翻译】High-Performance Long-Term Tracking with Meta-Updater
  19. python识别文字软件_【Python 教程】使用 Python 和大漠插件进行文字识别
  20. 【偶遇小bug】浏览器无法翻译此网页解决

热门文章

  1. tShow+VS2005配置日记 2010-10-11 18:31
  2. Hbase--Scan全局扫描中的过滤器
  3. 数仓架构实践3:苏宁售后体系四层模型架构
  4. Amazon Australia 可通过EDI实现哪些业务单据对接?
  5. 有小数点的补码怎么算_-49d补码的是多少?怎样计算的?
  6. python指纹识别_分享Python编写的网站组件指纹扫描工具.
  7. matlab计算macd_[原创]基于MATLAB的一个简单的交易策略(基于MACD)的Matlab代码-经管之家官网!...
  8. Win10出现0x8000000b错误如何解决?
  9. 【PPA2】 第二章 监听线路
  10. 思科证书申请 CCNA CCNP CCIE