ajax考试Word格式.docx
《ajax考试Word格式.docx》由会员分享,可在线阅读,更多相关《ajax考试Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
JavaScript是一种轻量级的、解释性的程序设计语言,而且具备一定面向对象的能力。
JavaScript是弱类型、解释型和通用的脚本语言
弱类型:
变量不需要声明为字符串、整数或者对象,同一个变量可以使用不同类型来赋值。
解释型:
不需要编译,源代码本身就可以直接执行。
通用:
适用于大部分的算法和编程任务。
●CSS样式定义包括选择器和样式声明两部分?
选择器表明要为哪一个元素设置样式。
样式声明表明要用那些样式属性。
●window对象和document对象常用属性和方法。
▲课本P72—P89||P89—P94
●DOM节点操作的基本属性和方法。
▲课本P112—P125(创建、添加、修改和删除节点等)
1)JavaScript操作DOM的第一件事情就是寻找到元素节点。
varx=document.getElementById(‘hello’)
2)createElement()可以用来创建任何HTML元素。
varchildE1=document.createElement(“div”)
createNodeText()创建代表一段文本的DOM节点,这样的节点通常嵌入在标题、div、段落等
vartxtNode=document.createNodeText(“sometext”)
无论任何类型的节点一旦被创建,都必须将它附加到文档上,然后才能在浏览器中看到它
3)添加节点:
Node对象提供了appendChild方法来将程序创建的节点,添加到父节点的直属子节点列表的末尾。
该方法也可作用于已经存在于DOM树中的节点,执行方法后会改变节点在DOM树中的位置,而不是插入一个新的节点。
4)插入子节点:
Node对象提供了insertBefore方法来将新节点插入到指定子节点的前面,其语法格式如下所示。
parentNode.insertBefore(newNode,childNode);
5)替换子节点:
Node对象提供了replaceChild方法来使用一个新的节点替换一个子节点,其语法格式如下所示。
parentNode.replaceChild(newNode,childNode);
6)复制节点
Node对象提供了cloneNode方法来得到Node对象的一个副本。
cloneNode方法接受一个布尔值参数,来标识返回的节点副本中是否包含原节点的子节点。
当参数为true时,则包含子节点;
当参数为false时,则不包含子节点。
7)删除子节点
Node对象提供了removeChild方法来删除一个直属子节点,该方法接受一个参数,为需要参数的子节点的引用。
基本语法如下所示:
parentNode.removeChild(childNode);
8)读取节点属性
使用Node对象的getAttribute方法可以得到节点的某一属性的值,该方法接受一个属性名作为参数,返回指定属性的值
9)添加和修改属性节点
当需要添加或者修改一个属性节点时,可以使用Node对象的setAttribute方法。
其基本语法格式如下所示:
node.setAttribute(attName,attValue);
10)删除属性节点
当需要删除一个节点的某个属性时,可以使用removeAttribute方法。
removeAttribute方法接受一个参数,表明了需要删除的属性的名称。
node.removeAttribute(attName);
● XMLHttpRequest对象属性和方法?
Open,SendsetRequestHeader,onReadystatechange,readyState,responseText,responseXML
Status,statusText
●MVC黄金定律
*:
MVC的黄金定律是:
视图和模型不应该相互通信。
●为什么要保持逻辑和视图的分离?
保持逻辑和视图的分离使得视图和模型不直接交互,始终通过控制器来进行。
控制器可以看作是一个薄的边界层,允许模型和视图通过它来通信,它使得在代码库中实现清晰的职责分离,提高了代码的灵活性和可维护性
●Dom中常用的GUI事件处理函数属性有哪些?
●在Ajax应用中,服务器有哪两个角色?
1)将应用交付到浏览器;
2)与客户端对话,处理查询并提供请求需要的数据;
●流行的实现语言有哪些?
PHP、Java、ASP、ASP.NET等
●与用户交互数据时,有哪几种类型数据?
各有什么优缺点?
Ⅹ用户交互分成四种类型:
①仅限于客户端的(client-only)----用户交互由已加载到浏览器中的脚本来处理的交互。
不需要任何Web服务器的资源,这对于提高应用的响应速度和降低服务器的负载有好处
剩下的三种类型都涉及到与后台通信,区别主要在于返回的数据不同
②以内容为中心的(content-centric)----传统的web设计,仅页面交互,不能实现局部刷新,流量大,用户体验差
③以脚本为中心的(script-centric)----减少了流量,减少了带宽的使用,客户端与服务器的耦合度要求高
④以数据为中心的(date-centric)----实现局部刷新,减少流量,减少带宽,提高了用户体验
●Json与XML相比各有什么优缺点?
1)非冗长性。
2)解析方便:
JSON与JavaScript对数据的内部表示一致,这样就可以方便的将JSON的数据转化为对象,不需要像XML那样通过复杂的DOM来操作,避免了浏览器对DOM实现的差异。
3)结构简单,在很多语言中都支持JSON
JSON没有像XML那样的命名空间机制,在不同上下文的相同信息段混合在一起时,可能会给解析带来一定的麻烦。
同时JSON的创建和验证过程跟XML相比,会稍微麻烦一些;
●在JavaScript如何读取和生成JSON
P369:
在JavaScript中读取JSON的关键是eval()函数,它接受一个字符串作为参数,并将该字符串作为JavaScript语句,并调用JavaScript解析器来运行该语句,然后将运行的结果当做返回值返回。
P371:
JSON提供了json.js包,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据.
●在java中如何读取和生成JSON
JSON还提供了java的jar包http:
//www.json.org/java/index.htmlAPI也很简单,下面举个例子
在javascript中填加请求参数
js代码
functionsendRequest(){
varcarr=newCar("
Dodge"
"
CoronetR/T"
1968,"
yellow"
);
varpars="
car="
+carr.toJSONString();
varurl="
/MyWebApp/JSONTest1"
;
varmailAjax=newAjax.Request(
url,
{
method:
'
get'
parameters:
pars,
onComplete:
jsonResponse
}
);
}
使用JSON请求字符串就可以简单的生成JSONObject并进行解析,修改servlet添加JSON的处理(要使用json.jar)
java代码
privatevoiddoService(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{
Strings3=request.getParameter("
car"
try{
JSONObjectjsonObj=newJSONObject(s3);
System.out.println(jsonObj.getString("
model"
));
System.out.println(jsonObj.getInt("
year"
}catch(JSONExceptione){
e.printStackTrace();
response.getWriter().print("
{\"
name\"
:
\"
Violet\"
\"
occupation\"
character\"
}"
同样可以使用JSONObject生成JSON字符串,修改servlet
JSONObjectresultJSON=newJSONObject();
resultJSON.append("
name"
Violet"
)
.append("
occupation"
developer"
age"
newInteger(22));
System.out.println(resultJSON.toString());
response.getWriter().print(resultJSON.toString());
functionoriginalRequest){
alert(originalRequest.responseText);
varmyobj=originalRequest.responseText.evalJSON(true);
alert(myobj.name);
alert(myobj.age);
●公有属性和私有属性定义的区别(this作用域)。
用var定义的属性是私有的。
我们需要使用this关键字来定义公有的属性
在类中通过this指针添加的属性,都是公有(public)属性。
公有属性指可以被外部访问的属性,
●JavaScript是如何实现继承的?
包括构造函数和原型的继承。
(继承体系和具体实现)
所谓继承,就是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
JavaScript中包括了冒充对象和原型的继承
对象冒充,是指一个对象冒充另外一个对象来执行其他对象的方法,或者说是一个对象将另外一个对象的方法当作自己的方法来执行。
JavaScript提供了call和apply两个方法来实现这种机制。
call和apply方法所实现的功能是一样的,只是参数形式不同。
functionName.call(object,argument1,argument2,argument3,…);
functionName.apply(object,[argument1,argument2,…]);
在函数或方法中调用call或apply方法后,该函数会被当作指定对象的方法来执行。
见课本P408/409
在使用对象冒充机制来实现继承的时候,子类只是在构造函数中调用了父类的构造函数,但是没有对父类的原型对象作任何处理,这使得定义在父类原型对象中的属性和方法没有被继承。
采用复制原型对象的方式成功解决了对象冒充实现继承的缺陷问题。
见课本P409例子
原型对象prototype:
prototype对象是实现面向对象的一个重要机制。
每个函数对象都具有一个子对象prototype。
而函数也即是类,prototype实际上就是表示了一个类的成员的集合。
当通过new来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。
●跨浏览器兼容性,重点关注几个不能在两个浏览器中不能同时运行的方法。
1)使用getElementById代替idName:
在IE中,获得一个元素对象的引用,可以直接使用该元素对象的id,
2)表单元素的引用问题:
在IE下,通过表单获得某个表单元素的引用,可以使用form.item(“itemName”)
3)访问集合对象成员的问题:
在IE中,对集合对象的成员的访问,可以使用圆括号加索引的方式。
4)读取自定义属性的问题:
在IE中可给HTML元素添加一些自定义属性
5)模态窗口的问题:
在IE下,可以使用showModalDialog来创建模态窗口。
原窗口可以给模态窗口传递参数,并接受模态窗口返回的值。
模态窗口在关闭前不能失去焦点。
6)frame的操作问题:
在IE中,通过window.frameId或者window.frameName都可以获得对frame页面window对象的引用
7)innerText的问题:
在IE下可以使用innerText属性来读取或设置一个元素内的文本值
8)对父元素的引用问题:
在IE中对父元素的引用可以使用parentElement和parentNode,但是在Firefox中只能使用parentNode
9)getElementsByName的问题:
在IE中,如果给div添加name属性,然后通过getElementsByName来查找这些div,则getElementsByName不能正常工作
10)outerText的问题:
在IE下,HTML元素有outerText属性,其返回值与innerText属性一样,但是如果改写元素的outerText属性,则元素本身会被文本所替换。
也就是说,当改变一个元素的outerText属性时,实际上是用一个文本节点替换了元素
11)outerHTML的问题:
在IE下,读取元素的outerHTML属性,可以得到包含元素及其子孙元素在内的所有HTML表示。
如果修改元素的outerHTML属性,则会使用一段新的HTML代码替换原有的元素。
替换后,原有的元素会从页面中被删除掉
12)常量的定义问题:
Firefox支持使用const定义常量,但是IE不支持,
13)input元素的type属性读写问题:
在Firefox下,input元素的type属性是可读写的,这个特性使得可以动态改变input元素的形态
●保护机密数据的方法有哪些?
1)https协议----https只保护数据传输的安全,如果数据库有问题同样不能保证安全;
成本高
2)MD5加密----每次采用MD5加密一段数据总会产生相同的结果;
两个不同的资源几乎不可能生成同样的MD5摘要;
不容易被逆推
公钥和私钥----客户端输入密码时,后面附加上随机字符串,然后对结果加密。
随机字符串就是公匙,用户密码就是私匙
3)JavaScript实现----实现这种解决方案需要在客户端和服务器都有一个MD5生成器。
●如何保护服务器端的安全性?
1)设计安全的Web层----采用Faç
ade简化面向服务的架构所暴露的API,只向因特网暴露一组更加简单的入口点,也更容易管理
2)限制对Web数据的访问:
过滤HTTP请求;
使用HTTP会话;
使用加密的HTTP首部信息
●性能的两个衡量指标是什么?
(*:
内存和CPU)
●性能分析的概念及方法有哪些?
性能分析是指详细测量代码执行速度的行为;
程序的执行速度是指该程序最慢的子系统的执行速度。
方法有:
用1).console.time和console.timeEnd
或2).console.profile和console.profileEnd进行性能分析测试
●优化Ajax的执行速度的方法。
1、优化for循环
2、将DOM节点附加到文档
3、尽量减少点号操作符的使用
内存泄露的概念及JavaScript产生泄漏的原因是什么?
解决的办法是什么?
内存泄露:
申请了内存并在工作完成后没有释放。
产生泄露的原因:
JavaScript是一种内存托管的语言,垃圾回收过程帮助程序员自动地处理内存的分配和释放,但是依然会产生泄露;
即使用完变量忘记解除引用。
解决办法:
使用完后解除引用
●1、JQuery的优点是什么?
1)程序员角度:
简化javascript和ajax编程,能够使程序员从设计和书写繁杂的JS应用中解脱出来,将关注点转向功能需求而非实现细节上,从而提高项目的开发速度。
2)用户角度:
改善了页面视觉效果,增强了与页面的交互性,体验更绚丽的网页物资。
●2、掌握该框架中提供的方法和属性,如选择器,属性节点值的设置和获取。
主要是结合编程考查。
●主流框架有哪些?
YUI、Dojo、mooTools、Prototype、jQuery
●造成中文乱码的原因是什么?
一般哪几种情况会造成中文乱码?
对Java中的某个字符串进行URL编码,其实是在对它的某种字符集编码(非Unicode码)数据进行URL编码,而Java中的字符串是以Unicode字符集编码存在的。
所以,在对Java中的字符串进行URL编码时,若不指定对这个字符串的哪种非Unicode的字符集编码进行URL编码就会出现中文乱码
浏览器对FORM表单中输入的中文字符都会进行URL编码后再传送给WEB服务器。
与请求参数的字符集编码相关的方法getCharacterEncoding方法setCharacterEncoding方法
●解决中文乱码的方法有哪些?
1.网页页面使用utf-8
<
metahttp-equiv="
Content-type"
content="
text/html;
charset=utf-8"
>
2.ajax默认使用utf-8传输数据,但最好使用post,不要使用get
3.数据库也要使用utf-8,在建表时设置好.
4.Tomcat也使用UTF-8:
Eclipse启动Tomcat会修改Tomcat的运行编码环境,从终端启动的又是另一种编码环境,因此Tomcat的编码也需要改
5.HttpServletResponse(request)也要设置编码:
response.setCharacterEncoding("
UTF-8"