KISSY基础篇乄KISSY之IO前奏
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前奏相关推荐
- KISSY基础篇乄KISSY之DOM(1)
KISSY之DOM(1) 今日任务:了解学习DOM的基础知识以及学习拆合菜单实例 KISSY的DOM模块的子模块和方法众多,但又很重要,最好的情况是全部熟练掌握,当然一开始学是不可能全部记住DOM的方 ...
- KISSY基础篇乄KISSY之HelloWorld
KISSY之HelloWorld 今日任务:使用kissy实现简单的hello World! 一.新建Kissy测试项目 打开STS,File->StaticWeb Project,命名其Pro ...
- KISSY基础篇乄KISSY之IO(2)
第14天:KISSY之IO(2) 今日任务:创建Maven Project并学习IO模块. 这一节我们主要来看一下IO模块里的一些方法. 一.Maven Project (1)创建mavenproje ...
- KISSY基础篇乄KISSY之IO(1)
KISSY之IO(1) 今日任务:了解学习IO模块. IO,即Ajax,只是KISSY中不存在名称为"ajax"的模块,必须使用名字"io". KISSY.us ...
- KISSY基础篇乄KISSY简介
KISSY简介 今日任务:了解学习有关Kissy的一些知识,以便于后续的学习 一.相约KISSY,必先了解 KISSY 是一款跨终端.模块化.高性能.使用简单的 JavaScript 框架.除了完备的 ...
- KISSY基础篇乄KISSY之Event
KISSY之Event事件 今日任务:了解学习Event事件的基础知识 Event 模块是KISSY最重要的模块之一,他包含自定义事件机制.事件对象封装.DOM事件封装.面向多终端的事件行为统一.下辖 ...
- KISSY基础篇乄KISSY之Seed
KISSY之Seed 今日任务:了解Kissy的模块载入机制 首先恭喜你已经成功使用kissy想世界打了个招呼,不过这只是刚起步,咱们还有很多地方需要学习.在本节咱们就推开kissy的大门,看看房间里 ...
- KISSY基础篇乄KISSY之DOM(2)
KISSY之DOM(2) 今日任务:深入学习DOM知识及进一步完善拆合菜单实例 在上一篇的教程中,明河使用KISSY.DOM的常用方法制作了一个拆合菜单,同时也演练到了几个常用方法,比如addClas ...
- KISSY基础篇乄KISSY之优化实例
KISSY之优化实例 今日任务:拆合菜单代码优化重构 这一节我们主要来看一下拆合菜单进行代码优化重构后的效果. 一.测试页面代码 <div id="content"> ...
最新文章
- 排错经历:openstack搭建dashboard进入输入帐号密码登录后报错
- 超图 for javascript 版本入门程序讲解
- 2.2.2 定点数的运算(移位、原码和补码的加减乘除、溢出概念和判别方法)
- disk genius_如何预约Apple Store商店或Genius Bar
- RUNOOB python练习题13 水仙花数
- 前端学习(506):垂直居中的第二种方式
- ansible安装与配置文件
- protostuff java_protostuff 及其注意事项
- cmd cd 无法切换目录_如何获取用户主目录?os/user 就可以了,为什么要 gohomedir...
- PID控制算法介绍与C程序实现
- (附源码)计算机毕业设计ssm高校学科竞赛管理系统
- Unity粒子特效系列-闪星星的宝箱
- Redis:列表LPUSH、LPUSHX、RPUSH、RPUSHX、LPOP、RPOP命令介绍
- 迁移公众号和个人博客
- keil遇到FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘解决方法
- js 全屏移动漂浮框广告栏(3w)
- altium designer 快捷键
- 【论文翻译】High-Performance Long-Term Tracking with Meta-Updater
- python识别文字软件_【Python 教程】使用 Python 和大漠插件进行文字识别
- 【偶遇小bug】浏览器无法翻译此网页解决
热门文章
- tShow+VS2005配置日记 2010-10-11 18:31
- Hbase--Scan全局扫描中的过滤器
- 数仓架构实践3:苏宁售后体系四层模型架构
- Amazon Australia 可通过EDI实现哪些业务单据对接?
- 有小数点的补码怎么算_-49d补码的是多少?怎样计算的?
- python指纹识别_分享Python编写的网站组件指纹扫描工具.
- matlab计算macd_[原创]基于MATLAB的一个简单的交易策略(基于MACD)的Matlab代码-经管之家官网!...
- Win10出现0x8000000b错误如何解决?
- 【PPA2】 第二章 监听线路
- 思科证书申请 CCNA CCNP CCIE