我是靠谱客的博主 忧虑太阳,最近开发中收集的这篇文章主要介绍Bootstrap第一部分 web数据交互技术概述,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第一部分 web数据交互技术概述(上午客观题)

1、Web基本概念

WWW (World Wide Web ):万维网,创建人:蒂姆.伯纳斯-李(Tim Berners-Less)

HTML(HyperText Markup Language):超文本标记语言,1990年,蒂姆.伯纳斯-李及团队创建

HTTP(HyperText Transfer Protocol):超文本传输协议

URL(Uniform Resource Locators):统一资源定位符号

2、与后台交互技术有

  • AJAX(Asynchronous Javascript and XML):异步Javascript和XML技术。无需重新加载整个网页的情况下,根据需要更新部分网页的技术。
  • iframe:嵌入式框架。不需要加载整个页面,只需要加载一个框架页面(iframe中载入的页面)即可。
  • WebSocket:一种网络通信协议,使用全双工(客户端和服务端都可以向对方传递数据)的通信方式。
  • .......

WebSocket通信的优点:允许服务端主动向客户端推送数据。

Ajax的缺点:获取数据需要客户端主动向服务端发出请求,过量请求会加重服务端的负载。

AJAX优点:页面局部更新(往往仅需要更新少量的数据),减少了数据传输量,页面显示更快,用户体验更好。

第二部分 HTTP概述(上午客观题)

1、概念

HTTP(HyperText Transfer Protocol):超文本传输协议。

哪些内容属性超文本呢?

  • HTML
  • CSS
  • Javascript
  • 图片
  • 音频
  • 视频
  • 文件
  • ......

HTTP基于:客户端/服务端的架构模型(包括C/S架构和B/S架构)

2、HTTP的消息结构(记住每个部分的结构,顺序不能乱)

【客户端的请求消息】

第一部分:请求行

请求方法

空格

URL

空格

协议版本

回车符

换行符

请求方法:最常用GET和POST(记住),其他了解

序号

方法

描述

1

GET

请求指定的页面信息,并返回实体主体。

2

HEAD

类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头

3

POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

4

PUT

从客户端向服务器传送的数据取代指定的文档的内容。

5

DELETE

请求服务器删除指定的页面。

6

CONNECT

HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

7

OPTIONS

允许客户端查看服务器的性能。

8

TRACE

回显服务器收到的请求,主要用于测试或诊断。

9

PATCH

是对 PUT 方法的补充,用来对已知资源进行局部更新 。

URL:请求的URL地址

协议版本:

第二部分:请求头部

头部字段名

:

回车符

换行符

........

头部字段名

:

回车符

换行符

格式为:“属性名:属性值”,可以有若干个部分

第三部分:空行

回车符

换行符

第四部分:请求数据

 

客户端的一些请求参数及对应的值

【服务端的响应消息】

第一部分:状态行

HTTP/1.1 200 OK

HTTP为协议名称,1.1为版本号,200和OK表示服务器成功响应了此次请求

第二部分:消息报头

由若干个“属性名:属性值”组成,

第三部分:空行

第四部分:响应正文

3、HTTP的特点

  • 由客户端发先发起请求,再由服务端回头响应
  • 简单快速:HTTP服务器程序规模小,通信速度快
  • 灵活:允许传送任意类型的数据
  • 无连接:每次连接只处理一个请求,处理请求并收到客户端响应后即断开连接
  • 无状态:每次HTTP请求之间都是互相独立的

4、请求[消息头]常见信息

Accept: 浏览器可接受的MIME类型

Accept-Charset:浏览器可接受的字符集

Accept-Encoding: 浏览器能够进行解码的数据编码方式

Accept-Language: 浏览器所希望的语言种类

Cache-Control:是否使用缓存

Connection: 表示是否需要持久连接

Cookie:向服务器发送的Cookie信息

Host: 初始URL中的主机和端口

Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档

Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面

User-Agent:浏览器类型

标记黄色背景的内容为重要内容,请重点掌握

MIME(Multipurpose Internet Mail Extensions): 多用途互联网邮件扩展类型。

常见的MIME类型(通用型):

超文本标记语言文本html: text/html

xml文档 .xml :text/xml

XHTML文档 .xhtml :application/xhtml+xml

普通文本.txt: text/plain

RTF文本 .rtf: application/rtf

PDF文档 .pdf :application/pdf

Microsoft Word文件 .word :application/msword

PNG图像 .png: image/png

GIF图形 .gif: image/gif

JPEG图形 .jpeg,.jpg :image/jpeg

au声音文件 .au :audio/basic

MIDI音乐文件 mid,.midi :audio/midi,audio/x-midi

RealAudio音乐文件 .ra, .ram :audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg :video/mpeg

AVI文件 .avi: video/x-msvideo

GZIP文件 .gz :application/x-gzip

TAR文件 .tar :application/x-tar

任意的二进制数据 :application/octet-stream

5、服务器【响应头】常见信息

Content-Length:表示响应消息正文的长度

Content-Type:表示响应消息的类型

keep-Alive:缓存时间

Server:服务器的相关信息

6、服务器响应的【状态码】

状态码

含义

200

服务器响应成功,服务器找到了客户端请求的内容,并返回给了客户端

301

临时跳转(重定向),

302

永久性重定向,客户端请求跳转,服务器返回302允许,客户端然后跳转

304

服务器返回304,表示客户端资源请求成功,但资源就在客户端本地浏览器缓存中,不用到服务去获取

403

客户端没有权限获取请求的资源(被封IP等)

404

请求资源没有找到

500

服务器端程序出错,请求的网页程序本身出错

第三部分 AJAX和iframe(主客观题都可能出现)

1、AJAX工作原理(理解)

AJAX发送请求时,需要指定以下参数:

  • 要请求的资源,即URL地址
  • 请求的方式,常用的有GET和POST(GET可能从本地缓存获取数据,POST只从服务器获取数据)
  • 需要发送给服务器的数据,使用格式"名字=值&名字=值"的方式书写
  • 可以接收的数据类型,让服务器返回给定格式的数据(HTML、JavaScript、JSON、XML 等)。常用text和JSON
  • 接收服务器回传结果,success:function(re){}

2、JQuery的Ajax(熟练掌握)

使用jquery的 ajax语法通用格式:

$.ajax({

url:''请求的资源地址",

type:"POST|GET",

data:"name1=value1&name2=value2",

dataType:"txt|JSON|JSONP",

success:function(re){

//处理接收到的数据

},

error:function(){

//出错处理

}

});

 

更多用法见:https://www.w3school.com.cn/jquery/jquery_ajax_load.asp

https://www.w3school.com.cn/jquery/jquery_ref_ajax.asp

方式一:

$(selector).load(URL,data,callback);

URL:请求的服务器资源地址(必须)

data为{name1:vale1,name2:value2,...}(可选)

callback:为回调函数,请求成功后执行此函数(可选),回调函数中可包括三个参数

参数1:responseTxt , 包含调用成功时的结果内容

参数2:statusTXT , 包含调用的状态

参数3:xhr ,包含 XMLHttpRequest 对象

方式二:

$.get(URL,callback);

URL:必须

callback:可选,同load

方式三:

$.post(URL,data,callback);

参数解析同load

方式四:(最常用):详细参数解释见https://www.w3school.com.cn/jquery/ajax_ajax.asp

jQuery.ajax([settings])

参数

描述

settings

可选。用于配置 Ajax 请求的键值对集合。

可以通过 $.ajaxSetup() 设置任何选项的默认值。

async:默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false

beforeSend(XHR):发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头

cache:默认值: true,dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面

complete(XHR, TS):请求完成后回调函数 (请求成功或失败之后均调用)。

contentType:默认值: "application/x-www-form-urlencoded"。发送信息至服务器时内容编码类型

context:这个对象用于设置 Ajax 相关回调函数的上下文。也就是说,让回调函数内 this 指向这个对象(如果不设定这个参数,那么 this 就指向调用本次 AJAX 请求时传递的 options 参数)。比如指定一个 DOM 元素作为 context 参数,这样就设置了 success 回调函数的上下文为这个 DOM 元素。

就像这样:

$.ajax({ url: "test.html", context: document.body, success: function(){

$(this).addClass("done");

}});

data:必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。

dataFilter:给 Ajax 返回的原始数据的进行预处理的函数。提供 data 和 type 两个参数:data 是 Ajax 返回的原始数据,type 是调用 jQuery.ajax 时提供的 dataType 参数。函数返回的值将由 jQuery 进一步处理。

dataType:可用值:

  • "xml": 返回 XML 文档,可用 jQuery 处理。
  • "html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
  • "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
  • "json": 返回 JSON 数据 。
  • "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
  • "text": 返回纯文本字符串

error: 默认值: 自动判断 (xml 或 html)。请求失败时调用此函数。

有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。

如果发生了错误,错误信息(第二个参数)除了得到 null 之外,还可能是 "timeout", "error", "notmodified" 和 "parsererror"。

ifModified: 仅在服务器数据改变时获取新数据。默认值: false。使用 HTTP 包 Last-Modified 头信息判断。在 jQuery 1.4 中,它也会检查服务器指定的 'etag' 来确定数据没有被修改过。

jsonp: 在一个 jsonp 请求中重写回调函数的名字。这个值用来替代在 "callback=?" 这种 GET 或 POST 请求中 URL 参数里的 "callback" 部分,比如 {jsonp:'onJsonPLoad'} 会导致将 "onJsonPLoad=?" 传给服务器。

password: 用于响应 HTTP 访问认证请求的密码

username: 用于响应 HTTP 访问认证请求的用户名。

 

AJAX函数(重点掌握几人加背景颜色的方法)

函数

描述

jQuery.ajax()

执行异步 HTTP (Ajax) 请求。

.ajaxComplete()

当 Ajax 请求完成时注册要调用的处理程序。这是一个 Ajax 事件。

.ajaxError()

当 Ajax 请求完成且出现错误时注册要调用的处理程序。这是一个 Ajax 事件。

.ajaxSend()

在 Ajax 请求发送之前显示一条消息。

jQuery.ajaxSetup()

设置将来的 Ajax 请求的默认值。

.ajaxStart()

当首个 Ajax 请求完成开始时注册要调用的处理程序。这是一个 Ajax 事件。

.ajaxStop()

当所有 Ajax 请求完成时注册要调用的处理程序。这是一个 Ajax 事件。

.ajaxSuccess()

当 Ajax 请求成功完成时显示一条消息。

jQuery.get()

使用 HTTP GET 请求从服务器加载数据。

jQuery.getJSON()

使用 HTTP GET 请求从服务器加载 JSON 编码数据。

jQuery.getScript()

使用 HTTP GET 请求从服务器加载 JavaScript 文件,然后执行该文件。

.load()

从服务器加载数据,然后把返回到 HTML 放入匹配元素。

jQuery.param()

创建数组或对象的序列化表示,适合在 URL 查询字符串或 Ajax 请求中使用。

jQuery.post()

使用 HTTP POST 请求从服务器加载数据。

.serialize()

将表单内容序列化为字符串。

.serializeArray()

序列化表单元素,返回 JSON 数据结构数据。

3、JS原生AJAX(熟练掌握)

步骤1:建立xmlHttpRequest对象

所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均支持XMLHttpRequest 对象,而IE5 和 IE6 使用 的是ActiveXObject。

var xmlHttp=null;

if(window.XMLHttpRequest){

    xmlHttp = new XMLHttpRequest();

//针对某些特定版本的mozillar浏览器的BUG进行修正   

   if(xmlHttp.overrideMimeType){

     xmlHttp.overrideMimeType("text/xml");

   }

}else if(window.ActiveXobject){

    var activeName =["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

    for(var i=0; i<activeName.length; i++){

       try{

           xmlHttp = new ActiveXObject(activeName[i]);

          break;

       }catch(e){

       }

    }    

}

if(!xmlHttp){

   alert("创建xmlhttprequest对象失败");

}else{   

}

步骤2:设置回调函数

xmlHttp.onreadystatechange= callback;

function callback(){}

步骤3:使用OPEN方法与服务器建立连接

 xmlHttp.open("get", "ajax?name="+ name, true)

此步注意设置http的请求方式(post/get),如果是POST方式,注意设置请求头信息xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")

步骤4:向服务器端发送数据

xmlHttp.send(null);

如果是POST方式就不能为null

步骤5:在回调函数中针对不同的响应状态进行处理

if(xmlHttp.readyState == 4){

     //判断交互是否成功

     if(xmlHttp.status == 200){

       //获取服务器返回的数据

       //获取纯文本数据

       var responseText =xmlHttp.responseText;

      document.getElementById("info").innerHTML = responseText;

     }

 }

readyState属性:表示请求/响应过程的当前阶段

0:未初始化。尚未调用 open()方法。 1:启动。已经调用 open()方法,但尚未调用 send()方法。 2:发送。已经调用 send()方法,但尚未接收到响应。 3:接收。已经接收到部分响应数据。 4:完成。已经接收到全部响应数据,而且已经可以在客户端使用了。

status属性:响应的 HTTP 状态码 200:响应成功 301:永久重定向/永久转移 302:临时重定向/临时转移 304:本次获取内容是读取缓存中的数据 400:请求参数错误 401:无权限访问 404:访问的资源不存在

4、json字符串置换成js对象

  • 方式一:JSON.parse()
  • 方式二:eval()

语法格式:str为json格式字符串

eval('('+str+')');

通过 eval 来转化,如果返回的字符串内容是一个数组,可以直接转化,如果返回的字符串内容是一个对象,必须在字符串的前后加上()

  1. eval方法不会去检查给的字符串是否符合json的格式,而JSON.parse解析不满足json格式的字符串时,会报错
  2. 如果给的字符串中存在js代码eval也会一并执行,比如下面的代码段

故:推荐用JSON.parse()方式

5、使用js操作iframe

步骤1:

页面中使用iframe标签,可设置id(如ifr)

步骤2:

设置请求服务器的按钮或表单,并绑定事件处理函数(如:οnclick="sendMessage();")

步骤3:

编写事件处理函数

function sendMessage(){

//获取用户名

var username=document.getElementById("username").value;

//获取密码略

//拼接成合法的url请求路径,如

var url="do.php?username="+username+"&password="+password;

//do.php是请求的文件,使用相对路径,也可以是完整的带http://xxxx:xx/xxx/xx.php类似的路径

//?后面传递的是参数

document.getElementById("iframe的id").src=url;

}

这样,当点击按钮或表单时,执行sendMessage函数,向do.php发送请求(同时带上数据),do.hph响应后,会把返回的数据写入iframe标签内部,不会更新页面的其他部分,从而达到异步刷新的效果。

do.php是处理请求的php文件,也可以是java的action或servelet映射的路径

do.php文件的内容一般如下:

<?php

//使用get方式获取前端传递来的数据

$name=$_GET['username'];

$password=$_GET['password'];

//向请求页面输出结果

var_dump($name,$password);

? >

6、使用query操作iframe

步骤1:同上

步骤2:同上

步骤3:

function sendMessage(){

//获取帐号, $("[name='username']")仅仅是获取到dom元素的方式之一,val()是取出输入框的值

var username=$("[name='username']").val();

//获取密码,略

var url="do.php?username="+username+"&password="+password;

//do.php是请求的文件,使用相对路径,也可以是完整的带http://xxxx:xx/xxx/xx.php类似的路径

//?后面传递的是参数 ,使用attr函数设置属性src的值

$("#ifr").attr("src",url);

}

php连接数据库并插入数据

<?php

//使用get方式获取前端传递来的数据

$name=$_GET['username'];

$content=$_GET['content'];

//连接数据库

$pdo=new PDO('mysql:host=localhost;dbname=php','root','123456');

//定义sql语句,点.是php中字符串的连接符号,不是用加+

$sql="insert into token(name,content,pubtime) value('".$name."','".$content."','".time()."')";

//执行插入 exec

$re=$pdo->exec($sql);

//向请求页面输出执行结果

var_dump($re);

? >

7、使用AJAX实例

前台通过点击按钮向后台请求类型typeid为1的新闻数据

数据库新闻表news中有若干条记录如下:

Id

typeid

title

content

addtime

 

主健

类型id

标题

内容

添加时间

 

前台ajax代码类似如下:

function func(){

$.ajax({

url:"getNews.php",

type:"get",

data:"typeid=1",

datatype:"json",

success:function(re){

for(var i in re){

//仅获取了title数据,其他数据获取类似

$("#showContent ul").append("<li>"+re[i].title+"</li>");

}

}

});

}

后台php代码类似如下:

 

<?php

$typeid=$_GET['typeid'];

$pdo=new PDO('mysql:host=localhost;dbname=php','root','123456');

//定义sql语句,limit 8仅获取前8条数据

$sql="select * from news where typeid={$typeid} limit 8";

//执行查询query,返回查询结果到$pdoS

$pdoS=$pdo->query($sql);

//把结果集$pdoS中的数据取出放到数组$arr中

// PDO::FETCH_ASSOC返回一个索引为结果集列名的数组

// fetchAll取出所有行

$arr=$pdoS->fetchAll(PDO::FETCH_ASSOC);

//使用echo输出到请求方法的回调函数success:function(re)中,

//通过re去获取数据

json_encode把数组转换成json字符串

echo json_encode($arr);

? >

第四部分 页面性能优化技术(上下午都可)

1、原生 js使用cookie技术

【创建cookie】

var Days = 30;

var exp = new Date();

exp.setTime(exp.getTime() + Days*24*60*60*1000);

//主要内容,名称=值;expires=过期时间

document.cookie = name + "="+ value+ ";expires=" + exp.toGMTString();

【查找cookie】

关键两次切分split,第一次找出;前面的内容,第二次找出=左右的内容

function getcookie(name){

var keys=document.cookie.split(";");

var temp=null;

for(var i=0;i<keys.length;i++){

var t=keys[i].split("=");

if (key[0]==name){

temp=t[1];

break;

}

}

return temp;

}

【删除cookie】

关键点,设置过期时间为过去的时间

function delcookie(name){

var exp = new Date();

exp.setTime(exp.getTime()-1);//设置时间为过去即删除

var cval=getcookie(name);//使用前一函数,先查找

if(cval!=null)

document.cookie= name + "="+cval+";expires="+exp.toGMTString();

}

2、php中使用cookie技术

【创建】

<?php

//参数分别为cookie的名字,值和过期时间,作用目录(/服务器的根目录)

$re=setcookie('name','value',time()+30*60,'/');

var_dump($re);

? >

本质是由服务端告诉客户端,让客户端进行创建的,并把数据保存在客户端

【使用】

<?php

//获取名字为name的cookie

$re=$_COOKIE(['name']);

var_dump($re);

? >

当客户端向服务器发送请求 时,如果发现本地有一个cookie信息,则会自动把cookie信息保存在请求头(前面有介绍)中一起发送给服务器.

【删除】

php

//本质设置过期时间为下一秒或当前时间之前的一个时间

$re=setcookie('name',null,time()+1,'/');

var_dump($re);

? >

3、页面性能优化

  • 减少http请求次数
  1. 制作图片地图,页面中包括所有的背景图片,允许一个图片关联多个URL,即将多个图片合并为一个图片
  2. 使用雪碧图,使用CSS的background-position来定位图片的某个具体部分,这样可以把多个小图片合并为一个大图片
  3. 合并Javascript和CSS文件,直接减少请求次数
  4. 充分利用浏览器缓存
  • 静态资源与动态资源分离,即通过不同的域名访问

静态资源是源代码永远不变的部分

动态资源是多次访问时,源代码可能会变化的部分

进行拆分后,可以对静态资源做缓存策略

第五部分 Socket通信(上下午都可)

1、概念

两个程序通过双向连接交换数据,一端被称为一个socket

socket是双向的长连接

双方至少一方主动断开连接,才会中断通信

socket可以使用TCP(传输控制协议)来实现,也可以使用UDP(数据报协议)来实现,一般使用TCP协议。

2、实例(原理及相关函数见图):

 

 

 

详细完整聊天室代码,参见中级(下册教程p36-41)

 

 

最后

以上就是忧虑太阳为你收集整理的Bootstrap第一部分 web数据交互技术概述的全部内容,希望文章能够帮你解决Bootstrap第一部分 web数据交互技术概述所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部