JavaScript知识点回顾 一、什么是JavaScript?JavaScript是(1)基于对象 JavaScript本身就是一些线程的对象可供程序员使用,例如:Array,Math,String... JavaScript并不排除你可以自己按一定的规则创
一、什么是JavaScript?
JavaScript是
(1)基于对象
JavaScript本身就是一些线程的对象可供程序员使用,例如:Array,Math,String...
JavaScript并不排除你可以自己按一定的规则创建对象
(2)时间驱动
JavaScript代码写好后,需要外界出发后,方可运行,例如:单击事件,定时执行...
(3)解释性
每次运行JavaScript代码时,得需要将原代码一行一行地解释执行
(4)基于浏览器的动态交互网页技术
如果JavaScript嵌入到HTML中,可以不需要服务器支持,直接由浏览器解释执行
如果JavaScript嵌入到JSP或Servlet中,必需要服务器支持,直接由浏览器解释执行
(5)嵌入在HTML标签中
JS必须嵌入到一个名的标签中,方可运行脚本语言
二、JavaScript中的三种类型
(1)基本类型:number,string,boolean
number包含正数、负数、小数
string 由''(单引号)或""(双引号)定界
boolean包含true或false
注意:JavaScript中的boolean也包含更多情况,例如:存在表示true,不存在表示false
代码示例:
var num = 100;
var str = "Hello World";
var flag = false;
alert(num);//100
alert(str);//Hello World
alert(flag);false
(2)特殊类型:null,undefined
null表示一个变量指向null
undefined表示一个变量指向的值不确定
代码示例:
var array = null;
var student;
alert(array);//null
alert(student);//undefined
(3)复合类型:函数,对象,数组
对象包含内置对象和自定义的对象
三、JavaScript中由三种定义函数的方式
(1)正常方式:function mysum(num1,num2){return num1+num2;}
代码示例:
function mysum(num1,num2){
return num1 + num2;
}
var myresult = mysum(100,200);
alert("myresult="+myresult);//myresult=300
(2)构造器方式:new Function("num1","num2","return num1+num2");
代码示例:
var youresult = new Function("num1"."num2"."return num1+num2;");
alert("youresult="youresult(100,200));//youresult=300
(3)直接量或匿名或无名方式:var theysum = function(num1,num2){return num1+num2;}
代码示例:
var theyresulut = function(num1.num2){
return num1 + num2;
}
alert("theyresulut="+theyresulut(100,200));//theyresulut=300
四 JavaScript中有四种对象
(1)内置对象:Date、Math、String、Array....
代码示例:
var str = new Date().toLocaleString();
window.document.write(""+str+"");//2017/11/24 下午 9:19:13(当前系统时间,字体大小:45,颜色:蓝色)
(2)自定义对象:Person,Student...
代码示例:
function Student(id,name,age){
//this指代当前对象
this.id = id;
this.name = name;
this.age = age;
}
var stu = new Student(1,"小铭","男");
document.write("编号:"+stu.id);//编号:1
document.write("姓名:"+stu.name);//姓名:小铭
document.write("性别:"+stu.age);//性别:男
(3)浏览器对象:window、document、status、location、history...
//当代码执行时,浏览器一直刷新 history.go(0):刷新 history.go(1):前进 history.go(-1):后退
function myrefresh(){
window.history.go(0);
}
(4)ActiveX对象:ActiveXObject("Microsoft.XMLHTTP")...
五、演示JavaScript对象的属性,方法和事件的使用
(1)window.location.href
代码示例:
var url = "index.html";
window.location.href = url;//跳转到index.html页面
(2)from.submit()
代码示例:
(3)inputElement.onblur = 函数
(4)document.createElement("img")
(5)imgElement.style.width/height
六、回顾传统Web应用请求和响应特点【显示当前时间】
(1)请求:浏览器以HTTP协议的方式提交请求到服务器
(2)响应:服务器以HTTP协议的方式响应内容到浏览器
注意:HTTP是WEB大众化非安全协议
HTTPS是WEB安全协议,是基于HTTP协议的,且加了一些加密等特殊功能,常用于在线支付,或者是需要安全性较高的网站中,例如:天猫网站
HTTP请求有三个部分组成:请求行,请求头,请求体
HTTP响应由三个部分组成:响应行,响应头,响应体
(3)状态栏:由明显的进度条刷新现象,如果服务器响应较慢的话,进度条刷新也会变慢,IE9等中高版本浏览器,由明显转圈圈图标
(4)历史栏:会手机原来已访问过的web页面,进行缓存
(5)缺点:不需要变化的大量数据,也全部刷新,造成浏览器加载和处理负担
(6)可改进的地方:让不需变化的大量数据,原封不懂,不用缓存到历史栏中,无需全部是刷新,只刷新某些需要变化的数据区域,例如:当前时间的区域
代码示例:
当前时间:${requestScopr.str}
public class TimeServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse) throws ServletException,IOException{
System.out.println("TimeServlet::doGet");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
request.setAttribute("str",str);
request.getRequestDispatcher("/index.jsp").forward(request,response);
}
}
七、什么是AJAX【Asynchronous异步的JavaScript和XML】,工作原理与特点
(1)什么是同步:
请求1-->响应1-->请求2-->响应2-->
Web1.0时代
(2)什么是异步:
请求1-->请求2-->请求3-->响应1-->响应2-->响应3-->
请求1-->响应1-->请求2-->请求3-->响应2-->响应3-->
Web2.0时代
(3)什么是AJAX:
客户端(特指PC浏览器)与服务器,可以在【不必刷新整个浏览器】的情况下,与服务器进行异步通讯的技术
即,AJAX是一个【布局刷新】的【异步】通讯技术
AJAX不是全新的语言,是2005年Google公司推出的一种全新【编程模式】,不是新的编程语言
(4)不用刷新整个页面便可与服务器通讯的方法有:
(A)Flas/ActionScript
(B)框架Frameset
(C)iFrame(内嵌入框架)
(D)XMLHttpReauest(非IE浏览器)和ActiveXObject(IE浏览器)
背景:早上IE5时,微软就开发出了第一个异步通讯对象,叫ActiveXObject对象,
Firefox等其他浏览器厂商也慢慢引入异步通讯对象,叫XMLHttpRequest对象,但IE由向下兼容问题,
也可以使用ActiveXObject对象。
无需第三方jar包,现代中高版本浏览器内置了这个异步通讯对象,只需通过JavaScript就可以创建
注意:所有浏览器中都内置了异步对象,在默认情况下,该异步对象并没有创建出来
代码示例:
function createAJAX(){
var ajax = null;
try{
ajax = new ActiveXObject("microsoft.xmlhttp");
}catch(e1){
ajax = new XMLHttpRequest();
}
return ajax;
}
(5)AJAX工作原理
参见《AJAX工作原理.JPG》链接:https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=ajax%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86.jpg&hs=2&pn=0&spn=0&di=71339160530&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=625365557%2C280187035&os=3110012394%2C451514456&simid=3452325323%2C250112902&adpicid=0&lpn=0&ln=30&fr=ala&fm=&sme=&cg=&bdtype=0&oriquery=ajax%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86.jpg&objurl=http%3A%2F%2Ffilesimg.111cn.net%2F2011%2F05%2F20111119011732771.jpg%3F16&fromurl=ippr_z2C%24qAzdH3FAzdH3F4_z%26e3B888vg_z%26e3BgjpAzdH3Fw6p-9a08l_z%26e3Bip4&gsm=0
(6)AJAX包含的技术
参见《AJAX包含的技术.JPG》链接:https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=ajax%E5%8C%85%E5%90%AB%E7%9A%84%E6%8A%80%E6%9C%AF.jpg&hs=2&pn=0&spn=0&di=83016731821&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=1467581459%2C2503600119&os=3401596873%2C3929444465&simid=3498237227%2C338496020&adpicid=0&lpn=0&ln=30&fr=ala&fm=&sme=&cg=&bdtype=0&oriquery=ajax%E5%8C%85%E5%90%AB%E7%9A%84%E6%8A%80%E6%9C%AF.jpg&objurl=http%3A%2F%2Fpic.bianceng.cn%2Fuploads%2F2011%2F1108%2F105JQ234-0.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bktwgvjg2_z%26e3BvgAzdH3FojkhuAzdH3Fw3wxAzdH3Fda88abAzdH3Fdbndn_z%26e3Bip4&gsm=0
(7)AJAX开发步骤
步骤一:创建AJAX异步对象,例如:createAJAX();
步骤二:准备发送异步请求,例如:ajax.open(method.url)
步骤三:如果是POST请求的话,一定要设置AJAX请求头,例如:ajax.setRequestHeader()
如果是GET请求的话,无序设置AJAX请求头
步骤四:整整发送请求体中的数据到服务器,例如:ajax.send()
步骤五:AJAX不断地监听服务器端响应的状态变化,例如:ajax.onreadystatechange,后面写一个无名处理函数
步骤六:在无名处理函数中,获取AJAX的数据后,按照DOM规则,用JavaScript语言来操作Web页面
(8)AJAX适合用在什么地方
AJAX【适合】不用来传递大量数据,而只用来【传递少量数据】,在用户的【体验】上更加人性化
AJAX是一个和服务器无关的技术,即服务器可使用:javaEE,.NET,PHP...这些技术都可以
AJAX只管向服务器发送请求,同时只管接收服务器的HTML或XML或JSON载体响应
服务器端不能使用转发或重定向到wbe页面,因为这样会引起浏览器全面刷新
即只能以流的方式响应给浏览器
八、AJAX应用
(1)无序刷新整个Web页面显示服务器响应的当前时间
(text/html;charset=UTF-8)
代码示例:
当前时间:
public class ProvinceCityServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
this.doPost(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
request.setCharacterEncoding("UTF-8");
String province = request.getParamter("province");
response.setContentType("text/xml;charset=UTF-8");
PrintWrite pw = response.getWrite();
pw.write("
");
pw.write("root");
if("广东".equals(province)){
pw.write("
广州
");
pw.write("
深圳
");
pw.write("
中山
");
pw.write("
珠海
");
}else if("湖南".equals(province)){
pw.write("
长沙
");
pw.write("
株洲
");
pw.write("
张家界
");
}else if("湖北".equals(province)){
pw.write("
武汉
");
pw.write("
黄岗
");
}
pw.write("");
pw.flush();
pw.close();
}
}
(4)验证码检查
(text/html;charset=UTF-8)
代码示例:
验证码:
public class checkcodeServlet extends HttpServlet{
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
request.setCharacterEncoding("UTF-8");
//获取客户端输入的验证码
String checkcodeClient = request.getParamter("checkcode");
//获取服务器端产生的验证码
HttpSession httpSession = request.getSession();
String checkcodeServer = (String)httpSession.getAttribute("CHECKNUM");
//两个验证码进行比较
String tip = "images/MsgError.gif";
if(checkcodeClient!=null && checkcodeServer!=null && checkcodeClient.equals(checkcodeServer)){
tip = "images/MsgSent.gif";
}
//以流的方式输出tip变量
response.setContentType("text/html;charset=UTF-8");
PrintWrite pw = response.getWrite();
pw.write(tip);
pw.flush();
pw.close();
}
}
九、XMLHttpRequest(即:AJAX)对象常用事件,方法和属性
(1)事件:
ajax.onreadystatechange:表示AJAX异步对象不断监听服务端的响应,是由服务器程序触发,不是程序员触发
(2)属性:
ajax.readySate==0:表示AJAX异步对象已创建好,但还没有调用open()方法
ajax.readySate==1:表示AJAX异步对象已调用open()方法,但还没有调用send()方法
ajax.readySate==2:表示AJX异步对象已调用send()方法,但请求还没有到达服务器端
ajax.readySate==3:表示服务器端已接收到AJAX异步对象的请求,正在处理响应中...
ajax.readySate==4:表示AJAX异步对象已经完完全全接收到了服务器的响应信息,但接收到的数据不一定都正确
上述5种状态不是所有浏览器都相同,但状态4每种浏览器都相同
ajax.status==200:表示AJAX异步对象接收到响应码,如果是200的话,表示一切正常
ajax.responseText:表示从AJAX异步对象中获取HTML载体中的数据
ajax.responseXML:表示从AJAX异步对象中获取XML载体中的数据
(3)方法:
ajax.open(method,url,可选的boolean值)
AJAX异步对象准备发送异步请求
参数一:以什么方式发送,常用的用GET或POST,大小写不敏感
参数二:发送到什么地方去,常用Servlet或Struts2或SpringMVC来接收,这里只限于JavaEE
参数三:默认值true,表示AJAX对象以【异步】的方式提交到服务端
如果设置为false,表示AJAX对象以【同步】的方式提交到服务端
ajax.setRequestHeader("content-type","application/x-www-form-urlencoded")
表示将请求体中的内容,按照UTF-8的方式进行编码,只针对POST请求有效
ajax.send(content)
AJAX异步对象真正发送异步请求
参数一:表示HTTP【请求体】中的内同
如果是GET方法:content = null,如果强行传值到服务器,服务端收不到,返回NULL
如果是POST方式:content != null,例如:username = jack&password = 123&role=admin
十、数据载体
(1)HTML
(A)优点:服务端响应的是普通html字符串,无需JavaScript解析,配额和innerHTML属性效率高
(B)缺点:如果需要更新WEB页面中的很多处地方,HTML不太方便,同时innerHTML属性不是DOM的标准,不能操作XML
注意:innerHeml在xml中不能使用,用firstChild.nodeValue替代
(C)适合:小量数据载体,且只要更新在web页面中的一个地方
(2)XML
(A)优点:是种通信的普通字符串格式,任何技术都能解析,标签名可以任意,使用DOM标准规则能够解析XML的任何部分
(B)缺点:XML文件格式相当阉割,出错后,responseXML属性返回NULL,如果XML文件过长,导致解析效率低下
(C)适合:大量具有层次数据载体
(3)JSON+struts2框架
兼备HTML和XML的特点
