一、JavaScript增强

1、什么是JavaScript
① 基于对象
JS本身就有一些现成的对象可供程序员使用,例如:Array、Math、String
② 事件驱动
JS代码写好后,需要外界触发后,方可运行,例如:单击事件,定时执行
③ 解释性
每次运行JS代码时,得需要将原代码一行一行的解释执行,相对编译型语言(例如:Java、C++)执行速度相对较慢
④ 基于浏览器的动态交互网页技术
如果JS嵌入到HTML中,可以不需要服务器支持,直接由浏览器解释执行;如果JS嵌入到JSP或Servlet中,必需要服务器支持,直接由浏览器解释执行
⑤ 嵌入在HTML标签中
JS必须嵌入到一个名叫<script src="引入外部js文件"></script>的标签中,方可运行
⑥ 弱语言
⑦ 脚本语言的一种

2、JS中的三种类型

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>js类型</title><meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body><!-- 1、基本类型:number,string,boolean --><script type="text/javascript">//num为number类型var num = 100;//str为string类型,注意js中的string类型用''或""均可var str = "哈哈";//flag为boolean类型var flag = true;                   </script><!-- 2、特殊类型:null,undefined --><script type="text/javascript">//多个script块中的内容,可以相互访问alert(flag);var person = null;var card;alert(card);//undefined不是字符串,它是一种类型,如果你想判断某个变量是否为undefined,通过如下代码判断:if(card == undefined){alert("card变量暂没值");      }else{alert(card);}</script> <!-- 3、复合类型:函数,对象,数组 --></body>
</html>

3、JS中有三种定义函数的方式

    <script type="text/javascript">// 正常方式function add(num1,num2){return num1 + num2;}window.alert("10+20=" + add(10,20));</script><script type="text/javascript">// 直接量或匿名或无名方式var add = function(num1,num2){return num1 + num2;}window.alert("1000+2000=" + add(1000,2000)); </script><script type="text/javascript">// 构造器方式:最后一个参数为函数体,每个参数都是字符串类型var add = new Function("num1","num2","return num1+num2");window.alert("100+200=" + add(100,200));</script>

4、JS中有四种对象

<!-- 1、内置对象:Date,Math,String,Array -->
<script type="text/javascript">var nowStr = new Date().toLocaleString();window.document.write(nowStr + "<br/>");    for(var i=1;i<=10;i++){//1到9之间的随机整数document.write(Math.floor(Math.random()*9)+1 + "<br/>");//document.write(Math.ceil(Math.random()*9) + "<br/>");}var str = "Hello你好";var size = str.length; alert(size);// 7var array = new Array("语文","数学","英语",true,123);for(var i=0;i<array.length;i++){document.write(array[i] + "   ");}
</script><!-- 2、自定义对象 -->
<script type="text/javascript">function Person(id,name,sal){this.id = id;this.name = name;this.sal = sal;}var p = new Person(1,"张三",7000);document.write("编号:" + p.id + "<br/>");document.write("姓名:" + p.name + "<br/>");document.write("薪水:" + p.sal + "<br/>");
</script><!-- 3、浏览器对象: window,document,status,location,history -->
<script type="text/javascript">//window对象:打开新窗口var url = "04_images.html";window.open(url);
</script><script type="text/javascript">//status对象:将当前时间设置到状态栏中var nowStr = new Date().toLocaleString();window.status = nowStr;
</script><script type="text/javascript">//location对象:模拟用户在地址栏输入url访问其它页面的情况var url = "04_images.html";window.location.href = url;
</script><script type="text/javascript">//history对象:演示刷新(1是前进,-1是后退,0是不变)window.history.go(0);
</script><!-- 4、ActiveX对象:ActiveXObject("Microsoft.XMLHTTP") -->

5、JS对象的属性,方法和事件的使用
① window.location.href
② form.submit()

<body><form action="04_images.html" method="POST"><input type="button" value="提交"/></form>   <!-- 用JS提交表单【重要】 --><script type="text/javascript">//定位提交按钮var inputElement = document.getElementsByTagName("input")[0];//为提交按钮添加单击事件inputElement.onclick = function(){//定位<form>标签,forms表示document对象中所有表单的集合,通过下标引用不同的表单,从0开始var formElement = document.forms[0];//提交表单,提交到action属性指定的地方formElement.submit();}</script>
</body>

③ inputElement.onblur = 函数
④ document.createElement(“img”)
⑤ imgElement.style.width/height

6、回顾传统Web应用请求和响应特点【显示当前时间】
① 请求:浏览器以HTTP协议的方式提交请求到服务器
② 响应:服务器以HTTP协议的方式响应内容到浏览器
注意:HTTP是WEB大众化非安全协议
HTTPS是WEB安全协议,是基于HTTP协议的,且加了一些加密等特殊功能,常用于在线支付,或者是需要安全性较高的网站中,例如:12306网站
HTTP请求有三个部份组成:请求行,请求头,请求体
HTTP响应有三个部份组成:响应行,响应头,响应体
③ 状态栏:有明显的进度条刷新现象,如果服务器响应较慢的话,进度条刷新也会变慢,IE9等中高版本浏览器,有明显转圈圈图标
④ 历史栏:会收集原来已访问过的web页面,进行缓存
⑤ 缺点:不需变化的大量数据,也全部刷新,造成浏览器加载和处理负担
⑥ 可改进的地方:让不需变化的大量数据,原封不动,不用缓存到历史栏中,无需全部刷新,只刷新某些需要变化的数据区域,例如:当前时间的区域

<body>当前时间:${requestScope.nowStr}<br/><input id="buttonID" type="button" value="获取当前时间"/><p/><script type="text/javascript">//定位按钮,同时添加单击事件document.getElementById("buttonID").onclick = function(){//发送请求到服务器var url = "${pageContext.request.contextPath}/TimeServlet";window.location.href = url;}</script>静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本<br/>静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本<br/>静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本<br/>静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本<br/>静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本<br/></body>
public class TimeServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//测试System.out.println("GET");//构造SimpleDateFormat对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//将当前日期按照指定格式输出成字符串String nowStr = sdf.format(new Date());//将结果绑定到request域对象中request.setAttribute("nowStr",nowStr);//转发到06_time.jsp页面request.getRequestDispatcher("/06_time.jsp").forward(request,response);}
}

二、AJAX基础

1、什么是AJAX(异步的JS和XML)的工作原理与特点
① 什么是同步
请求1 > 响应1 > 请求2 > 响应2>
(Web1.0时代)
② 什么是异步
请求1 > 请求2 > 请求3 > 响应1 > 响应2 > 响应3 >
请求1 > 响应1 > 请求2 > 请求3 > 响应2 > 响应3 >
(Web2.0时代)
项目中:Web1.0为主(整个浏览器刷新),Web2.0为辅(浏览器局部刷新)
③ 什么是AJAX
客户端(特指PC浏览器)与服务器,可以在【不必刷新整个浏览器】的情况下,与服务器进行异步通讯的技术,即AJAX是一个【局部刷新】的【异步】通讯技术。AJAX不是全新的语言,是2005年Google公司推出的一种全新【编程模式】,不是新的编程语言
④ 不用刷新整个页面便可与服务器通讯的办法有:
◆ Flash/ActionScript
◆ 框架Frameset
◆ iFrame(内嵌入框架)
◆ XMLHttpRequest(非IE浏览器)和ActiveXObject(IE浏览器)
背景:早在IE5时,微软就开发出了第一个异步通讯对象,叫ActiveXObject对象,Firefox等其它浏览器厂商也慢慢引入异步通讯对象,叫XMLHttpRequest对象,IE的高版本,也将这个异步对象取名叫XMLHttpRequest对象,但IE有向下兼容问题,也可以使用ActiveXObject对象。它无需第三方jar包,现代高版本浏览器中内置了这个异步通讯对象,只需通过JavaScript就可以创建
注意:所有浏览器中都内置了异步对象,在默认情况下,该异步对象并没有创建出来
⑤ AJAX开发步骤
◆ 创建AJAX异步对象,例如:createAJAX()
◆ 准备发送异步请求,例如:ajax.open(method,url)
◆ 如果是POST请求的话,一定要设置AJAX请求头,例如:ajax.setRequestHeader();如果是GET请求的话,无需设置设置AJAX请求头
◆ 真正发送请求体中的数据到服务器,例如:ajax.send()
◆ AJAX不断的监听服务端响应的状态变化,例如:ajax.onreadystatechange,后面写一个无名处理函数
◆ 在无名处理函数中,获取AJAX的数据后,按照DOM规则,用JS语言来操作Web页面
⑥ AJAX适合用在什么地方
AJAX【适合】不用来传递大量数据,而只用来【传递少量数据】,在用户的【体验】上,【更加人性化】。
AJAX是一个和服务器无关的技术,即服务器可使用:JavaEE,.NET,PHP等等这些技术,AJAX只管向服务器发送请求,同时只管接收服务器的HTML或XML或JSON载体响应服务端不能使用转发或重定向到web页面,因为这样会起浏览器全面刷新,即只能以流的方式响应给浏览器

2、AJAX应用
① 无需刷新整个Web页面显示服务器响应的当前时间

public class AjaxTimeServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String nowStr = sdf.format(new Date());//注意:在Web2.0时代,即异步方式下不能用转发或重定向。因为:转发或重定向会引起浏览器全部刷新,而不是局部刷新,所以得用以输出流的方式将服务器的结果输出到浏览器//以流的方式将结果响应到AJAX异步对象中response.setContentType("text/html;charset=UTF-8");PrintWriter pw = response.getWriter();pw.write(nowStr);pw.flush();pw.close();}
}
<body> 当前时间:<span id="time"></span><br/><input id="buttonID" type="button" value="获取当前时间"/><p/><script type="text/javascript">//创建AJAX异步对象function createAJAX(){var ajax = null;try{//如果IE5到IE12的话ajax = new ActiveXObject("microsoft.xmlhttp");}catch(e1){try{//如果是非IE的话ajax = new XMLHttpRequest();}catch(e2){alert("你的浏览器中不支持异步对象,请换浏览器");}}return ajax;}</script><script type="text/javascript">//定位button按钮,同时添加单击事件document.getElementById("buttonID").onclick = function(){//1、创建AJAX异步对象var ajax = createAJAX();//2、AJAX准备发送请求var method = "GET";var url = "${pageContext.request.contextPath}/AjaxTimeServlet?time=" + new Date().getTime();ajax.open(method,url);//3、真正发送请求体的数据到服务器,如果请求体中无数据的话,就用null表示ajax.send(null);      //-------------------------------------------------------------等待//4、AJAX异步对象不断监听服务器响应的状态【0-1-2-3-4】//一定要状态变化后,才可触发function(){}函数//如果状态永远是4-4-4-4-4,是不会触发function(){}函数的//以下这个函数是服务器来触发的,不是程序员触发的,这和onclick是不一样的ajax.onreadystatechange = function(){//如果状态码为4的话if(ajax.readyState == 4){//如果响应码为200的话if(ajax.status == 200){//5、从AJAX异步对象中获取服务器响应的HTML数据var nowStr = ajax.responseText;//6、将结果按照DOM规则,动态添加到web页面指定的标签中var spanElement = document.getElementById("time");spanElement.innerHTML = nowStr;}}}  }</script>静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本<br/>静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本<br/>静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本<br/>静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本<br/>静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本静态文本<br/></body>

② 基于HTML,以GET或POST方式,检查注册用户名是否在数据库中已存在

public class UserServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String username = request.getParameter("username");byte[] buf = username.getBytes("ISO8859-1");//Tomcat服务器是以ISO编码username = new String(buf,"UTF-8");System.out.println("username=" + username);String tip = "<font color='green'>可以注册</font>";if("杰克".equals(username)){tip = "<font color='red'>该用户已存在</font>";}response.setContentType("text/html;charset=UTF-8");PrintWriter pw = response.getWriter();pw.write(tip);pw.flush();pw.close();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String username = request.getParameter("username");System.out.println("username=" + username);String tip = "images/MsgSent.gif";if("杰克".equals(username)){tip = "images/MsgError.gif";}response.setContentType("text/html;charset=UTF-8");PrintWriter pw = response.getWriter();pw.write(tip);pw.flush();pw.close();}
}
<body><form>用户名[GET]:<input id="usernameID" type="text" name="username" maxlength="4"/>光标移出后,立即检查结果</form><hr/><span id="resID"></span><script type="text/javascript">//创建AJAX异步对象,即XMLHttpRequestfunction createAJAX(){var ajax = null;try{ajax = new ActiveXObject("microsoft.xmlhttp");}catch(e1){try{ajax = new XMLHttpRequest();}catch(e2){alert("你的浏览器不支持ajax,请更换浏览器");}}return ajax;}</script><script type="text/javascript">//定位文本框,同时提供焦点失去事件document.getElementById("usernameID").onblur = function(){//获取文本框中输入的值var username = this.value;//如果用户没有填内容if(username.length == 0){//提示 document.getElementById("resID").innerHTML = "用户名必填";}else{//对汉字进行UTF-8(U8)的编码username = encodeURI(username);var ajax = createAJAX();var method = "GET";var url = "${pageContext.request.contextPath}/UserServlet?time="+new Date().getTime()+"&username=" + username;ajax.open(method,url);ajax.send(null);//--------------------------------------------------------等待ajax.onreadystatechange = function(){if(ajax.readyState == 4){if(ajax.status == 200){var tip = ajax.responseText;document.getElementById("resID").innerHTML = tip;}}}}}</script></body>
<body>用户名[POST]:<input id="usernameID" type="text" maxlength="4"/><span id="resID"><!-- <img src="tip变量" width="12px" height="12px"/>--></span><hr/><script type="text/javascript">document.getElementById("usernameID").onblur = function(){var username = this.value;var ajax = createAJAX();var method = "POST";var url = "${pageContext.request.contextPath}/UserServlet?time="+new Date().getTime();ajax.open(method,url);//设置AJAX请求头为POST,他会将请求体中的汉字自动进行UTF-8的编码ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");var content = "username=" + username;ajax.send(content);//===========================================等待ajax.onreadystatechange = function(){if(ajax.readyState == 4){if(ajax.status == 200){var tip = ajax.responseText;// 创建img标签var imgElement = document.createElement("img");// 设置img标签的src/width/height的属性值imgElement.src = tip;imgElement.style.width = "12px";imgElement.style.height = "12px";// 定位span标签var spanElement = document.getElementById("resID");// 清空span标签中的内容spanElement.innerHTML = "";// 将img标签加入到span标签中spanElement.appendChild(imgElement);}}}}</script><!-- <form action="" method="" enctype="application/x-www-form-urlencoded"></form>--></body>

③ 基于XML,以POST方式,完成省份-城市二级下拉联动

public class ProvinceCityServlet extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String province = request.getParameter("province");//通知AJAX异步对象,服务器响应的数据为xml格式的response.setContentType("text/xml;charset=UTF-8");//获取字符输出流PrintWriter pw = response.getWriter();pw.write("<?xml version='1.0' encoding='UTF-8'?>");pw.write("<root>");if("江苏".equals(province)){pw.write("<city>南京</city>");pw.write("<city>镇江</city>");pw.write("<city>苏州</city>");}else if("上海".equals(province)){pw.write("<city>黄埔</city>");pw.write("<city>长宁</city>");pw.write("<city>杨浦</city>");}pw.write("</root>");pw.flush();pw.close();}
}
<body><select id="provinceID" style="width:111px"><option>选择省份</option><option>江苏</option><option>上海</option></select> &nbsp;&nbsp;&nbsp;<select id="cityID" style="width:111px"><option>选择城市</option></select>    <script type="text/javascript">//定位省份下拉框,同时添加内容改变事件document.getElementById("provinceID").onchange = function(){//清空城市下拉框中的内容,除第一项外var cityElement = document.getElementById("cityID");cityElement.options.length = 1;//获取选中option标签的索引号,从0开始         var index = this.selectedIndex;     //定位选中的option标签var optionElement = this[index];//获取选中的option标签中的内容,即省份var province = optionElement.innerHTML;//如果选中的内容不是"选择省份"if("选择省份" != province){var ajax = createAJAX();var method = "POST";var url = "${pageContext.request.contextPath}/ProvinceCityServlet?time="+new Date().getTime();ajax.open(method,url);//设置AJAX请求头ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");var content = "province=" + province;ajax.send(content);//---------------------------------等待ajax.onreadystatechange = function(){if(ajax.readyState == 4){if(ajax.status == 200){// 从AJAX异步对象中获取服务器响应的xml文档var xmlDocument = ajax.responseXML;// 按照DOM规则,解析XML文档   var cityElementArray = xmlDocument.getElementsByTagName("city");    var size = cityElementArray.length;for(var i=0;i<size;i++){// innerHTML只能用在html/jsp中,不能用在xml中var city = cityElementArray[i].firstChild.nodeValue;//<option></option>var optionElement = document.createElement("option"); //<option>南京</option>optionElement.innerHTML = city;//<select><option>南京</option></select>cityElement.appendChild(optionElement);}}}}}}</script></body>

④ 验证码检查

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>验证码检查</title><script type="text/javascript" src="js/ajax.js"></script></head><body><form><table border="0" align="center"><tr><th>验证码:</th><td><input size="2" type="text" name="checkcode" id="checkcodeID" maxlength="4"/></td><td><img src="01_image.jsp"/><td id="res"></td></tr></table></form><script type="text/javascript">//去掉二边的空格function trim(str){"  zhaojun  "str = str.replace(/^\s*/,"");//"zhaojun  "    str = str.replace(/\s*$/,"");//"zhaojun"return str;     }</script><script type="text/javascript">document.getElementById("checkcodeID").onkeyup = function(){var checkcode = this.value;checkcode = trim(checkcode);//2525if(checkcode.length == 4){//NO1)var ajax = createAJAX();//NO2)var method = "POST";var url = "${pageContext.request.contextPath}/checkRequest?time="+new Date().getTime();ajax.open(method,url);//NO3)ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");//NO4)var content = "checkcode=" + checkcode;ajax.send(content);//--------------------------------------------------------等待//NO5)ajax.onreadystatechange = function(){if(ajax.readyState == 4){if(ajax.status == 200){//NO6)var tip = ajax.responseText;//NO7)var img = document.createElement("img");img.src = tip;img.style.width = "14px";img.style.height = "14px";var td = document.getElementById("res");td.innerHTML = "";td.appendChild(img);}}}}else{//清空图片var td = document.getElementById("res");td.innerHTML = "";}}</script>   </body>
</html>
public class CheckcodeAction extends ActionSupport{//客户端验证码private String checkcode;//2525//注入客户端验证码public void setCheckcode(String checkcode) {this.checkcode = checkcode;}/*** 验证*/    public String check() throws Exception {//图片路径String tip = "images/MsgError.gif";//从服务器获取session中的验证码String checkcodeServer = (String) ActionContext.getContext().getSession().get("CHECKNUM");//将客户端的验证码与服务端的验证码进行比较if(checkcode.equals(checkcodeServer)){tip = "images/MsgSent.gif";}//以IO流的方式将tip变量的值输出到AJAX异步对象中HttpServletResponse response = ServletActionContext.getResponse();response.setContentType("text/html;charset=UTF-8");PrintWriter pw = response.getWriter();pw.write(tip);pw.flush();pw.close();//以下方式不是最好的,但可以完成AJAX异步交互return null;}
}

3、XMLHttpRequest对象常用事件、方法和属性
① 事件
ajax.onreadystatechange:表示AJAX异步对象不断监听服务器状态的一个变化过程(0-1-2-3-4),其中4是核心,只有状态变化了该事件才会触发;它是由服务器程序触发,不是程序员触发;后面通常跟着一个无名函数。
② 方法
ajax.open(method,url,可选的boolean值):AJAX异步对象准备发送异步请求
◇ method:以什么方式发送(提交方式),常用的用GET或POST,大小写不敏感
◇ url:发送到什么地方去,常用到Servlet、Struts2、SpringMVC、PHP、.NET;只需要服务器以流的方式返回数据即可,即AJAX与服务器技术无关
◇ 可选的boolean值:默认值为true,表示AJAX对象以【异步】的方式提交到服务端,如果设置为false,表示AJAX对象以【同步】的方式提交到服务端
ajax.setRequestHeader("content-type","application/x-www-form-urlencoded"):表示将请求体中的内容,按照UTF-8的方式进行编码,只针对POST请求有效
ajax.send(content):AJAX异步对象真正发送异步请求
content:表示HTTP【请求体】中的内容
◇ 如果是GET方式:content = null,如果强行传值到服务器,服务端收不到,返回NULL
◇ 如果是POST方式:content != null,例如:username=jack&password=123&role=admin
③ 属性
ajax.readyState
ajax.readyState==0:表示AJAX异步对象已创建好,但还没有调用open()方法
ajax.readyState==1:表示AJAX异步对象已调用open()方法,但还没有调用send()方法
ajax.readyState==2:表示AJAX异步对象已调用send()方法,但请求还没有到达服务器端
ajax.readyState==3:表示服务端已接收到AJAX异步对象的请求,正在处理响应中。。。
ajax.readyState==4:表示AJAX异步对象已经完完全全接收到了服务器的响应信 息,但接收到的数据不一定都正确
上述5种状态不是所有浏览器都相同,但状态4每种浏览器都相同
ajax.status==200:表示AJAX异步对象接收到响应码,如果是200的话,表示一切正常
ajax.responseText:表示从AJAX异步对象中获取HTML载体中的数据
ajax.responseXML:表示从AJAX异步对象中获取XML载体中的数据

4、数据载体
① HTML
◆ 优点:服务端响应的是普通html字符串,无需JS解析,配合innerHTML属性效率高
◆ 缺点:如果需要更新WEB页面中的很多处地方,HTML不太方便,同时innerHTML属性不是DOM的标准,不能操作XML
注意:innerHTML在xml中不能使用,用firstChild.nodeValue替代
◆ 适合:小量数据载体,且只更新在web页面中的一个地方
② XML
◆ 优点:是种通用的普通字符串格式,任何技术都能解析,标签名可以任意,使用DOM标准规则能够解析XML的任何部分
◆ 缺点:XML文件格式相当严格,出错后,responseXML属性返回NULL,如果XML文件过长,导致解析效率低下
◆ 适合:大量具有层次数据载体
③ JSON + struts2框架
兼备HTML和XML的特点

Java进阶学习第二十六天(JavaScript增强、AJAX基础)相关推荐

  1. Java进阶学习第十六天(Struts框架:配置、数据处理、自动封装、日期类型转换、文件上传)

    一.Struts2配置 1.Struts2的Action开发的几种方式 ① 方式1:继承ActionSupport(一般使用方法) public class UserAction extends Ac ...

  2. 游戏策划学习第二十六天

    游戏策划学习第二十六天 5/26 看书笔记: 使命感的重要性: 维基百科的维护工作,一则不当的内容在维基百科会在平均1.7秒内被志愿者人工审核去除.表层上讲,这是因为他们有责任心,但是从他们的动机角度 ...

  3. Java前端学习(一)JavaScript脚本语言基础

    JavaScript脚本语言基础 前言 一.JavaScript简介 1.应用 2.特点 3.示例 4.补充 二.语法基础 1.数据类型 2.表达式和运算符 3.流程控制语句 4.函数 三.对话框 1 ...

  4. Java学习第二十六天

    目录 成员方法 一.方法快速入门 二.方法的调用机制原理(重要) 三.方法的优点 四.成员方法的定义 五.注意事项和使用细节 第一部分:访问修饰符 第二部分:返回数据类型的细节 三.形参列表 四.方法 ...

  5. Java进阶学习第十九天——dbutils与案例

    文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.05.15 lutianfei none 元数据 元数据(metaData) 指数据库中 库.表.列的定义信息 DataB ...

  6. php语法基础考试,我的php学习第二十六天——PHP基础语法

    PHP基础语法 在PHP程序中,变量和常量是经常用到的 PHP是操作数据,数据在静态的时候是放到文件或者数据库中,当程序操作数据的时候,数据是以变量或者常量的形式存在于内存. 在真实的项目环境中,只有 ...

  7. Java学习 第十六天(泛型)

    Java学习 第十六天---泛型与集合 第一章 泛型 1.1 泛型概述 1.2 泛型类 1.3 泛型类练习---抽奖问题 1.4 泛型类的子类 1.5 泛型接口 1.6 重写泛型父类或泛型接口中方法的 ...

  8. JavaScript高级程序设计第四版学习--第二十四章

    title: JavaScript高级程序设计第四版学习–第二十四章 date: 2021-5-31 10:46:01 author: Xilong88 tags: JavaScript 本章内容: ...

  9. 风炫安全web安全学习第二十八节课 CSRF攻击原理

    风炫安全web安全学习第二十八节课 CSRF攻击原理 CSRF 简介 跨站请求伪造 (Cross-Site Request Forgery, CSRF),也被称为 One Click Attack 或 ...

最新文章

  1. sharepoint自带JS函数获取URL参数
  2. python requests 报错 Connection aborted ConnectionResetError RemoteDisconnected 解决方法
  3. Help Jimmy(递归)
  4. 我也学习JAVA多线程-join
  5. VTK:饼形图用法实战
  6. 数组初始化使用(写)new与不使用(不写)new
  7. 单点登录 之 OAuth
  8. 【clickhouse】ClickHouse中的低基数(LowCardinality)类型
  9. python之路 jQuery学习笔记
  10. python center用法_【语言学习】python——字符串
  11. Java | jdk11下载、安装及环境变量的配置
  12. stm32 Ctext-M3内核最简单的多任务RTOS
  13. 免费谷歌云服务器,极简到手指南
  14. win7默认网关不可用_win7 默认网关不可用
  15. 多彩m618plus评测_将来的你 ,一定会感谢现在换鼠标的自己--多彩M618Plus垂直鼠标...
  16. 开始学习Java啦!
  17. basic4android计算器,vb三角函数计算器代码
  18. 云电脑用什么连接键盘才能玩游戏
  19. Java---反射机制
  20. 三、51单片机 使用Proteus仿真实现8位数码管滚动显示(仿真及代码)

热门文章

  1. 想学习Nunit的使用
  2. C++ 常用容器成员函数用法总结
  3. audio 音频 基于plyr.js
  4. Rethinking Local Perception in Lightweight Vision Transformer
  5. 【数据结构与算法】03 链表(基础知识+面试高频leetcode题目)
  6. WebStorm配置启动Vue项目
  7. 站点能源建设和改造的挑战
  8. 玩转KubeEdge
  9. 有了这款自动标注/切图神器,攻城狮终于可以省心了
  10. CANOpen系列教程02_理解CAN总线协议